在Lambda的角色定义中,什么是受信任实体?

时间:2019-07-14 17:48:44

标签: amazon-web-services aws-lambda amazon-iam aws-serverless

下面是SAM模板,

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function 
Properties:
  CodeUri: hello-world/
  Handler: app.LambdaHandler
  Runtime: nodejs8.10
  Policies:
  - AWSLambdaExecute  

为此,以下是为Lambda函数创建的role(JSON):

{
  "roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
  "policies": [
    {...}, # AWSLambdaExecute
    {...}, # AWSLambdaSQSQueueExecutionRole
    {....} # AWSLambdaBasicExecutionRole
  ],
  "trustedEntities": [
    "lambda.amazonaws.com"
  ]
}

此JSON中的trustedEntities是什么?

1 个答案:

答案 0 :(得分:1)

受信任的实体是可以担当此角色的一组实体。如果通过SAM创建功能,则SAM创建的角色和帐户中的Lambda服务之间的信任关系将自动创建,这又意味着您的Lambda函数可以担任此角色。

如果您想将此角色分配给EC2实例,将无法执行,因为您的角色默认情况下不信任EC2服务。您将需要修改信任关系并包括EC2服务。像这样:

"trustedEntities": [
    "lambda.amazonaws.com",
    "ec2.amazonaws.com"
  ]

如果您想创建一个可以在多个帐户中担当的角色,可以将其他帐户指定为受信任的实体,以便其他帐户能够担当该角色,这也很有用。

如果trustedEntities列表为空,则没人能担任这个角色。