EC2 Image Builder のイメージビルドパイプラインで発生するアクセス拒否エラーを解決したいです。
簡単な説明
イメージビルドパイプラインが 403 Access Denied エラーで失敗する理由には、次のようなものがあります。
- インスタンスプロファイルに、API またはコンポーネントリソースにアクセスするために必要な AWS Identity and Access Management (IAM) アクセス許可がない。
- インスタンスプロファイルロールに、Amazon Simple Storage Service (Amazon S3) にログインするために必要な PutObject アクセス許可がない。
- Amazon S3 ゲートウェイエンドポイントのカスタムポリシーで、プライベートサブネットを構築する際の GetObject アクションを許可していない。
解決策
必要なアクセス許可をインスタンスプロファイルに追加する
インスタンスプロファイルに関連付けられた IAM ロールに、次の IAM ポリシーを追加する必要があります。
カスタムポリシーを使用する場合は、必要なアクセス許可をカスタムポリシーに追加します。ポリシーをアタッチするには、AWS Identity and Access Management (IAM) の「ポリシーのアタッチ」セクションを参照してください。
Amazon S3 に必要な PutObject アクセス許可を追加する
設定で指定するインスタンスプロファイルには、ターゲット Amazon S3 バケットに対する s3:PutObject アクセス許可が必要です。ターゲット Amazon S3 バケットに次のアクセス許可ポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::example-bucket-name/*"
}
]
}
注: 上記のコマンドで、example-bucket-name はお使いの Amazon S3 バケットの名前に置き換えてください。
必要な GetObject アクセス許可を Amazon S3 ゲートウェイエンドポイントのカスタムポリシーに追加する
Amazon S3 のゲートウェイエンドポイントポリシーで Image Builder によるコードのダウンロードやログへのアクセスが許可されていない場合は、GetObject をカスタムポリシーに追加します。
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::ec2imagebuilder*"
}