Data Sources
data source 主要有以下功能
data "aws_iam_policy_document" "test_resource_role_doc" {
statement {
actions = [
"ssm:DescribeParameters",
"ec2:DescribeTags",
"ssm:GetParameters",
"kms:Decrypt",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:CompleteLayerUpload",
"ecr:GetAuthorizationToken",
"ecr:UploadLayerPart",
"ecr:InitiateLayerUpload",
"ecr:BatchCheckLayerAvailability",
"ecr:PutImage",
"cloudwatch:*",
"ecs:*",
"iam:*",
"ec2:*",
"logs:*",
"ecr:*",
"s3:*",
"events:*"
]
resources = ["*"]
effect = "Allow"
}
}
aws_caller_identity
使用此数据源可访问对有效的帐户ID,用户ID和ARN的授权,并在其中授权了Terraform。
属性:
data "aws_caller_identity" "current" {}
aws_arn
将Amazon资源名称(ARN)解析为其组成部分, 从aws上检查并返回指定ARN的资源
data "aws_arn" "db_instance" {
arn = "arn:aws:rds:eu-west-1:123456789012:db:mysql-db"
}
aws_region
除了验证给定的区域名称之外,此资源还可用于发现提供程序内配置的区域的名称。后者在从其父模块继承AWS提供程序配置的子模块中很有用。
属性:
data "aws_region" "current" {}
aws_regions
提供有关AWS区域的信息。可以用于过滤区域,即按启用状态或仅对当前帐户启用的区域。为了获得诸如端点和每个区域的描述之类的详细信息,可以将aws_region数据源与数据源结合使用。
参数:
属性:
names -符合条件的地区名称
data "aws_regions" "current" {}
aws_ip_ranges
使用此数据源获取各种AWS产品和服务的IP范围。有关此数据源内容和必需的JSON语法
参数:
data "aws_ip_ranges" "european_ec2" {
regions = ["eu-west-1", "eu-central-1"]
services = ["ec2"]
}
aws_partition
使用此数据源查找有关Terraform在其中运行的当前AWS分区的信息。
属性:
data "aws_partition" "current" {}
data "aws_iam_policy_document" "s3_policy" {
statement {
sid = "1"
actions = [
"s3:ListBucket",
]
resources = [
"arn:${data.aws_partition.current.partition}:s3:::my-bucket",
]
}
}
aws_availability_zones
可用区数据源允许访问AWS可用区列表,可以通过提供程序中配置的区域内的AWS帐户来访问该列表。
参数:
属性:
data "aws_availability_zones" "example" {
all_availability_zones = true
filter {
name = "opt-in-status"
values = ["not-opted-in", "opted-in"]
}
}
resource "aws_subnet" "primary" {
availability_zone = data.aws_availability_zones.available.names[0]
...
}
resource "aws_subnet" "secondary" {
availability_zone = data.aws_availability_zones.available.names[1]
...
}
aws_billing_service_account
使用此数据源获取AWS Billing and Cost Management Service账户的账户ID,以允许在S3存储桶策略中使用。
属性:
data "aws_billing_service_account" "main" {}
参数:
属性:
data "aws_availability_zone" "example" {
filter {
name = "opt-in-status"
values = ["not-opted-in", "opted-in"]
}
all_availability_zones = true
state = "available"
}