Не все типы ресурсов AWS поддерживаются в поле параметра type
.
Полный список: AWS -Specifi c Типы параметров . Он включает, например:
- AWS :: EC2 :: VP C :: Id
- Список
- AWS :: SSM :: Параметр :: Имя
Этот список не включает AWS::IAM::Role
(или любые ресурсы IAM).
Если вы просто пытаетесь связать новую политику IAM с существующей именованной ролью IAM, обратите внимание, что конструкция AWS::IAM::Policy
имеет свойство Roles
, и вы должны предоставить список имен ролей для применения политики. Требуется роль имена , а не роль ARNs , поэтому вам не нужен идентификатор учетной записи.
Если вам когда-либо понадобится идентификатор учетной записи, он будет доступен как псевдопараметр, и вы можете получить его из "Ref" : "AWS::AccountId"
, но я не думаю, что он вам нужен здесь.
Вот JSON пример того, как создать новую политику IAM (разрешив s3:Get*
на 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"
}
]
}
}
}
}