Lambda 的结果角色定义中的可信实体是什么?

ove*_*nge 4 amazon-web-services amazon-iam aws-lambda aws-serverless

下面是 SAM 模板,

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function 
Properties:
  CodeUri: hello-world/
  Handler: app.LambdaHandler
  Runtime: nodejs8.10
  Policies:
  - AWSLambdaExecute  
Run Code Online (Sandbox Code Playgroud)

为此,下面是为 Lambda 函数创建的角色(JSON):

{
  "roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
  "policies": [
    {...}, # AWSLambdaExecute
    {...}, # AWSLambdaSQSQueueExecutionRole
    {....} # AWSLambdaBasicExecutionRole
  ],
  "trustedEntities": [
    "lambda.amazonaws.com"
  ]
}
Run Code Online (Sandbox Code Playgroud)

这个 JSON 里有什么trustedEntities

Mat*_*ava 5

可信实体是一组可以承担此角色的实体。如果您通过 SAM 创建函数,则 SAM 创建的角色与您账户中的 Lambda 服务之间将自动创建信任关系,这意味着您的 Lambda 函数可以承担该角色。

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

"trustedEntities": [
    "lambda.amazonaws.com",
    "ec2.amazonaws.com"
  ]
Run Code Online (Sandbox Code Playgroud)

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

如果trustedEntities列表为空,则没有人能够担任该角色。