这是我在Cloud9中ExecuteChangeSet
的代码的一部分:
{{1}}
当我在Cloud9中提交更改时,尝试{{1}}时在CodePipeline部署阶段部署失败。我收到此错误:
CloudFormation无权执行:资源上的iam:PassRole
有人可以帮忙吗?
答案 0 :(得分:5)
虽然我不能具体说出您所遇到的情况,但错误消息表示CloudFormation用于部署资源的角色/用户没有适当的iam:PassRole
权限。
向资源分配角色时使用iam:PassRole
权限。例如,当使用IAM角色启动Amazon EC2实例时,启动该实例的实体需要获得许可以指定要使用的IAM角色。 这样做是为了防止用户获得太多权限。例如,不应允许非管理用户启动具有管理角色的实例,因为他们随后将获得对他们没有权限的其他权限的访问权限。
就您的模板而言,似乎CloudFormation正在创建一个函数,并为此函数分配了FnRole
权限。但是,未授予CloudFormation模板将此角色分配给功能的权限。
启动CloudFormation模板时,它要么以创建堆栈的用户身份配置资源,要么使用启动堆栈时指定的IAM角色。需要iam:PassRole
权限才能使用FnRole
的用户/角色。
答案 1 :(得分:1)
用户:arn:aws:sts :: 156478935478:assumed-role / CodeStarWorker-AppConfig-CloudFormation / AWSCloudFormation未经授权执行:资源上的iam:PassRole:arn:aws:iam :: 156478935478:role / service-角色/ FnRole(服务:AWSLambda;状态代码:403;错误代码:AccessDeniedException;请求ID:129f601b-a425-11e8-9659-410b0cc8f4f9)
从此日志中,您可以知道需要为堆栈(iam:PassRole
)的CloudFormation角色分配什么策略(CodeStarWorker-AppConfig-CloudFormation
)。
您应该:
IAM > Roles
CodeStarWorker-AppConfig-CloudFormation
Permissions
CodeStarWorkerCloudFormationRolePolicy
,将其展开,转到Edit policy
arn:aws:iam::579913947261:role/FnRole
的ARN,如果您没有该部分,则只需复制并粘贴,然后在Resources
下使用您的ARN。政策:
{
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::156478935478:role/CodeStarWorker-AppConfig-Lambda",
"arn:aws:iam::579913947261:role/FnRole"
],
"Effect": "Allow"
}
如果您想将该权限分配给所有资源("Resource": "*"
),请在以下部分以及上面的操作下找到要分配的权限:
"Resource": "*",
"Effect": "Allow"
您可以将其应用于要分配给您的资源的CloudFormation的所有其他权限。
答案 2 :(得分:0)
如果您从以下位置更改角色名称:RoleName: 'arn:aws:iam::579913947261:role/FnRole'
要包含CodeStar-$ {ProjectId}的前缀,则可以创建/更新/等角色,而不必修改CodeStarWorker-AppConfig-CloudFormation
角色的IAM策略。例如
RoleName: !Sub 'CodeStar-${ProjectId}-[FunctionName]'
我在此处发布了完整的解释:Change IAM Role for a Lambda in a CloudFormation template in a CodeStar project?
答案 3 :(得分:0)
为实现这一目标,我们减少了人们与AWS相处的复杂性。
必须更新策略Json中的操作部分。
"iam:PassRole"
应添加到策略文件中的操作块括号中。
答案 4 :(得分:0)
您只需要将其纳入您的政策
{
"Sid": "PolicyStatementToAllowUserToPassOneSpecificRole",
"Effect": "Allow",
"Action": [ "iam:PassRole" ],
"Resource": "arn:aws:iam::<account-id>:role/RDS-Monitoring-Role"
}
链接https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html