amazon-web-services - Lambda 别名和 CloudFront : The function ARN must reference a specific function version

标签 amazon-web-services aws-lambda amazon-cloudfront

我有一个 Lambda,当使用包含版本(例如 ...:function:MyFunction:123 )的 ARN 引用时,它用作 CloudFront 源请求处理程序。我创建了一个 PROD我想改用版本 123 的别名。

使用 ...:function:MyFunction:PROD ARN 产生以下错误

com.amazonaws.services.cloudfront.model.InvalidLambdaFunctionAssociationException:
The function ARN must reference a specific function version. (The ARN
must end with the version number.) ARN: 
...:function:MyFunction:PROD (Service: AmazonCloudFront; Status Code:
400; Error Code: InvalidLambdaFunctionAssociation; Request ID:
d407f350-bc7f-11e9-8498-e7f23762c03e)

使用 ...:function:MyFunction 完全删除根据文档应该最新的版本(即 $LATEST )或 LATEST对于版本都失败并出现相同的错误。

我发现的所有文档都表明这应该有效,所以我不确定我在这里搞砸了什么。我创建的 IAM 角色的权限可能有问题吗?

最佳答案

我必须提前为写出您可能不希望的答案而道歉,但根据 AWS,不幸的是,目前无法让 CloudFront 指向 $LATEST或使用 Labmda@Edge 时函数的特定别名。
根据 AWS 官方文档(在 https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_LambdaFunctionAssociation.html 上的 LambdaFunctionARN 下找到):

You must specify the ARN of a function version; you can't specify a Lambda alias or $LATEST.


如果以下是您的选择并且也可以满足您的需求,我们通常在我所在的公司所做的事情(不仅是在此问题的上下文中讨论的原因)同时拥有 CloudFront 分发版和在同一 CloudFormation 堆栈下定义的 Lambda 函数(在我们的例子中,使用 Serverless 框架进行管理)。这样,为服务于特定环境(例如生产)的堆栈部署更改会创建新版本的 Lambda 函数并自动更新与其关联的 CloudFront 分配。
共享以防万一它有望作为替代解决方案。

关于amazon-web-services - Lambda 别名和 CloudFront : The function ARN must reference a specific function version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57453934/

相关文章:

amazon-web-services - Amazon S3 复制对象权限

amazon-web-services - 如何使用 Namecheap 和 AWS Cloudfront 创建子域?

http - 如何为云端设置缓存 header 以便 Google Pagespeed 识别它?

amazon-web-services - 使用 Amazon Connect 将语音消息保存在 aws s3 存储桶中

security - 阻止 Elastic Load Balancer 泄露内部私有(private) IP

node.js - AWS Lambda 不独立运行

amazon-web-services - AWS Lambda 不从 API 网关读取查询参数

json - 离线 : Failure: package./home/denzilgupta/serverless-testing/.webpack/service/services/trader/package.json 中不存在 json

java - 如何在 AWS Lambda 中加载本地库?

amazon-web-services - AWS Cloudformation 定义 Cloudfront 的安全策略