Amazon web services iam:PassRole api执行什么操作?
在以下规则中:Amazon web services iam:PassRole api执行什么操作?,amazon-web-services,amazon-iam,aws-sam,Amazon Web Services,Amazon Iam,Aws Sam,在以下规则中: { "Condition": { "StringLikeIfExists": { "iam:PassedToService": "lambda.amazonaws.com" } }, "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::${AWS::AccountId}:role/some-
{
"Condition": {
"StringLikeIfExists": {
"iam:PassedToService": "lambda.amazonaws.com"
}
},
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::${AWS::AccountId}:role/some-role*"
],
"Effect": "Allow"
}
我们使用此规则创建SAM模板的云形成堆栈(
SAM部署
)。SAM模板具有lambda和lambda的自定义角色
对于上述规则,我们到底在说什么?简言之,该语句表示您可以将名称以
某个角色开头的角色分配给lambda服务
如果要将角色分配给lambda或EC2等服务,则需要具有执行iam:PassRole
操作的权限
“iam:PassedToService”:“lambda.amazonaws.com”
指定可以将角色传递给哪个服务,在本例中是传递给lambda服务。例如,使用此条件,您将无法将此角色分配给EC2实例
虽然这会起作用,但最好使用StringEquals
而不是stringlikeiExists
。首先,您不需要像
那样使用,因为服务名称中没有可变部分。它只不过是lambda.amazonaws.com
,它将保持这种状态。其次,您将此角色传递给服务,因此所提到的字符串将始终存在,因此无需使用IfExists
,这用于在单个语句中指定多个操作,但条件仅适用于其中一些操作的情况。在这种情况下,可以使用IfExists
part,这样就不必将语句分解为多个较小的语句
在你的例子中,你可以这样写条件
"Condition": {
"StringEquals": {
"iam:PassedToService": "lambda.amazonaws.com"
}
}
所以这是否意味着。。。。我们可以写这行
Role:!在lambda函数属性的SAM模板中的GetAtt SomeLambdaRole.Arn
?由于上述规则…iam:PassRole
Yes,进行调用的iam实体(在本例中是分配给EC2实例的iam角色)需要具有执行iam:PassRole
操作的权限。api网关的服务名称是什么?因为我需要提供iam:PassedToService
apigateway.amazonaws.com