Amazon CloudFront のアクセスログを Amazon S3 に保管する設定で失敗した件 [AWS CloudFormation 編]

こんにちは、広野です。

私は Amazon CloudFront のアクセスログを Amazon S3 に保管するように、AWS CloudFormation でこれまで何度もプロビジョニングしてきたのですが、この度、これまで使っていたテンプレートがエラーになってしまう事態がありました。

原因は Amazon S3 の設定にありました。

これまで使っていたテンプレート (抜粋)

  • アクセスログ保管用 Amazon S3 バケットのテンプレート抜粋
  S3BucketLogs:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: examplebucket-logs
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

元々、パブリックアクセスブロックの部分だけ厳格に指定して、それ以外はデフォルトでした。※要件によります

これが、以下の AWS の仕様変更 (2023年4月) に引っ掛かってしまったようで。

Amazon S3 のパブリックアクセスブロックについては以前から意識してはいたのですが、ACL は基本使わないのでノーマークでした。私のテンプレートで Amazon S3 バケットをプロビジョニングする際、ACL がデフォルトで有効だったものが仕様変更により無効になってしまいました。

Amazon CloudFront のアクセスログ保管先 S3 バケットは ACL が有効 でないといけないらしいので(全く気にしてませんでした)、私のテンプレートが機能しなくなってしまいました。

修正したテンプレート (抜粋)

ということで、テンプレート内で明示的に ACL を有効にする設定にしました。

  S3BucketLogs:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: examplebucket-logs
      OwnershipControls:
        Rules:
          - ObjectOwnership: BucketOwnerPreferred
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

OwnershipControls: の部分を追加しています。これで ACL が有効になり、テンプレートもパスすることができました。

記述については以下の公式ドキュメントにご丁寧に載っていました。

まとめ

いかがでしたでしょうか?

これまで動いていた AWS CloudFormation テンプレートが突然エラーになってしまうので驚きました。ですが今後も AWS 側の仕様変更は発生しますので、ちゃんと追従していかないとな、と反省した出来事でした。また、デフォルト設定に依存するのも良くないと思いました。

本記事が皆様のお役に立てれば幸いです。

著者について
広野 祐司

AWS サーバーレスアーキテクチャを駆使して社内クラウド人材育成アプリとコンテンツづくりに勤しんでいます。React で SPA を書き始めたら快適すぎて、他の言語には戻れなくなりました。サーバーレス & React 仲間を増やしたいです。AWSは好きですが、それよりもフロントエンド開発の方が好きでして、バックエンド構築を簡単にしてくれたAWSには感謝の気持ちの方が強いです。
取得資格:AWS 認定は13資格、ITサービスマネージャ、ITIL v3 Expert 等
2020 - 2024 Japan AWS Top Engineer 受賞
2022 - 2024 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS Amplify / AWS AppSync / Amazon Cognito / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSクラウドクラウドセキュリティソリューション
シェアする
タイトルとURLをコピーしました