【问题标题】:S3 bucketname in policy, terraform策略中的 S3 存储桶名称,terraform
【发布时间】:2021-04-04 05:58:46
【问题描述】:

我正在创建一个存储桶来存储 lb 日志。我不想硬编码名称,因为这会导致我的代码由于 s3 的唯一名称要求而中断。我使用的是 terraform 提供的 bucket_prefix。

在存储桶策略中,我需要 s3 存储桶的名称,我的代码如下:

resource "aws_s3_bucket" "aws-s3-lb-logs" {
  acl = "private"
  force_destroy = true
  bucket_prefix = "some-prefix"


  policy = <<POLICY
{
  "Id": "Policy",
  "Statement": [
    {
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::${aws_s3_bucket.aws-s3-lb-logs.bucket}/AWSLogs/*",
      "Principal": {
        "AWS": [
          "${data.aws_elb_service_account.main.arn}"
        ]
      }
    }
  ]
}
POLICY
}

当我尝试在策略中调用 ${aws_s3_bucket.aws-s3-lb-logs.bucket} 时,它给出了错误:

Error: Self-referential block

  on main.tf line 350, in resource "aws_s3_bucket" "aws-s3-lb-logs":
 350:       "Resource": "arn:aws:s3:::${aws_s3_bucket.aws-s3-lb-logs.bucket}/AWSLogs/*",

Configuration for aws_s3_bucket.aws-s3-lb-logs may not refer to itself.

我知道我不能调用同一个资源块,但在这种情况下,我如何获取 s3 存储桶的名称以放入策略块中?

【问题讨论】:

    标签: amazon-s3 terraform terraform-provider-aws terraform0.12+


    【解决方案1】:

    解决方案是使用单独的资源 (aws_s3_bucket_policy) 来设置存储桶策略。

    resource "aws_s3_bucket" "aws-s3-lb-logs" {
      acl = "private"
      force_destroy = true
      bucket_prefix = "some-prefix"
    }
    
    resource "aws_s3_bucket_policy" "aws-s3-lb-logs" {
      bucket = aws_s3_bucket.aws-s3-lb-logs.id
    
      policy = <<POLICY
    {
      "Id": "Policy",
      "Statement": [
        {
          "Action": [
            "s3:PutObject"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::${aws_s3_bucket.aws-s3-lb-logs.bucket}/AWSLogs/*",
          "Principal": {
            "AWS": [
              "${data.aws_elb_service_account.main.arn}"
            ]
          }
        }
      ]
    }
    POLICY
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2021-08-14
      • 2022-11-03
      • 2019-04-24
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多