ELBのアクセスログをクロスアカウントで別アカウントのバケットに保存する

CLB,ALBなどでアカウントを跨いで(例えばログ集約アカウント)バケットに保存したい場合の設定

書き込み先のバケットポリシー

"arn:aws:iam::582318560864:root"

は共通値。aws側で指定しているクロスアカウントで書き込むためのアカウント。

{
    "Version": "2012-10-17",
    "Id": "S3-ELB-LogPolicy",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::582318560864:root" 
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::書き込み先バケット/AWSLogs/書き込み元アカウントのid入れとくとわかりやすい/*"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::書き込み先バケット/AWSLogs/書き込み元アカウントのid入れとくとわかりやすい/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "delivery.logs.amazonaws.com"
            },
            "Action": "s3:GetBucketAcl",
            "Resource": "arn:aws:s3:::書き込み先バケット"
        }
    ]
}

バケットポリシー が設定できたらELB側のバケット出力先を変更する。 名前を間違えなければマネジメントコンソールからもできる。