AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

版本控制、别名和资源策略

利用版本控制和别名,您可以使用各种 ARN 访问 Lambda 函数。例如,考虑以下情形。

例如,您可以使用以下两种 ARN 之一调用 helloworld 函数版本 1:

  • 使用限定函数 ARN,如下所示。

    arn:aws:lambda:aws-region:acct-id:function:helloworld:1
  • 使用 BETA 别名 ARN,如下所示。

    arn:aws:lambda:aws-region:acct-id:function:helloworld:BETA

当您使用基于资源的策略为您的函数提供服务、资源或账户访问权限时,该权限的范围取决于您是将其应用于版本、别名还是函数。

  • 如果使用限定函数名称 (如 helloworld:1),该权限 在使用限定 ARN 调用 helloworld 函数版本 1 时有效 (使用任何其他 ARN 将导致权限错误)。

  • 如果使用别名 (如 helloworld:BETA),该权限仅在使用 BETA 别名 ARN 调用 helloworld 函数时有效 (使用任何其他 ARN 将导致权限错误,包括别名指向的函数版本 ARN)。

  • 如果您使用非限定的函数名称(例如 helloworld),则权限仅在使用非限定的函数 ARN 调用 helloworld 函数时有效(使用任何其他 ARN 将导致权限错误)。

    注意

    请注意,即使访问策略仅作用于非限定的 ARN,调用的 Lambda 函数的代码和配置仍来自函数版本 $LATEST。非限定的函数 ARN 映射到 $LATEST 版本,但您添加的权限是 ARN 特定的。

  • 如果通过 $LATEST 版本 (helloworld:$LATEST) 使用限定函数名称,该权限 在使用限定 ARN 调用 helloworld 函数版本 $LATEST 时有效 (使用非限定 ARN 将导致权限错误)。

例如,以下 AWS CLI 命令向 Amazon S3 授予调用 helloworld Lambda 函数的 PROD 别名的权限(请注意,--qualifier 参数指定别名名称)。

aws lambda add-permission --function-name helloworld \ --qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::examplebucket --source-account 111111111111

在此情况下,Amazon S3 现在可以调用 PROD 别名,然后 AWS Lambda 可执行 PROD 别名指向的 helloworld Lambda 函数版本。您必须在 S3 存储桶的通知配置中使用 PROD 别名 ARN 才能使其生效。

有关如何处理 Amazon S3 事件的信息,请参阅 配合使用 AWS Lambda 和 Amazon S3