いくつかのAWS CloudfrontディストリビューションがさまざまなAWSアカウントに分散しています。
これらのディストリビューションからのアクセスログを、単一のAWSアカウントの単一のS3バケットに保存したいと考えています。
これは可能ですが、文書化されていません(見つけることができます)。
ログバケットで必要なACLの更新、または必要なバケットポリシー(存在する場合)は明確ではありません。
バケットのACLを更新して、Cloudfrontがログの書き込みに使用する他のAWSアカウントのアカウントの正規IDにFULL_CONTROLを付与する必要があるようです。
他の誰かがこれを設定して助けてくれれば、私は大いに義務付けられるでしょう。
(将来の参考のために更新)
CloudFrontディストリビューションがアカウント123456789012にあり、ロギングが別のアカウントのバケットyour-logging-bucket
に設定されているとします。
CloudFrontアカウントに123456789012にs3:GetBucketAcl
でs3: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"
}
]
}
そのS3バケットポリシーを使用して*アカウント1223456789012で新しいCloudFrontディストリビューションを作成し、作成ウィザードでyour-logging-bucket
。上記のバケットポリシーのおかげで、適切なACLが作成されます。
S3-> your-logging-bucket->権限-> ACLを表示して、公式のCloudFrontアカウントc4c1ede66af...8632f77d2d0
にアクセス権が付与されていることを確認できます。
123 ...アカウントで他のすべてのCFディストリビューションを構成して、your-logging-bucket
にログインします。これは、既存のすべてのCFディストリビューションでも機能するはずです。
それが役に立てば幸い:)