この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
2つの NLB を所有しており、どちらも同様の S3 バケットにそれぞれのプレフィックスを指定して、 NLB アクセスログを有効にしたいです。
NLB アクセスログの設定で、1つ目の NLB のアクセスログの有効化は成功しましたが、2つ目の NLB のアクセスログを設定する際、 プレフィックスを含む S3 バケットを指定して「この場所を作成する」をクリックしましたが、「その名前のバケットを既に所有しています。」のエラーが発生しました。 対処方法を教えてください。
対象 NLB
- NLB-DEV
- NLB-STG
エラーが発生した時の画面
どう対応すればいいの?
2つ目の NLB アクセスログを有効化する際、「この場所を作成する」をクリックすると、S3バケットは 1つ目の NLB アクセスログを有効化する際に、 既に作成されているので、違うプレフィックスを指定してもエラーが発生します。
エラーを対処するためには、S3 のバケットポリシーを編集する必要がございます。
1つ目の NLB アクセスログを有効化する際に作成された S3バケットのバケットポリシーのリソースは以下 [1] となっておりますので、
既に存在しているプレフィックスのみ指定されております。
そのため、以下 [2] に変更する必要がございます。
[1] 変更前
"Resource": "arn:aws:s3:::nlb-log-blog/dev-test/AWSLogs/[アカウントID]/*"
[2] 変更後
"Resource": [
"arn:aws:s3:::nlb-log-blog/dev-test/AWSLogs/[アカウントID]/*",
"arn:aws:s3:::nlb-log-blog/stg-test/AWSLogs/[アカウントID]/*"
]
[2] に変更後、2つ目のNLBアクセスログ有効化の設定で「この場所の作成」をクリックせずに保存すると、 S3 バケットに2つ目のプレフィックスフォルダーが作成されます。
やってみた
変更前のバケットポリシー
{
"Version": "2012-10-17",
"Id": "AWSConsole-AccessLogs-Policy-1631232504909",
"Statement": [
{
"Sid": "AWSConsoleStmt-1631232504909",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[アカウントID]:root"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::nlb-log-blog/dev-test/AWSLogs/[アカウントID]/*"
},
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::nlb-log-blog/dev-test/AWSLogs/[アカウントID]/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::nlb-log-blog"
}
]
}
変更後のバケットポリシー
{
"Version": "2012-10-17",
"Id": "AWSConsole-AccessLogs-Policy-1631232504909",
"Statement": [
{
"Sid": "AWSConsoleStmt-1631232504909",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[アカウントID]:root"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::nlb-log-blog/dev-test/AWSLogs/[アカウントID]/*",
"arn:aws:s3:::nlb-log-blog/stg-test/AWSLogs/[アカウントID]/*"
]
},
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::nlb-log-blog/dev-test/AWSLogs/[アカウントID]/*",
"arn:aws:s3:::nlb-log-blog/stg-test/AWSLogs/[アカウントID]/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::nlb-log-blog"
}
]
}
2つ目の NLBアクセスログ有効化の設定で「この場所の作成」をクリックせずに保存した後、S3バケットに2つ目のプレフィックスフォルダーが作成されます。