【问题标题】:Create S3 bucket and lambda policies with terraform使用 terraform 创建 S3 存储桶和 lambda 策略
【发布时间】:2022-11-03 21:20:37
【问题描述】:

我在从 lambda 访问我的 AWS 存储桶时遇到了一些问题。我使用 terraform(此处为 terraform newbie)创建和配置我的存储桶/lambdas。

这是创建 S3 存储桶的模块:

module "create-my-bucket" {
  source = "terraform-aws-modules/s3-bucket/aws"

  bucket = "my-bucket"
  acl    = "private"

  versioning = {
    enabled = true
  }

  block_public_acls       = true
  block_public_policy     = true
  restrict_public_buckets = true
  ignore_public_acls      = true
  attach_deny_insecure_transport_policy = true

  server_side_encryption_configuration = {
    rule = {
      apply_server_side_encryption_by_default = {
        sse_algorithm = "AES256"
      }
    }
  }
} 

这是为 lambda 配置策略的模块:

module "my_lambda_policy" {
  source = "terraform-aws-modules/iam/aws//modules/iam-policy"

  name        = "validate_lambda_policy"
  path        = "/"
  description = "Validate Policy"

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [{
            "Effect": "Allow",
            "Action": [
                "s3:Put*",
                "s3:Get*",
                "s3:List*",
                "ses:SendEmail"
            ],
            "Resource": [
                    "arn:aws:s3:::my-bucket/",
                    "arn:aws:s3:::my-bucket/*",
                    "arn:aws:ses:..."
      ]
    }]
}
EOF
}

Terraform 正确地创建了我的存储桶并配置了我的 lambda,但是,当我的 lambda 尝试执行“ListObjectsV2”或“GetObject”操作时,它会得到“拒绝访问”。

我已经为我的政策制定了一些 SES 政策。这些策略已正确应用(我的 lambda 发送邮件),因此我希望我的 S3 策略也能正确应用。我是否缺少存储桶配置的某些内容?我应该怎么做才能纠正这个问题(当然不要将我的存储桶完全公开)

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform


    【解决方案1】:

    此 ARN 对于 S3 存储桶是错误的:

                        "arn:aws:s3:::my-bucket/",
    

    / 使其与存储桶 ARN 不匹配。 This set of documentation 是我所知道的确定给定资源的 ARN 外观的最佳位置。

    所以你应该把它改成

                        "arn:aws:s3:::my-bucket",
    

    没有斜线。也留下"arn:aws:s3:::my-bucket/*",因为这将匹配对象的获取/放置对象的arns。

    【讨论】:

      猜你喜欢
      • 2021-08-14
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 2020-03-29
      • 2019-05-15
      • 2021-04-04
      • 2020-03-23
      • 2021-05-28
      相关资源
      最近更新 更多