【问题标题】:Lambda aliases and CloudFront: The function ARN must reference a specific function versionLambda 别名和 CloudFront:函数 ARN 必须引用特定函数版本
【发布时间】:2019-12-18 14:31:11
【问题描述】:

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

使用 ...: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),使用$LATESTLATEST作为版本都失败并出现相同的错误。

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

【问题讨论】:

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


    【解决方案1】:

    我必须提前为写出您可能不希望得到的答案而道歉,但根据 AWS,不幸的是,目前在使用 Labmda 时无法让 CloudFront 指向 $LATEST 或函数的特定别名@Edge。

    根据官方 AWS 文档(在 https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_LambdaFunctionAssociation.htmlLambdaFunctionARN 下找到):

    您必须指定函数版本的 ARN;您不能指定 Lambda 别名或 $LATEST。

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

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 2023-04-03
      • 2020-09-11
      • 2021-06-01
      • 2021-09-07
      • 2018-09-19
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多