[英]How to reference Cloudformation Ressources in a new Cloudformation template?
[英]How can I reference an existing role in my new CloudFormation template?
在我的 AWS 賬戶中,我正在構建一個用於創建新策略的新 Cloudformation 模板,我想將這些模板附加到賬戶中的一些現有角色。 這是我一直試圖引用它們的方式:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Names of existing roles to which the restrictive policies need added",
"Parameters": {
"AdditionalExecutionRoleParameter": {
"Type": "AWS::IAM::Role",
"Default": "CloudOps"
}
},
"Resources": { (and so on)
然后在新策略下方的部分中,我一直在嘗試引用這些現有角色(在本例中為“AdditionalExecutionRoleParameter”)並使用 Roles 參數將策略附加到它們。 但是,在嘗試部署 CloudFormation 模板時,我不斷收到“無法檢索外部值”錯誤......我嘗試輸入角色名稱“CloudOps”作為參數“默認”,並且我已經還嘗試在那里輸入角色 ARN...沒有任何效果。
參數type
字段並非支持所有 AWS 資源類型。
完整列表位於AWS-Specific Parameter Types 。 它包括,例如:
此列表不包括AWS::IAM::Role
(或任何 IAM 資源)。
如果您只是嘗試將新的 IAM 策略與現有的命名 IAM 角色相關聯,請注意AWS::IAM::Policy
構造具有Roles
屬性,您應該提供要應用該策略的角色名稱列表。 它需要角色名稱,而不是角色ARN ,因此您不需要帳戶 ID。
如果您確實需要帳戶 ID,那么它可以作為偽參數使用,您可以從"Ref" : "AWS::AccountId"
獲取它,但我認為您在這里不需要它。
這是一個 JSON 示例,說明如何創建新的 IAM 策略(允許s3:Get*
on mybucket/*
)並將其與現有 IAM 角色相關聯,您將其名稱作為參數提供給堆棧:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Add policy to role test",
"Parameters": {
"TheRoleName": {
"Type": "String",
"Default": "CloudOps",
"Description": "Name of role to associate policy with"
}
},
"Resources": {
"ThePolicy": {
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "s3-read",
"PolicyDocument": {
"Statement": {
"Effect": "Allow",
"Action": [
"s3:Get*"
],
"Resource": ["arn:aws:s3:::mybucket/*"]
}
},
"Roles": [
{
"Ref": "TheRoleName"
}
]
}
}
}
}
嗯……我最終做的就是這么簡單的事情,效果很好……
"Parameters": {
"RoleNameRoleParameter": {
"Type": "String",
"Default": "RoleNameRole"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.