Lambda 的最终角色定义中的可信实体是什么?
What is trusted entities in resulting role definition of Lambda?
下面是SAM模板,
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello-world/
Handler: app.LambdaHandler
Runtime: nodejs8.10
Policies:
- AWSLambdaExecute
为此,下面是为 Lambda 函数创建的角色(JSON):
{
"roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
"policies": [
{...}, # AWSLambdaExecute
{...}, # AWSLambdaSQSQueueExecutionRole
{....} # AWSLambdaBasicExecutionRole
],
"trustedEntities": [
"lambda.amazonaws.com"
]
}
这个JSON中的trustedEntities
是什么?
可信实体是一组可以承担此角色的实体。如果您是通过 SAM 创建函数,SAM 创建的角色与您账户中的 Lambda 服务之间的信任关系将自动创建,这反过来意味着您的 Lambda 函数可以承担此角色。
如果您想将此角色分配给 EC2 实例,您将无法这样做,因为默认情况下您的角色不信任 EC2 服务。您需要修改信任关系并包括 EC2 服务。像这样:
"trustedEntities": [
"lambda.amazonaws.com",
"ec2.amazonaws.com"
]
如果您想创建一个可以跨账户承担的角色,这也很有用,您可以将其他账户指定为受信任的实体,以便其他账户能够承担该角色。
如果 trustedEntities
列表为空,则没有人能够担任该角色。
下面是SAM模板,
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello-world/
Handler: app.LambdaHandler
Runtime: nodejs8.10
Policies:
- AWSLambdaExecute
为此,下面是为 Lambda 函数创建的角色(JSON):
{
"roleName": "somestack-HelloWorldFunctionRole-AAAAAAAA",
"policies": [
{...}, # AWSLambdaExecute
{...}, # AWSLambdaSQSQueueExecutionRole
{....} # AWSLambdaBasicExecutionRole
],
"trustedEntities": [
"lambda.amazonaws.com"
]
}
这个JSON中的trustedEntities
是什么?
可信实体是一组可以承担此角色的实体。如果您是通过 SAM 创建函数,SAM 创建的角色与您账户中的 Lambda 服务之间的信任关系将自动创建,这反过来意味着您的 Lambda 函数可以承担此角色。
如果您想将此角色分配给 EC2 实例,您将无法这样做,因为默认情况下您的角色不信任 EC2 服务。您需要修改信任关系并包括 EC2 服务。像这样:
"trustedEntities": [
"lambda.amazonaws.com",
"ec2.amazonaws.com"
]
如果您想创建一个可以跨账户承担的角色,这也很有用,您可以将其他账户指定为受信任的实体,以便其他账户能够承担该角色。
如果 trustedEntities
列表为空,则没有人能够担任该角色。