web-dev-qa-db-ja.com

別のAWSアカウントのS3バケットにログを記録するようにAWS Cloudfrontを構成する

enter image description here いくつかのAWS CloudfrontディストリビューションがさまざまなAWSアカウントに分散しています。

これらのディストリビューションからのアクセスログを、単一のAWSアカウントの単一のS3バケットに保存したいと考えています。

これは可能ですが、文書化されていません(見つけることができます)。

ログバケットで必要なACLの更新、または必要なバケットポリシー(存在する場合)は明確ではありません。

バケットのACLを更新して、Cloudfrontがログの書き込みに使用する他のAWSアカウントのアカウントの正規IDにFULL_CONTROLを付与する必要があるようです。

他の誰かがこれを設定して助けてくれれば、私は大いに義務付けられるでしょう。

4
Garreth McDaid

(将来の参考のために更新)

CloudFrontディストリビューションがアカウント123456789012にあり、ロギングが別のアカウントのバケットyour-logging-bucketに設定されているとします。

  1. CloudFrontアカウントに123456789012にs3:GetBucketAcls3:PutBucketAclおよびyour-logging-bucketを実行する権限を付与するS3バケットポリシーを作成します。

    これは必須ですバケットポリシー

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::123456789012:root"     << the CloudFront account
          },
          "Action": [
            "s3:GetBucketAcl",
            "s3:PutBucketAcl"
          ],
          "Resource": "arn:aws:s3:::your-logging-bucket"
        }
      ]
    }
    
  2. そのS3バケットポリシーを使用して*アカウント1223456789012で新しいCloudFrontディストリビューションを作成し、作成ウィザードでyour-logging-bucket。上記のバケットポリシーのおかげで、適切なACLが作成されます。

    S3-> your-logging-bucket->権限-> ACLを表示して、公式のCloudFrontアカウントc4c1ede66af...8632f77d2d0にアクセス権が付与されていることを確認できます。

    enter image description here

  3. 123 ...アカウントで他のすべてのCFディストリビューションを構成して、your-logging-bucketにログインします。これは、既存のすべてのCFディストリビューションでも機能するはずです。

それが役に立てば幸い:)

7
MLu