AWSAWS CDK

AWS CDK(v2)でS3 Bucket作成時に、`API: s3:PutBucketPolicy Access Denied`が出たらみる記事

S3バケットのデフォルト設定が変更されたため、新しいバケットを作成する際にエラーが発生しました。エラーの原因は、バケットポリシーの設定に関するエラーでした。AWSは、新しいバケットに対してデフォルトでS3パブリックアクセスブロックを有効にし、ACLを無効にする設定を導入しました。CDKを使用してバケットを作成する場合は、blockPublicAccessパラメータを追加して設定する必要があります。これにより、問題が解決しました。

広告ここから
広告ここまで

S3バケットのデフォルト設定が変わった関係で、パラメータを1つ追加する必要がありました。

遭遇したエラー

Webサイトを配置するためのバケットを作ろうとしていました。

    const websiteBucket = new Bucket(this, 'SonikStaticAssets', {
      websiteIndexDocument: 'index.html',
      publicReadAccess: true,
    });

しかしこの定義は、CloudFormationでエラーが発生します。

CdkSonikAppStack: deploying... [1/1]
CdkSonikAppStack: creating CloudFormation changeset...
10:08:29 PM | CREATE_FAILED        | AWS::S3::BucketPolicy       | SonikStaticAssetsPolicy8AA45F84
API: s3:PutBucketPolicy Access Denied


 ❌  CdkSonikAppStack failed: Error: The stack named CdkSonikAppStack failed to deploy: UPDATE_ROLLBACK_COMPLETE: API: s3:PutBucketPolicy Access Denied

どんな変更があったか

https://aws.amazon.com/jp/about-aws/whats-new/2022/12/amazon-s3-automatically-enable-block-public-access-disable-access-control-lists-buckets-april-2023/

すべての新しい S3 バケットに対して自動的に S3 パブリックアクセスブロックが有効になり、S3 アクセスコントロールリスト (ACL) は無効にされます。これらのデフォルト設定は導入されると、AWS CLI、API、SDK、AWS CloudFormation などの作成方法に関係なく、すべての新しいバケットに適用されるようになります。

とのころで、CDKはCloudFormationなのできっちり対象に入っています。

blockPublicAccessを追加する

blockPublicAccess: BlockPublicAccess.BLOCK_ACLSを追加してやりましょう。

    const websiteBucket = new Bucket(this, 'SonikStaticAssets', {
      websiteIndexDocument: 'index.html',
      publicReadAccess: true,
      blockPublicAccess: BlockPublicAccess.BLOCK_ACLS,
    });

成功しました。

CdkSonikAppStack: creating CloudFormation changeset...

 ✅  CdkSonikAppStack

✨  Deployment time: 118.93s

参考にした記事

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts