AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Lambda API 权限:操作、资源和条件参考

在设置 访问控制 和编写您可挂载到 IAM 身份的权限策略(基于身份的策略)时,可以使用下表作为参考。该表列出每个 AWS Lambda API 操作,您可授予执行权限的对应操作,您可授予权限的 AWS 资源以及特定 API 操作的条件键。您需要在策略的 Action 字段中指定操作、在策略的 Resource 字段中指定资源值、在策略的 Condition keys 字段中指定条件键。

要指定操作,请在 API 操作名称之前使用 lambda: 前缀 (例如,lambda:CreateFunction)。

注意

下表中 AWS Lambda Invoke API 的权限也可使用基于资源的策略授予。有关更多信息,请参阅 对 AWS Lambda 使用基于资源的策略(Lambda 函数策略)

您可以在 AWS Lambda 策略中使用 AWS 范围的条件键来表达条件。有关 AWS 范围内的键的完整列表,请参阅 IAM 用户指南 中的条件的可用键

AWS Lambda 还针对一组有限的 API 操作提供预定义条件键。例如,您可以:

  • 根据 Lambda 函数 ARN (Amazon 资源名称) 限制对以下操作的访问:

    • CreateEventSourceMapping

    • DeleteEventSourceMapping

    • UpdateEventSourceMapping

    以下是适用此条件的示例策略:

    Copy
    "Version": "2012-10-17", "Statement": [ { "Sid": " DeleteEventSourceMappingPolicy", "Effect": "Allow", "Action": [ "lambda:DeleteEventSourceMapping" ], "Resource": "arn:aws:lambda:region:account-id:event-source-mapping:UUID", "Condition": {"StringEquals": {"lambda:FunctionArn": "arn:aws:lambda:region:account-id:function:function-name}} } ]
  • 根据 AWS 服务委托人限制对以下操作的映射:

    • AddPermission

    • RemovePermission

    以下是适用此条件的示例策略:

    Copy
    "Version": "2012-10-17", "Statement": [ { "Sid": "AddPermissionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name", "Condition": {"StringEquals": {"lambda:Principal": "s3.amazonaws.com"}} } ]

如果看到表右上角处有扩展箭头 (),则您可以在新窗口中打开该表。要关闭窗口,请选择右下角处的关闭按钮 (X)。

AWS Lambda API 和必需的操作权限

API 操作 资源 条件键

API: AddPermission

所需权限: lambda:AddPermission

arn:aws:lambda:region:account-id:function:function-name

lambda:Principal

API: CreateAlias

所需权限: lambda:CreateAlias

arn:aws:lambda:region:account-id:function:function-name

不适用

API: CreateEventSourceMapping

所需权限: lambda:CreateEventSourceMapping

*

lambda:FunctionArn

应将以下权限添加到 Lambda 函数执行角色 (IAM 角色)。

如果您要映射到 Kinesis 流事件源,请使用:

kinesis:DescribeStreams, kinesis:DescribeStream, kinesis:ListStreams, kinesis:GetShardIterator, 和 Kinesis:GetRecords

如果您要映射到 DynamoDB 流事件源,请使用:

dynamodb:DescribeStreams, dynamodb:DescribeStream, dynamodb:ListStreams, dynamodb:GetShardIterator, 和 dynamodb:GetRecords

要在 AWS Lambda 中创建事件源映射,您需要将为其创建事件源映射的现有 Lambda 函数。Lambda 函数的执行角色(IAM 角色)必须具有对将 Lambda 函数映射到的事件源的 API 的访问权限。

arn:aws:kinesis:region:account-id:stream/stream-name

不适用

API: CreateFunction

所需权限: lambda:CreateFunction

arn:aws:lambda:region:account-id: function:function-name

不适用

iam:PassRole

创建函数的用户必须具有对 IAM 角色(用户在创建 Lambda 函数时会将该角色指定为执行角色)执行此操作的权限。这是 AWS Lambda 为执行 Lambda 函数而代入的角色。用户必须具有将角色传递到 AWS Lambda 的权限。

arn:aws:iam::account-id:role/role-name

不适用

ec2:DescribeSecurityGroups

只有当创建 Lambda 函数时指定 VPC 配置信息的情况下才需要。

*

不适用

ec2:DescribeSubnets

只有当创建 Lambda 函数时指定 VPC 配置信息的情况下才需要。

*

不适用

s3:GetObject

只有当您已将部署程序包存储在 Amazon S3 中并且在创建 Lambda 函数时指定 S3 存储桶和对象密钥的情况下才需要。

arn:aws:s3:::bucket-name/key-name

不适用

API: DeleteAlias

所需权限: lambda:DeleteAlias

arn:aws:lambda:region:account-id:function:function-name

不适用

API: DeleteEventSourceMapping

所需权限: lambda:DeleteEventSourceMapping

arn:aws:lambda:region:account-id:event-source-mapping:UUID

lambda:FunctionArn

API: DeleteFunction

所需权限: lambda:DeleteFunction

arn:aws:lambda:region:account-id: function:function-name

不适用

API: GetAccountSettings

所需权限: lambda:GetAccountSettings

*

不适用

API: GetAlias

所需权限: lambda:GetAlias

arn:aws:lambda:region:account-id:function:function-name

不适用

API: GetEventSourceMapping

所需权限: lambda:GetEventSourceMapping

*

不适用

API: GetFunction

所需权限: lambda:GetFunction

arn:aws:lambda:region:account-id: function:function-name

不适用

API: GetFunctionConfiguration

所需权限: lambda:GetFunctionConfiguration

arn:aws:lambda:region:account-id:function:function-name

不适用

API: GetPolicy

所需权限: lambda:GetPolicy

arn:aws:lambda:region:account-id:function:function-name

不适用

API: Invoke

所需权限: lambda:InvokeFunction

arn:aws:lambda:region:account-id: function:function-name

不适用

API: ListAliases

所需权限: lambda:ListAliases

arn:aws:lambda:region:account-id:function:function-name

不适用

API: ListEventSourceMappings

所需权限: lambda:ListEventSourceMappings

*

不适用

API: ListFunctions

所需权限: lambda:ListFunctions

*

不适用

API: ListTags

所需权限: lambda:ListTags

*

不适用

API: ListVersionsByFunction

所需权限: lambda:ListVersionsByFunction

arn:aws:lambda:region:account-id:function:function-name

不适用

API: PublishVersion

所需权限: lambda:PublishVersion

arn:aws:lambda:region:account-id:function:function-name

不适用

API: RemovePermission

所需权限: lambda:RemovePermission

arn:aws:lambda:region:account-id:function:function-name

lambda:Principal

API: TagResource

所需权限: lambda:TagResource

*

不适用

API: UntagResource

所需权限: lambda:UntagResource

*

不适用

API: UpdateAlias

所需权限: lambda:UpdateAlias

arn:aws:lambda:region:account-id:function:function-name

不适用

API: UpdateEventSourceMapping

所需权限: lambda:UpdateEventSourceMapping

arn:aws:lambda:region:account-id:event-source-mapping:UUID

lambda:FunctionArn

kinesis:DescribeStreams (needed by function role, not caller)

arn:aws:kinesis:region:account-id:stream/stream-name

不适用

API: UpdateFunctionCode

所需权限: lambda:UpdateFunctionCode

arn:aws:lambda:region:account-id:function:function-name

不适用

s3:GetObject

只有当您在创建 Lambda 函数时指定 S3 存储桶和对象密钥、部署程序包或密钥的情况下才需要。

arn:aws:s3:::bucket-name/key-name

不适用

API: UpdateFunctionConfiguration

所需权限: lambda:UpdateFunctionConfiguration

arn:aws:lambda:region:account-id:function:function-name

不适用

iam:PassRole

创建函数的用户必须具有对 IAM 角色(用户在更新 Lambda 函数时会将该角色指定为执行角色)执行此操作的权限。这是 AWS Lambda 为执行 Lambda 函数而代入的角色。用户必须具有将角色传递到 AWS Lambda 的权限。

arn:aws:iam::account-id: role/execution-role-name

不适用

ec2:DescribeSecurityGroups

只有当创建 Lambda 函数时指定 VPC 配置信息的情况下才需要。

*

不适用

ec2:DescribeSubnets

只有当创建 Lambda 函数时指定 VPC 配置信息的情况下才需要。

*

不适用