首页 > 解决方案 > 如何在 terraform 的 AWS S3 存储桶策略中获取 sid

问题描述

我想将策略附加到 S3 存储桶资源。

我的地形基础设施,

resource "aws_s3_bucket" "storage" {
  bucket = "${var.service}-${local.stage}-storage"
  acl    = "public-read"

  tags = {
    Service = var.service
    Stage   = local.stage
  }

  cors_rule {
    allowed_headers = [
      "*"
    ]
    allowed_methods = [
      "GET",
      "HEAD"
    ]
    allowed_origins = [
      "*"
    ]
    max_age_seconds = 3000
  }
}

这个用于 web 静态文件托管的存储桶。我需要公开存储桶策略。

我的 terraform 政策,

resource "aws_s3_bucket_policy" "storage-policy" {
  bucket = aws_s3_bucket.storage.id

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Id": "????????",
  "Statement": [
    {
      "Sid": "????????",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "arn:aws:s3:::BUCKET-NAME/*"
    }
  ]
}
POLICY
}

在这段代码中,我需要获取 Id、Sid 字段值。我怎么能得到这个?谢谢。

标签: amazon-web-servicesamazon-s3terraform

解决方案


IdSid是你想要的任何东西。例如:

resource "aws_s3_bucket_policy" "storage-policy" {
  bucket = aws_s3_bucket.storage.id

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Id": "my-bucket-polict",
  "Statement": [
    {
      "Sid": "allow-all-access",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "*",
      "Resource": "arn:aws:s3:::BUCKET-NAME/*"
    }
  ]
}
POLICY
}

推荐阅读