【问题标题】:In CloudFormation, how do I target a Lambda alias in Events::Rule在 CloudFormation 中,如何在 Events::Rule 中定位 Lambda 别名
【发布时间】:2020-12-28 10:47:06
【问题描述】:

我正在尝试按计划触发 Lambda:alias(这里的别名是关键)。以下代码错误了

"SampleLambdaLiveAlias 无效。原因:如果 Arn 不在 正确的格式。 (服务:AmazonCloudWatchEvents;状态代码:400; 错误代码:ValidationException;"

如何在 CloudFormation 中正确定位 lambda:alias?我试过!Ref!Sub 和逻辑名称。

我检索最新 lambda 版本的自定义资源方法似乎是设置“实时”别名的必要弊端,因为 AWS 维护旧 lambda 版本,即使在您删除 lambda 和堆栈并且需要有效版本之后一个新的别名。如果有人知道解决该问题的更优雅的方法,请参阅:how-to-use-sam-deploy-to-get-a-lambda-with-autopublishalias-and-additional-alises

SampleLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
        FunctionName: SampleLambda
        AutoPublishAlias: staging
        CodeUri: src/
        Handler: SampleLambda.handler
        MemorySize: 512
        Runtime: nodejs12.x
        Role: !GetAtt SampleLambdaRole.Arn
SampleLambdaLiveAlias:
    Type: AWS::Lambda::Alias
    Properties:
        FunctionName: !Ref SampleLambdaFunction
        FunctionVersion: !GetAtt SampleLambdaGetMaxVersionFunction.version
        Name: live
SampleLambdaFunctionScheduledEvent:
    Type: AWS::Events::Rule
    Properties:
        State: ENABLED
        ScheduleExpression: rate(1 minute) # same as cron(0/1 * * * ? *)
        Description: Run SampleLambdaFunction once every 5 minutes.
        Targets:
        - Id: EventSampleLambda
            Arn: SampleLambdaLiveAlias

【问题讨论】:

  • !Ref 应该足够了。你能提供详细的错误信息吗?您的Targets 中也存在缩进问题。

标签: aws-lambda amazon-cloudformation aws-sam


【解决方案1】:

您的错误出现在您共享的配置的最后一行。为了获取资源 ARN,您需要使用 Ref 内在函数,例如 !Ref SampleLambdaLiveAlias:

SampleLambdaFunctionScheduledEvent:
    Type: AWS::Events::Rule
    Properties:
        State: ENABLED
        ScheduleExpression: rate(1 minute) # same as cron(0/1 * * * ? *)
        Description: Run SampleLambdaFunction once every 5 minutes.
        Targets:
        - Id: EventSampleLambda
            Arn: !Ref SampleLambdaLiveAlias

请注意,Ref 内部函数可能会针对不同类型的资源返回不同的内容。对于 Lambda 别名,它返回 ARN,正是您需要的。

您可以查看official documentation了解更多详情。

【讨论】:

  • 感谢您的回答并在我的编辑器中撤消,我现在可以看到我的阅读障碍正在好转,我正在尝试使用$Ref insead of !Ref:P 干杯!跨度>
  • 很高兴为您提供帮助。如果它帮助您解决问题,请接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 2020-07-15
  • 1970-01-01
  • 2015-12-03
  • 2017-05-14
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多