Data Sources
data source 主要有以下功能
- 缓存一些资源信息,如json被其他resource引用。
- 从aws 加载一些已经存在资源,在plan, apply中被引用。
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。
属性:
- account_id -拥有或包含调用实体的账户的AWS账户ID号。
- arn -与调用实体关联的AWS ARN。
- user_id -呼叫实体的唯一标识符。
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提供程序配置的子模块中很有用。
属性:
- name -所选区域的名称。
- endpoint -所选区域的EC2端点。
- description-以以下格式的区域说明:“位置(区域名称)”。
data "aws_region" "current" {}
aws_regions
提供有关AWS区域的信息。可以用于过滤区域,即按启用状态或仅对当前帐户启用的区域。为了获得诸如端点和每个区域的描述之类的详细信息,可以将aws_region数据源与数据源结合使用。
参数:
- all_regions -(可选)如果为true,则无论可用性如何,源都将查询所有区域。
- filter-(可选)用作过滤器的配置块。详细如下。
name-(必填)过滤器字段的名称。有效值可在describe-regions AWS CLI参考中找到。
values-(必需)给定过滤器字段接受的一组值。如果任何给定值匹配,将选择结果。
属性:
names -符合条件的地区名称
data "aws_regions" "current" {}
aws_ip_ranges
使用此数据源获取各种AWS产品和服务的IP范围。有关此数据源内容和必需的JSON语法
参数:
- regions-(可选)按区域过滤IP范围(如果省略,则包括所有区域)。有效项目为global(适用于cloudfront)以及所有AWS区域(例如eu-central-1)
- services-(必需)按服务过滤IP范围。有效的项目是amazon (对于amazon.com) ,amazon_connect,api_gateway,cloud9,cloudfront, codebuild,dynamodb,ec2,ec2_instance_connect,globalaccelerator, ,route53 和。有关其他可能的值,请参阅 属性文档。route53_healthcheckss3workspaces_gatewaysservice
- url-(可选)源JSON文件的自定义URL。语法必须与AWS IP地址范围文档一致。默认为https://ip-ranges.amazonaws.com/ip-ranges.json。
属性: - cidr_blocks -按字母顺序排列的CIDR块列表。
- ipv6_cidr_blocks -IPv6 CIDR块的按字母顺序排列的列表。
- create_date-IP范围的发布时间(例如2016-08-03-23-46-05)。
- sync_token-IP范围的发布时间,以Unix纪元时间格式(例如1470267965)。
data "aws_ip_ranges" "european_ec2" {
regions = ["eu-west-1", "eu-central-1"]
services = ["ec2"]
}
aws_partition
使用此数据源查找有关Terraform在其中运行的当前AWS分区的信息。
属性:
- partition 设置为当前分区的标识符。
- dns_suffix设置为当前分区的基本DNS域名(例如,amazonaws.com在AWS Commercial,amazonaws.com.cnAWS China中)。
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帐户来访问该列表。
参数:
- all_availability_zones-(可选)设置为true包括所有可用区域和本地区域,而不管您的选择启用状态如何。
- filter-(可选)用于过滤的配置块。详细如下。
- exclude_names -(可选)要排除的可用区名称列表。
- exclude_zone_ids -(可选)要排除的可用区ID列表。
- state-(可选)允许根据可用区的当前状态过滤列表。可以是"available",“information”,"impaired"或 - “unavailable”。默认情况下,该列表包括基础AWS帐户可以访问的一组完整的可用区,无论其状态如何。
过滤器配置块 - filter配置块支持以下参数:
name-(必填)过滤器字段的名称。有效值可以在《EC2 DescribeAvailabilityZones API参考》中找到。
values-(必需)给定过滤器字段接受的一组值。如果任何给定值匹配,将选择结果。
属性:
- group_names一组可用区组名称。对于可用区,此值与地区名称相同。对于“本地区域”,为关联组的名称,例如us-west-2-lax-1。
- names -该帐户可用的可用区名称列表。
- zone_ids -该帐户可用的可用区ID的列表。
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存储桶策略中使用。
属性:
- id -AWS计费服务帐户的ID。
- arn -AWS计费服务帐户的ARN。
data "aws_billing_service_account" "main" {}
参数:
- all_availability_zones-(可选)设置为true包括所有可用区域和本地区域,而不管您的选择启用状态如何。
- filter-(可选)用于过滤的配置块。详细如下。
- name -(可选)要选择的可用区的全名。
- state-(可选)特定的可用区状态。可在任何的"available",“information"或"impaired”。
- zone_id -(可选)要选择的可用区域的区域ID。
- filter配置块支持以下参数:
name-(必填)过滤器字段的名称。有效值可以在《EC2 DescribeAvailabilityZones API参考》中找到。
values-(必需)给定过滤器字段接受的一组值。如果任何给定值匹配,将选择结果。
属性:
- group_name-对于可用区,此值与地区名称相同。对于“本地区域”,为关联组的名称,例如us-west-2-lax-1。
- name_suffix -AZ名称出现在区域名称之后的部分,唯一标识其区域内的AZ。
- network_border_group -从中发布地址的位置名称。
- opt_in_status-对于可用区,此值始终为opt-in-not-required。对于本地区域,这是选择启用状态。可能的值为opted-in和not-opted-in。
region-所选可用区所在的区域。这始终是在提供程序上选择的区域,因为此数据源仅在该区域内搜索。
data "aws_availability_zone" "example" {
filter {
name = "opt-in-status"
values = ["not-opted-in", "opted-in"]
}
all_availability_zones = true
state = "available"
}