Terraform использует существующую политику для S3 Bucket - PullRequest
0 голосов
/ 28 мая 2019

В моей конфигурации terraform у меня есть policy, прикрепленный к некоторому roles.
Как я могу использовать эту политику при создании корзины s3?


resource "aws_iam_policy" "s3-read-access" {
  name   = "my-warehouse-read-access"
  version = "2019-05-28"
  policy = "${data.aws_iam_policy_document.s3-read-access.json}"
}

resource "aws_s3_bucket" "my-warehouse" {
  bucket = "my-bucket"
  acl    = "private"
  policy = "${aws_iam_policy.s3-read-access.arn}"
}

К сожалению, я получаю сообщение об ошибке: Error putting S3 policy: MalformedPolicy: Policies must be valid JSON and the first byte must be '{'.

Похоже, что policy требуется конфигурация json в heredoc -обозначении, но я должен повторно использовать существующую политику.
Как я могу ссылаться на эту политику при создании s3-bucket?

1 Ответ

1 голос
/ 28 мая 2019

У вас есть несколько способов достичь этого.Вы можете иметь политику JSON и ссылаться на нее в каждом сегменте:

resource "aws_s3_bucket" "b" {
  bucket = "s3-website-test.hashicorp.com"
  acl    = "public-read"
  policy = "${file("policy.json")}"
}

Или вы можете создать блок данных:

data "aws_iam_policy_document" "your_super_amazing_policy" {
 count  = "${length(keys(var.statement))}"

  statement {
    sid       = "CloudfrontBucketActions"
    actions   = ["s3:GetObject"]
    resources = ["*"]
  }

И вы, что в сегментах:

resource "aws_s3_bucket" "private_bucket" {
  bucket = "acme-private-bucket"
  acl = "private"
  policy = "${data.aws_iam_policy_document.your_super_amazing_policy.json}"

  tags {
    Name = "private-bucket"
    terraform = "true"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...