Terraform aws_s3_bucket_policy语法不清楚

时间:2018-10-30 05:41:02

标签: terraform

terraform documentation中,为我们提供了以下标记。我找不到关于“ b”字段的目的以及通常应如何使用的内容。

resource "aws_s3_bucket" "b" {
  bucket = "my_tf_test_bucket"
}

resource "aws_s3_bucket_policy" "b" {
  bucket = "${aws_s3_bucket.b.id}"
  policy =<<POLICY
{
  "Version": "2012-10-17",
  "Id": "MYBUCKETPOLICY",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::my_tf_test_bucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "8.8.8.8/32"}
      } 
    } 
  ]
}
POLICY
}

1 个答案:

答案 0 :(得分:3)

“ b”只是您正在创建的资源的名称。

在“块”中定义了地形资源,每个资源块都会创建给定TYPE(第一个参数)和NAME(第二个参数)的资源。类型和名称的组合必须唯一。

因此,在您的示例中,您正在创建TYPE aws_s3_bucket和NAME b的资源。

定义的每个资源都有一个id,您可以使用TYPE.NAME.id之类的语法,例如${aws_s3_bucket.b.id}

来在其他资源中引用该资源。

您可以在以下文档中找到更多信息:https://www.terraform.io/docs/configuration/resources.html