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

求助:如何用Terraform提取AWS ACM中ISSUED状态的证书ARN列表

解决Terraform提取ACM证书ARN列表的问题

问题核心

data "aws_acm_certificate" "domains"执行后返回的是键值映射结构,每个键对应一个完整的证书对象,直接用嵌套循环提取属性容易触发语法错误,关键是要把映射中的证书对象转换成列表,再批量提取arn属性。

解决方案

用Terraform内置的values()函数结合splat表达式[*],可以快速生成纯ARN字符串列表,无需复杂循环:

1. 提取ARN的代码实现

在配置中添加输出块即可生成目标列表:

output "certificates" {
  value = values(data.aws_acm_certificate.domains)[*].arn
}

2. 代码逻辑说明

  • values(data.aws_acm_certificate.domains):将data源返回的映射结构转为包含所有证书对象的列表
  • [*].arn:对列表中的每个证书对象,批量提取arn属性,最终生成纯ARN字符串的数组

3. 效果验证

执行terraform apply后,输出的certificates会完全匹配你期望的格式:

certificates = [
   "arn:aws:acm:us-east-1:AWS_ACCOUNT:certificate/22e77818-075d-4ffd-8f13-cbf91b801198", 
   "arn:aws:acm:us-east-1:AWS_ACCOUNT:certificate/edd30a0b-f838-4bc9-8660-bd691e635df9"
]

4. 多账户场景扩展

如果需要跨多个AWS账户提取证书,可以通过provider别名分别获取各账户的证书数据,再用concat()合并列表:

# 示例:多账户证书ARN合并
output "all_account_certificates" {
  value = concat(
    values(data.aws_acm_certificate.account1_domains)[*].arn,
    values(data.aws_acm_certificate.account2_domains)[*].arn
  )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:16:25