带有文件路径变量的CloudFormation'package'

问题描述 投票:0回答:1

[CloudFormation package命令遍历CloudFormation模板,将本地引用上载到S3,并创建引用S3资源的新模板。 (documentation

所以,如果我有类似的东西:

StatusLambda:
    Type: AWS::Lambda::Function
    Properties: 
      Code: ../main/java/status/target/status-lambda-1.0-SNAPSHOT.jar
      Description: This Lambda function for new messages

package命令将其转换为

StatusLambda:
    Type: AWS::Lambda::Function
    Properties: 
      Code: https://s3.us-east-1.amazonaws.com/bucket/stack/b3dba2bcc4401e10000000000.template
      Description: This Lambda function for new messages

太好了。问题是与我客户的Jenkins构建服务器集成在一起。当我在本地构建和部署时,lambda源位于../main/java/status/target/status-lambda-1.0-SNAPSHOT.jar。自动构建服务器将工件放置在其他位置。

有没有办法我可以对两者使用相同的模板?我可以在构建时以某种方式插入文件路径吗?我曾希望package支持以下内容,但事实并非如此:该命令似乎没有执行任何功能。

StatusLambda:
    Type: AWS::Lambda::Function
    Properties: 
      Code: !Ref LambdaJarPath
      Description: This Lambda function for new messages
amazon-web-services aws-lambda amazon-cloudformation
1个回答
0
投票

解决该问题的一种方法是在执行package命令之前对管道中的lambda模板进行查找和替换处理

例如,您的模板文件可能是

StatusLambda:
    Type: AWS::Lambda::Function
    Properties: 
      Code: <LambdaJarPath>
      Description: This Lambda function for new messages

然后在Jenkins中,您可以执行sed或任何命令以正确的工件路径替换<LambdaJarPath>

© www.soinside.com 2019 - 2024. All rights reserved.