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 を使用して社内向け e-Learning アプリ開発とコンテンツ作成に勤しんでいます。React でアプリを書き始めたら、快適すぎて他の言語には戻れなくなりました。近年は社内外への AWS 技術支援にも従事しています。AWS サービスには AWS が考える IT 設計思想が詰め込まれているので、そこを理解できると他のことにも活かせるので、いつも AWS を通して勉強させて頂いてまます。
取得資格:AWS 認定は15資格、IT サービスマネージャ、ITIL v3 Expert 等
2020 - 2025 Japan AWS Top Engineer 受賞
2022 - 2025 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS AppSync Events / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする

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

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

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