如何解决在CloudFormation中,如何在Events :: Rule
我正在尝试按时间表触发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
解决方法
您的错误出现在您共享的配置的最后一行。为了获取资源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以获得更多详细信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。