AWSのアカウントは分けると安心

自分がAWSを触ったのは、大学院時代に友達と簡単なWebサービスをデプロイするときに使ったのが初めてでした。1通り基本的なことを学ぶために、udemyの教材を使って基本的なリソースをマネジメントコンソールから作って削除していました。 そういった個人的な開発をする中ではなかなかAWSアカウントを複数作ることはなく、1つのAWSアカウントの中にサーバーやデータベースを作ることが多いです。 しかし、現職に入社してIDaaS経由でAWSの権限をもらったときに大量のアカウントが表示されていてびっくりしました。今ではとても理に適った管理方法だなと思うので、その感想をつらつら書きます。 参考 AWSのマルチアカウント戦略ってなに?なぜ必要?【社内勉強会スライド】 https://dev.classmethod.jp/articles/why-aws-multi-accounts/ メリット 権限が分離されている安心感がすごい 現職ではサービスの環境をDevelopment、Staging、Productionの3種類にわけていて、アプリケーションをEKSで動かしています。 1つのAWSアカウント内でこれをやろうとすると、環境ごとのVPC、IAM Role、EKSクラスタを作ったりする必要があり、ちゃんと分離できているのかが不安になります。 しかし、環境ごとにAWSアカウントを作成するとこんな感じになります。 お互いが絶対に干渉しないので、内部の設定ミスによる事故を防いだり、外部からの攻撃の影響範囲を制限することにつながります。 工夫が必要な点 初期に必要なAWSリソースをCloudFormationで作成 Terraformを使って各AWSアカウントのリソースを管理したいところですが、初期の状態ではTerraformを実行するためのIAM Roleもないわけです。それをアカウントごとに作成するのは大変なので、CloudFormationを使って最低限必要なリソースを全てのアカウントに対して作成します。 AWS Organizationを使ってAWSアカウントをOrganization Unit単位でグルーピングしておけば、より細かいリソース作成が可能になります。 Transit Gatewayを使ってAWSアカウントをまたがった通信を行う 各サービスにおいてEKSクラスタを共有させたいが、DBやStorageは別アカウントで持たせたいということもあると思います。実現する方法の1つとして、Transit Gatewayを用いる方法が挙げられます。 この記事をとても参考にさせてもらいました🙏 Transit Gatewayを利用してVPC間で通信してみた https://dev.classmethod.jp/articles/transit-gateway-vpc/ まとめ 現職でプロダクトの開発に携わりながら、こういったインフラを扱うSREのタスクもやらせてもらっていて、学んだことを残していこうと思います💪

July 31, 2022 · 1 min

AWS認定 ソリューションアーキテクト[アソシエイト]

会社での社内ツールを開発する際にAWSを参考にすることが多いので, AWS認定 ソリューションアーキテクト[アソシエイト] という本を使って一通り勉強してみた。 内容 VPC (Virtual Private Cloud) 利用者ごとのプライベートなネットワークを作成できる。セキュリティグループやネットワークACL(Access Control List)を使って通信制御を行う。 CloundFront HTMLファイルやCSS, 画像, 動画といった静的コンテンツをキャッシュし, オリジンサーバーの代わりに配信するCDN(Contents Delivery Network)サービス。ELBやEC2だけでなくS3をオリジンサーバにすることもできる。 Route53 ドメイン管理機能と権威DNS機能を持つサービス。以下のような自由なトラフィックルーティングが可能 シンプルルーティング フェイルオーバールーティング 位置情報ルーティング 地理的近接性ルーティング レイテンシールーティング 複数値回答ルーティング 加重ルーティング EC2 (Elastic Compute Cloud) 仮想サーバーを必要な数だけすぐに立てることができるIaaS型サービス。AMI(Amazon Machine Image)を選んでインスタンスを生成する。スポットインスタンスというAWSが余らせているEC2リソースを入札形式で安く利用する方式なんかもある。 ELB (Elastic Load Balancing) ロードバランサーを提供するサービス。Auto Scalingという, システムの利用状況に応じて自動的にELBに紐づくインスタンスの台数を増減させる機能がある。 ECS (Elastic Container Service) Dockerコンテナの実行環境を提供するサービス。 AWS Fargate ECSのCluster用のEC2インスタンスを使わずにコンテナを動かすことのできるサービス。 EKS (Elastic Container Service for Kubernetes) Kubernetesを利用する際のmasterを提供するサービス。 ECR (Elastic Container Registry) コンテナイメージを管理するレジストリを提供するサービス。 Lambda サーバーを用意しなくてもプログラムを実行できる環境を提供するサービス。 CloudWatch 定期的にAWSリソースの状態を取得し, 問題がある場合はそれを運用者に通知するサービス。CPU使用率などの基本的なログをモニタリングするだけでなく, CloudWatch Logsを使ってアプリケーションログをモニタリングしたり, CloudWatch Eventsを使って独自のトリガーと何かしらの後続のアクションとの組み合わせを定義したりできる。 ...

November 15, 2020 · 1 min