我通过 Terraform 设置 AWS 基础设施,并意识到我必须允许 ELB 帐户 ID 访问写入 S3 才能写入日志。为什么ELB在不同地区有自己的账户ID,它代表什么?检查下面的图片(取自此处 - https://docs.aws.amazon.com/elasticloadbalancing/latest/application/enable-access-logging.html)
对于 2022 年之前可用的区域,您需要使用 ELB 帐户 ID 作为服务名称,即您上面提到的 ID 列表。
服务主体是服务的标识符。
首先要注意的是,它是用作
Service Pricipal Name
的标识符。看起来 AWS 已经对 ELB 的服务主体进行了硬编码,并且它不是不同的 AWS 帐户。
截至 2022 年 8 月或之后可用的区域,服务主体名称如下所示
"Principal": {
"Service": "logdelivery.elasticloadbalancing.amazonaws.com"
},
对于 2022 年 8 月之前可用的区域
"Principal": {
"AWS": "arn:aws:iam::elb-account-id:root"
},
要了解什么是服务主体,请参阅 - https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services