如何在Terraform的IAM策略中引用Athena工作组ARN作为主体
如何在KMS IAM策略中引用Athena工作组的ARN(Terraform)
同一配置/模块内直接引用资源属性
你不需要通过output来引用该ARN,因为output是用于将值暴露给外部(如其他模块、外部读取Terraform state)的。在同一个Terraform配置文件里,直接使用Athena工作组资源的arn属性即可:修改后的策略代码:
statement { sid = "" effect = "Allow" resources = ["*"] actions = [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*", ] principals { type = "AWS" identifiers = [aws_athena_workgroup.athena_workgroup.arn] } }跨模块引用的情况
如果KMS策略和Athena工作组不在同一个Terraform模块里,需要按以下步骤操作:- 保留工作组所在模块
outputs.tf中已定义的输出:
output "workgroup_arn" { description = "arn of newly created Athena workgroup." value = aws_athena_workgroup.athena_workgroup.arn }- 在策略所在模块中声明模块引用(假设模块名为
athena_workgroup_module):
module "athena_workgroup_module" { source = "./path/to/your/workgroup/module" # 填写模块所需的其他变量 }- 在策略中引用模块的输出值:
statement { sid = "" effect = "Allow" resources = ["*"] actions = [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*", ] principals { type = "AWS" identifiers = [module.athena_workgroup_module.workgroup_arn] } }- 保留工作组所在模块
内容的提问来源于stack exchange,提问作者Kaysss
相关产品推荐
相关产品推荐

