每个别名都有唯一的 ARN。别名只能指向函数版本,而不能指向其他别名。可以更新别名以便指向函数的新版本。
事件源(Amazon Simple Storage Service (Amazon S3) 等)会调用您的 Lambda 函数。这些事件源维护一个映射,该映射标识在发生事件时要调用的函数。如果在映射配置中指定 Lambda 函数别名,则当函数版本发生更改时,您不需要更新映射。有关更多信息,请参阅Lambda 如何处理来自基于流和队列的事件源的记录。
在资源策略中,您可以为事件源授予权限,以便使用您的 Lambda 函数。如果在策略中指定别名 ARN,则当函数版本发生更改时,您不需要更新策略。
资源策略
您可以使用基于资源的策略授予服务、资源或账户对您的函数的访问权限。该权限的范围取决于您要将其应用于别名、版本还是整个函数。例如,如果使用别名(如 helloworld:PROD
),该权限将允许您使用别名 ARN (helloworld
) 调用 helloworld:PROD
函数。
如果您尝试在不指定别名或具体版本的情况下调用该函数,则会出现权限错误。即使您尝试直接调用与别名关联的函数版本,也会发生此权限错误。
例如,以下 AWS CLI 命令会向 Amazon S3 授予在 Amazon S3 代表 amzn-s3-demo-bucket
执行操作时调用 helloworld
函数的 PROD 别名的权限。
aws lambda add-permission \ --function-name helloworld \ --qualifier PROD \ --statement-id 1 \ --principal s3.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::amzn-s3-demo-bucket \ --source-account 123456789012
有关在策略中使用资源名称的更多信息,请参阅微调策略的“资源和条件”部分。