terraform - terraform中的aws iam角色ID与角色名称,何时使用哪个?
问题描述
在 terraform 的官方网站上,他们有一个这样的例子(https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy):
resource "aws_iam_role_policy" "test_policy" {
name = "test_policy"
role = aws_iam_role.test_role.id
# Terraform's "jsonencode" function converts a
# Terraform expression result to valid JSON syntax.
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
resource "aws_iam_role" "test_role" {
name = "test_role"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid = ""
Principal = {
Service = "ec2.amazonaws.com"
}
},
]
})
}
他们通过在策略中设置角色 ID 将策略附加到角色,即:
role = aws_iam_role.test_role.id
但是在我们的一个团队项目中以这种方式设置它对我不起作用,我不断收到错误(请参阅此处的详细信息Task role defined by Terraform not working correct for ECS scheduled task)。最终,我意识到我必须在我的策略中使用这样的角色名称来设置它:
role = aws_iam_role.my_role.name
但我确实在我们的其他团队项目中看到了我的同事使用角色 ID 的实例。我想知道在 terraform 的上下文中 id 和 name 之间有什么区别以及何时使用哪个。
解决方案
正如已经指出的,和之间没有区别。您可以通过简单地输出您的角色来检查它:id
name
output "test" {
value = aws_iam_role.test_role
}
这表明两者id
和name
都设置为test_role
:
test = {
"arn" = "arn:aws:iam::xxxxxx:role/test_role"
"assume_role_policy" = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ec2.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"
"create_date" = "2021-02-14T01:25:48Z"
"description" = ""
"force_detach_policies" = false
"id" = "test_role"
"max_session_duration" = 3600
"name" = "test_role"
"name_prefix" = tostring(null)
"path" = "/"
"permissions_boundary" = tostring(null)
"tags" = tomap({})
"unique_id" = "AROASZHPM3IXXHCEBQ6OD"
}
推荐阅读
- reactjs - 如何在 IIS 上使用 ASP .Net Web API 部署 React 应用程序?
- python - Azure python SDK 在虚拟机中运行 powershell 脚本
- c# - 使用 MailSystem.Net 的带有附件符号的 S/Mime
- android-studio - 在 vscode 中运行颤振应用程序并得到此错误无法确定任务':app:compileDebugJavaWithJavac'的依赖关系
- google-chrome-extension - 配置 chrome 扩展而不制作自定义版本
- reactjs - 在 React 的上下文中传递带参数的函数
- node.js - 如何通过node js下载outlook附件
- python - 如何在 Python 中扩展 ChainerRL 中的代理类
- javascript - ReactJS:转发器中的假路径问题
- sql - 如何在 Presto 中旋转表格?