当前位置: 首页 > 知识库问答 >
问题:

Cloudformation部署--参数重写不接受文件解决方案

阮健
2023-03-14

我正在使用代码构建设置管道,并使用云形成包和云形成部署来旋转旋转lambda函数的堆栈。现在我知道,与云形成部署,我们不能使用参数文件与参数覆盖和此功能请求仍然处于开放状态的AWShttps://github.com/aws/aws-cli/issues/2828。所以我试图使用JQ的变通方法,在这个链接中https://github.com/aws/aws-cli/issues/3274#issuecomment-529155262如下所示。

PARAMETERS_FILE="parameters.json" &&  PARAMS=($(jq -r '.Parameters[] | [.ParameterKey, .ParameterValue] | "\(.[0])=\(.[1])"' ${PARAMETERS_FILE})) - aws cloudformation deploy --template-file /codebuild/output/packaged.yaml --region us-east-2 --stack-name InitialSetup --capabilities CAPABILITY_IAM  --parameter-overrides ${PARAMS[@]}

如果通过cli测试,此解决方案工作良好。我还在容器中尝试了这个解决方案,因为buildspec.yaml文件在后台创建了一个运行这些命令的容器,但是codebuild没有执行aws云形成部署步骤并失败。我得到错误"aws:错误:参数-参数-覆盖:预期至少一个参数"。我甚至尝试在外壳脚本中复制两个步骤的解决方案,然后执行它,但我遇到错误"[容器]2020/01/21 09:19:14阶段上下文状态代码:COMMAND_EXECUTION_ERROR消息:执行命令时出错:./test.sh.原因:退出状态255"有人能在这里引导我吗?我的buildspec.yaml文件如下:

''版本:0.2

阶段:安装:运行时版本:java:corretto8命令:

- wget -O jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
- chmod +x ./jq
- cp jq /usr/bin
- jq --version 

pre_build:命令:#-echo"[预构建阶段]

生成:命令:

  - aws cloudformation package --template-file master.yaml --s3-bucket rtestbucket --output-template-file packaged.yaml
  - aws s3 cp ./packaged.yaml s3://rtestbucket/packaged.yaml
  - aws s3 cp s3://rtestbucket/packaged.yaml /codebuild/output

后期生成:命令:

- PARAMETERS_FILE="parameters.json" &&  PARAMS=($(jq -r '.Parameters[] | [.ParameterKey, .ParameterValue] | "\(.[0])=\(.[1])"' ${PARAMETERS_FILE}))
- ls 
- aws cloudformation deploy --template-file /codebuild/output/packaged.yaml --region us-east-2 --stack-name InitialSetup --capabilities CAPABILITY_IAM  --parameter-overrides ${PARAMS[@]}

工件类型:zip文件:-packaged.yaml


共有3个答案

程英资
2023-03-14

通过在shell脚本中执行所有必需的步骤并提供对脚本的访问,我能够解决这个问题。

扶高歌
2023-03-14

表达式${PARAMS[@]}没有返回任何值,这将导致错误aws: error:参数-参数-覆盖:预期至少有一个参数。查看代码并解析,或删除该参数。

慕璞
2023-03-14

CodeBuild buildspec命令没有在bash shell中运行,我认为语法:

${PARAMS[@]}

... 是bash特有的。

根据这里的答案:https://stackoverflow.com/a/44811491/12072431

尝试将命令包装在脚本文件中,并使用shebang指定要使用的shell来执行命令。

 类似资料:
  • 我为“MainWindow.fxml”文件构建了一个相当简单的控制器来处理按钮。我遵循了本教程。我已经在fxml文档中正确设置了fx:id。然而,在编译时,我得到以下错误警告 java: typejava.beans.EventHandler不接受参数 对于生产线 我的完整控制器类如下所示... 感谢任何帮助,提前感谢。

  • 本文向大家介绍jsp之间传参数接受中文有乱码问题解决方法,包括了jsp之间传参数接受中文有乱码问题解决方法的使用技巧和注意事项,需要的朋友参考一下 tomcat 的配置文件 server.xml里面找到: 看看有没有 URIEncoding="UTF-8",没有的话加上试试

  • 我和这里的用户遇到了同样的问题:log4j类型genericopobjectpool不接受参数,但我一直无法找到这个问题的答案。Log4j2在附加到rollingfile时起作用,但此处列出的方法:https://logging.apache.org/log4j/2.x/manual/appenders.html显示错误“GenericObjectPool不接受参数”

  • 我希望为我的2D游戏创造平滑的道路。看着这正是我需要的东西。每一篇文章,甚至在上,都给它一个类型,并用构造函数传递所有控制点和一个。这似乎是过时的,不再接受任何类型参数,没有它,它只能与路径工作。构造函数也不接受控制点列表。 这会产生以下错误:

  • 问题内容: 我已经转换一个到一个通过使用。然后,我尝试将其乘以0.01,但是出现一个错误,提示这是我的代码: 通过阅读其他文章,似乎答案与类型有关。例如,如果将类型设置为Integer,则它将收到类似的错误。我尝试将类型更改为Int,但这似乎无法解决问题。 我也曾尝试设置“海峡”和“pennyCount”作为类型和和的所有组合,和。我的猜测是问题与函数将a转换为an有关。 有人可以帮忙弄清楚问题可