टेराफॉर्म की आधिकारिक साइट में, उनके पास इस तरह का एक उदाहरण है (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"
}
},
]
})
}
जहां वे पॉलिसी में रोल आईडी सेट करके एक भूमिका के लिए एक पॉलिसी संलग्न करते हैं, अर्थात्:
role = aws_iam_role.test_role.id
लेकिन इसे इस तरह से सेट करना हमारे टीम प्रोजेक्ट्स में से एक में मेरे काम नहीं आया, मुझे त्रुटियां मिलती रहीं (विवरण यहां देखें टेराफॉर्म द्वारा परिभाषित कार्य भूमिका ECS शेड्यूल किए गए कार्य के लिए ठीक से काम नहीं कर रही है)। आखिरकार, मुझे एहसास हुआ कि मुझे अपनी नीति में इस तरह भूमिका नाम का उपयोग करके इसे सेट करना होगा:
role = aws_iam_role.my_role.name
लेकिन मुझे हमारे अन्य टीम प्रोजेक्ट्स में ऐसे उदाहरण दिखाई देते हैं जहां मेरे सहकर्मी रोल आईडी का उपयोग कर रहे हैं। मुझे आश्चर्य है कि टेराफॉर्म के संदर्भ में आईडी और नाम के बीच अंतर क्या हैं और इसका उपयोग कब करना है।
1 उत्तर
जैसा कि पहले ही बताया जा चुका है, 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"
}
संबंधित सवाल
नए सवाल
terraform
कोड के रूप में अवसंरचना को परिभाषित करने के लिए हाशिकॉर्प का एक उपकरण। ऑन-टॉपिक प्रश्न उपकरण के उपयोग से संबंधित हैं या विशिष्ट संरचनाओं को परिभाषित करने के लिए 'कोड' (HCL) का उपयोग कैसे करें। इस टैग का उपयोग अक्सर सार्वजनिक-क्लाउड टैग के साथ किया जाता है, जैसे "amazon-web-services", "google-cloud-platform" या "azure" जो कि पूछे जा रहे प्रश्न को और अधिक परिभाषित करता है।
aws_iam_role
के दस्तावेज़ीकरण के अनुसार,id
औरname
विशेषताएँ दोनों"The name of the role"
हैं। दोनों में कोई अंतर नहीं लगता। व्यक्तिगत रूप से मैंname
का उपयोग करता हूं। (registry.terraform.io/providers/hashicorp /aws/नवीनतम/दस्तावेज़/…)