You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform AWS IAM Policy数据源如何通过名称前缀查询匹配策略ARN

解决方案

原生aws_iam_policy数据源确实不支持模糊匹配,你可以通过以下两种方式实现前缀匹配获取目标策略ARN:

方案一:使用官方原生aws_iam_policies数据源(推荐)

AWS Provider提供的aws_iam_policies数据源天然支持name_prefix参数,可以直接按名称前缀过滤策略,适配所有Terraform 0.13+版本,无额外依赖:

# 按前缀过滤所有匹配的IAM策略
data "aws_iam_policies" "datadog_integration_policy" {
  name_prefix = "DataDogIntegration-DatadogAWSIntegrationPolicy-"
  # 可选:添加路径前缀、标签过滤进一步缩小匹配范围,避免误匹配
  # path_prefix = "/"
  # tags_filter = {
  #   Vendor = "Datadog"
  # }
}

# 如需获取策略完整属性,可结合aws_iam_policy数据源使用
data "aws_iam_policy" "datadog_integration_policy" {
  arn = one(data.aws_iam_policies.datadog_integration_policy.arns)
}
  • 说明:one()是Terraform 0.15+内置函数,用于从仅含单个元素的列表中返回该元素,低版本Terraform可替换为data.aws_iam_policies.datadog_integration_policy.arns[0],前提是你确认每个环境仅存在一个符合该前缀的策略。

方案二:使用external数据源调用AWS CLI查询(兼容性差,仅作备选)

如果你的AWS Provider版本过低不支持aws_iam_policies数据源,可通过调用AWS CLI实现查询,该方案需要执行环境预安装AWS CLI、jq、bash:

data "external" "datadog_policy_arn" {
  program = ["bash", "-c", <<EOT
aws iam list-policies --query 'Policies[?starts_with(PolicyName, `DataDogIntegration-DatadogAWSIntegrationPolicy-`)].Arn' | jq -r '{arn: .[0]}'
EOT
  ]
}

# 调用方式:data.external.datadog_policy_arn.result.arn

内容的提问来源于stack exchange,提问作者Cyber Axe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:39:02