如何在Terraform Output中批量输出AWS IAM用户的认证信息
解决Terraform批量输出IAM用户认证信息的格式问题
要实现每个用户认证信息为独立对象的输出格式,可以借助Terraform的for表达式遍历资源实例,将用户名和密码一一配对。以下是两种可行的实现方式:
方法一:通过索引遍历资源实例
利用count创建的资源实例索引一一对应的特性,遍历索引序列生成每个用户的对象:
output "authenticate_list_account" { value = [ { account = [ for i in range(length(var.ops_list_username)) : { username = aws_iam_user.create_ops_account[i].name password = aws_iam_user_login_profile.ops_account_password[i].password } ] } ] }
方法二:用zip函数配对列表
将用户名列表和密码列表按位置配对后,再转换为对象数组:
output "authenticate_list_account" { value = [ { account = [ for pair in zip(aws_iam_user.create_ops_account[*].name, aws_iam_user_login_profile.ops_account_password[*].password) : { username = pair[0] password = pair[1] } ] } ] }
效果验证
执行terraform apply后,输出结果会符合期望的格式:
"value": [ { "account": [ { "password": "O'uAj*]g0GV_g0UihP{Og[R_fGu(6(#9", "username": "ops_lincoln" }, { "password": "Id$Y|jmPr&&cTgbp@n1kEvQ6%H]UN1e^", "username": "ops_trump" }, { "password": "viN-Y++ei&QgB}7Qgp+_iT$}{mMCi(rq", "username": "ops_roosevelt" } ] } ]
内容的提问来源于stack exchange,提问作者Nguyễn Hồng Sơn
相关产品推荐
相关产品推荐

