我正在尝试在Amazon提供的NAT AMI中编写一个userdata脚本。该userdata脚本从未开始执行,当我查看日志时,发现在处存在失败。
Mar 10 21:34:13 cloud-init[2290]: util.py[DEBUG]: Failed running /var/lib/cloud/instance/scripts/part-001 [1]
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/cloudinit/util.py", line 638, in runparts
subp([exe_path], capture=False, shell=True)
File "/usr/lib/python2.6/site-packages/cloudinit/util.py", line 1529, in subp
cmd=args)
ProcessExecutionError: Unexpected error while running command.
Command: ['/var/lib/cloud/instance/scripts/part-001']
Exit code: 1
Reason: -
Stdout: ''
Stderr: ''
我在这个相关的StackOverflow问题中发现,有一个用户通过在模板的UserData
部分使用#!/bin/sh
而不是#!/bin/sh -e -v
来解决了这个问题,但是这个问题似乎没有明确的解决方案。
我尝试过只使用#!/bin/bash
、#!/bin/bash -xe
或完全删除这行代码。但我仍然遇到了那个错误。
是否有人曾经遇到过Amazon提供的NAT AMI的这个问题,如果是,我该如何解决这个问题?
我的UserData
看起来像这样:
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash\n",
"sudo yum update -y aws-cfn-bootstrap\n",
"# Install the files and packages and run the commands from the metadata\n",
"sudo /opt/aws/bin/cfn-init -v --access-key ", { "Ref" : "IAMUserAccessKey" }, " --secret-key ", { "Ref" : "SecretAccessKey" },
" --stack ", { "Ref" : "AWS::StackName" },
" --resource NAT2 ",
" --configsets config ",
" --region ", { "Ref" : "AWS::Region" }, "\n"
]]}}