AWS:クロスアカウントでのCodeDeployステップまとめ
皆さん、こんにちは。ちゃみみです。
本日は、クロスアカウント(マルチアカウントパターンですね)でのCICDの構成というところでAWSのナレッジをみてもイマイチわかりずらいというか意味不明というか要領を得なかったので簡単なStepというか方法論を備忘として残しておこうと思います。
他のPJでもCICDを意識し始めてこのあたりの問い合わせが増えてきたこともあったのですが、まぁナレッジをみても、、、というところだったのでまとめておこうと思いました。
【実現したいイメージ】
S3をベース(リビジョンファイルの置き場として)に各AWSアカウント上のCodeDeployとやり取りをするEC2(DeployAgent)からアクセスされる構成の場合に何をどのように設定すべきか?
この場合に何をどうするのか?という点でナレッジだとインスタンスプロファイルがどうとか、S3をどこに置くかが重要だとか云々の話が先行しすぎていて全然シンプルじゃないのでここにまとめます。
【前提】クロスアカウントでこの拠点となるS3とやり取りをするのは、まずEC2(DeployAgent)になります。そのため、CodeDeployがクロスアカウント(ここではアカウントB)のS3にアクセスをしにいくとかではないので注意
※加えてここで私も最近知りましたが、CodeDeployはCodeCommitに対応はしておらず、S3とGitHubに対応しているようでCodeCommitを使う場合にはセットでCodePipelineを使う必要があるという点。これは知らなかった。。。
AccountA側での作業
・CodeDeployの諸設定(アプリケーション設定、デプロイグループの設定などなど)
・EC2の諸設定(DeployAgentの導入やそもそものEC2の起動設定など)
・IAMRoleの作成(CodeDeployとEC2に付与想定)
AccountB側での作業
・S3の作成
・バケットポリシーの投入(ここがよくわからなかったが、このバケットポリシーにはEC2に付与しているIAM RoleのRole情報に記載されているインスタンスプロファイルをAllow設定してあげる必要があります。)
※2023年01月時点で試したところインスタンスプロファイルを設定するのはNGで作成したIAM Roleにインスタンスプロファイルも追加で作成しておくだけにとどめておくほうが良いです。
AWSナレッジには今も堂々とインスタンスプロファイルを書き留めておいて~~とかポリシーに記載で~とか書いてありますが、バケットポリシーにインスタンスプロファイルを書くことはできずに再度問い合わせを実施したところ、IAM RoleのARN情報を明記せよというところだったので修正まで
バケットポリシーの具体例としては以下のイメージ
案外紐としていくと、さほど難しくはないと思います(アクセスするのはどこで何を許可すればよいのか?がわかれば)が、とにかくナレッジはわかりにくいもう一度見返しても難解なため、ここに備忘として残しておこうと思いました。
クロスアカウントでのCodeDeployの利用のURL:
では、また次の記事でお会いしましょう。
※2022年12月18日のブログ記事をnote用に再投稿したものです。
以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。