授予用户对 Lambda 函数的访问权限 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

授予用户对 Lambda 函数的访问权限

使用基于身份的策略允许用户、用户组或角色对 Lambda 函数执行操作。

注意

对于定义为容器映像的函数,必须在 Amazon Elastic container Registry(Amazon ECR)中配置访问映像的用户权限。有关示例,请参阅 Amazon ECR 存储库策略

以下显示具有有限范围的权限策略示例。该策略允许用户创建和管理名称前带指定前缀 (intern-) 并用指定执行角色配置的 Lambda 函数。

例 函数开发策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyPermissions", "Effect": "Allow", "Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "DevelopFunctions", "Effect": "Allow", "NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*" }, { "Sid": "DevelopEventSourceMappings", "Effect": "Allow", "Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } } }, { "Sid": "PassExecutionRole", "Effect": "Allow", "Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role" }, { "Sid": "ViewLogs", "Effect": "Allow", "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*" } ] }

策略中的权限基于它们所支持的资源和条件组织成语句。

  • ReadOnlyPermissions – 当您浏览和查看函数时,Lambda 控制台使用这些权限。它们不支持资源模式或条件。

    "Action": [ "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "iam:ListRoles" ], "Resource": "*"
  • DevelopFunctions:使用任何对前缀为 intern- 的函数执行的 Lambda 操作,但 AddPermissionPutFunctionConcurrency 除外。AddPermission 修改函数上基于资源的策略并可能影响安全性。PutFunctionConcurrency 保留函数的扩展容量,并可以从其他函数取得容量。

    "NotAction": [ "lambda:AddPermission", "lambda:PutFunctionConcurrency" ], "Resource": "arn:aws:lambda:*:*:function:intern-*"
  • DevelopEventSourceMappings – 管理前缀为 intern- 的函数的事件源映射。虽然这些操作在事件源映射上运行,但您可以通过附带条件的函数限制它们。

    "Action": [ "lambda:DeleteEventSourceMapping", "lambda:UpdateEventSourceMapping", "lambda:CreateEventSourceMapping" ], "Resource": "*", "Condition": { "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*" } }
  • PassExecutionRole – 查看并仅传递名为 intern-lambda-execution-role 的角色,该角色必须由具有 IAM 权限的用户创建和管理。当您为函数分配执行角色时,使用 PassRole

    "Action": [ "iam:ListRolePolicies", "iam:ListAttachedRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
  • ViewLogs – 使用 CloudWatch Logs 查看前缀为 intern- 的函数的日志。

    "Action": [ "logs:*" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"

该策略允许用户开始使用 Lambda,而不会将其他用户的资源置于风险之下。它不允许用户配置能被触发或调用其他 Amazon 服务的函数,这需要更广的 IAM 权限。它也不包含对于不支持有限范围策略的服务(如 CloudWatch 和 X-Ray)的权限。将只读策略用于这些服务以便让用户能够访问指标和跟踪数据。

当您为您的函数配置触发器时,需要有权使用调用您的函数的 Amazon 服务。例如,要配置 Amazon S3 触发器,您需要权限来使用管理存储桶通知的 Amazon S3 操作。其中很多权限包含在 AWSLambda_FullAccess 托管策略中。