cloudformation windows userdata cfn-init.exe end of line iss



通过添加一些 cfn-init 从 S3 存储桶请求数据。 我相信我对来自powershell的cfn-init.exe调用有语法问题,但似乎找不到位置。 此结构取自 Bootstrapping AWS CloudFormation Windows Stacks AWS 示例。 我也尝试从 AWS cfn-init 文档中的 bash 结构进行调整,但没有成功。

"UserData": {"Fn::Base64": {"Fn::Join": ["n", [
"<powershell>",
...
"cfn-init.exe -v -s", { "Ref" : "AWS::StackName" },
" -r EC2Instance",
"</powershell>"
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config": {
"files" : {
"C:\chef\validator.pem" : {
"source" : "https://s3.amazonaws.com/dtcfstorage/validator.pem",
"authentication" : "s3creds"
}
}
},
"AWS::CloudFormation::Authentication" : {
"s3creds" : {
"type" : "S3",
"roleName" : "awss3chefkeyaccess"
}
}
}
}

cfn-init.exe 正在运行,但当参数传递到新行时出错:

2018/05

/21 15:35:08Z:消息:来自用户脚本的错误:用法:cfn-init.exe[选项] 或者:CFN-init.exe [选项] 或:猫 |cfn-init.exe [选项] -

cfn-init.exe:错误:-s 选项需要一个参数 cloudinittest:"cloudinittest"一词不被识别为 cmdlet、函数、脚本文件或可操作的名称 程序。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 at C:\Windows\TEMP\UserScript.ps1:30 char:1 + 云初始化测试 + ~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (cloudinittest:String( [], CommandNotFoundException + FullQualifiedErrorId : CommandNotFoundException

-r :术语"-r"不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查 名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 at C:\Windows\TEMP\UserScript.ps1:31 char:2 + -r EC2实例 + ~~ + CategoryInfo : ObjectNotFound: (-r:String( [], CommandNotFoundException + FullQualifiedErrorId : CommandNotFoundException

这是因为您已使用顶部的加入。如果您在同一行上键入一些参数,则连接函数的每个参数都将由换行符事件分隔! 因此,您的命令 cfn-init 被解释为:

cfn-init.exe -v -s
stack-name
-r EC2Instance
...

由于该行已断开,因此命令无法正常运行。 因此,您可以通过空格字符加入。您可以尝试将上述内容替换为以下内容:

{"Fn::Join": [" ", ["cfn-init.exe -v -s", {"Ref":"AWS::StackName"},
"-r EC2Instance"]}

相关内容

最新更新