gpt4 book ai didi

amazon-web-services - 附加/添加到传递给 cloudformation 的用户数据?

转载 作者:行者123 更新时间:2023-12-03 07:28:40 24 4
gpt4 key购买 nike

我有一些当前由独立 EC2 实例使用的用户数据脚本。我希望能够将它们与 cloudformation 一起使用,并包括对“cfn-”帮助程序脚本的调用,以向 cloudformation 堆栈发出进度信号。本质上,我希望能够将一些数据添加到 userdata 脚本中,并向其中附加一些数据。为此,我计划采用现有脚本并使用 sed 删除前导的 shebang/script 行,并将稍作修改的脚本作为参数传递到 cloudformation 中。该脚本在作为参数传递之前需要进行 Base64 编码。我进行base64编码,然后根据4096字节大小(参数大小限制)进行分割。我的 cloudformation 模板有 4 个“userdata”参数字段,我可以将数据传递到其中。目前这适用于现有脚本:

"UserData" : { "Fn::Join" : [ "", [ { "Ref" : "UserData" }, { "Ref" : "UserData2" }, { "Ref" : "UserData3" }, { "Ref" : "UserData4" }]]},

注意:我不必在此处使用 Base64 内部函数,因为各个参数已经进行了 Base64 编码。

我一直在尝试这个,但我收到一个错误(进一步显示):

        "UserData" : {
"Fn::Join": [
"", [
{ "Fn::Base64":
{ "Fn::Join": [
"", [
"#!/bin/bash\n",
{"Fn::Join": ["", ["AWS_REGION=",{ "Ref" : "AWS::Region" },"\n"]]},
{"Fn::Join": ["", ["STACKNAME=",{ "Ref" : "AWS::StackName" },"\n"]]},
"LAUNCHCONFIG=LaunchConfig\n",
"# # Signalling cloudformation\n",
{"Fn::Join": ["", ["/opt/aws/bin/cfn-init -v --stack ",{ "Ref" : "AWS::StackName" }," --resource LaunchConfig --region ",{ "Ref" : "AWS::Region" },"\n"]]},
]
]}
},
{ "Ref" : "UserData" },
{ "Ref" : "UserData2" },
{ "Ref" : "UserData3" },
{ "Ref" : "UserData4" },
{ "Fn::Base64":
{ "Fn::Join": [
"", [
{"Fn::Join": ["", ["/opt/aws/bin/cfn-signal -e $? --stack ",{ "Ref" : "AWS::StackName" }," --resource AutoScalingGroup --region ",{ "Ref" : "AWS::Region" },"\n"]]},
]
]}
}
]
]
},

收到的错误是:

UserData 似乎不是 base64 编码(服务:AmazonAutoScaling;状态代码:400;错误代码:ValidationError

我想避免需要提前知道适当参数的情况 - 从而生成一个新的用户数据脚本,其中包括可以作为参数传递的详细信息 - 因为我想避免生成自定义用户数据文件专门与 cloudformation 一起使用。

我为四个“userdata”参数传入了空值,因此看来连接中的前导和尾随元素并未经过 Base64 编码。我很感激对此的任何见解,或者我如何完成我所描述的事情。

最佳答案

我通常会看到:

    "UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[

尝试将 base64 转换保持在最外层,而内层脚本被编码。

关于amazon-web-services - 附加/添加到传递给 cloudformation 的用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com