Sec*_*Two 2 amazon-web-services aws-cloudformation amazon-iam aws-lambda
这是我template.yml在Cloud9 中的代码的一部分:
Type: 'AWS::Serverless::Function'
Properties:
Handler: index.handler
Runtime: nodejs6.10
CodeUri: .
Description: Updates records in the AppConfig table.
MemorySize: 128
Timeout: 3
Role: 'arn:aws:iam::579913947261:role/FnRole'
Events:
Api1:
Type: Api
Properties:
Run Code Online (Sandbox Code Playgroud)
当我在Cloud9中提交更改时,尝试在CodePipeline Deploy阶段部署失败ExecuteChangeSet。我收到此错误:
未授权CloudFormation执行:资源上的iam:PassRole
有人可以帮忙吗?
虽然我不能具体说出您所遇到的情况,但是错误消息表示CloudFormation用于部署资源的角色/用户没有适当的iam:PassRole权限。
iam:PassRole向资源分配角色时使用该权限。例如,当使用IAM角色启动Amazon EC2实例时,启动该实例的实体需要获得许可以指定要使用的IAM角色。这样做是为了防止用户获得太多许可。例如,不应允许非管理用户启动具有管理角色的实例,因为他们随后将获得对他们无权获得的其他权限的访问权。
就您的模板而言,似乎CloudFormation正在创建一个函数并正在FnRole向该函数分配权限。但是,未向CloudFormation模板授予将此角色分配给function的权限。
启动CloudFormation模板时,它会以正在创建堆栈的用户的身份来配置资源,或者使用启动堆栈时指定的IAM角色。需要iam:PassRole权限才能使用的是用户/角色FnRole。
用户:arn:aws:sts :: 156478935478:assumed-role / CodeStarWorker-AppConfig-CloudFormation / AWSCloudFormation未经授权执行:iam:PassRole on资源:arn:aws:iam :: 156478935478:role / service-role / FnRole (服务:AWSLambda;状态代码:403;错误代码:AccessDeniedException;请求ID:129f601b-a425-11e8-9659-410b0cc8f4f9)
从该日志中,您可以知道iam:PassRole需要为堆栈(CodeStarWorker-AppConfig-CloudFormation)的CloudFormation角色分配什么策略()。
你应该:
IAM > RolesCodeStarWorker-AppConfig-CloudFormationPermissionsCodeStarWorkerCloudFormationRolePolicy,展开,继续Edit policyarn: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"
}
Run Code Online (Sandbox Code Playgroud)
如果您想将该权限分配给所有资源("Resource": "*"),请在以下部分和上方的“操作”下添加您要分配的权限:
"Resource": "*",
"Effect": "Allow"
Run Code Online (Sandbox Code Playgroud)
您可以将此方法应用于要分配给资源的CloudFormation的所有其他权限。
| 归档时间: |
|
| 查看次数: |
6411 次 |
| 最近记录: |