EC2& boto3 - UserData未执行

时间:2018-01-17 22:05:24

标签: python amazon-ec2 boto3

当我使用UserData创建和实例时,我这样做:

_i = ec2.create_instances(
  ImageId=my_ami,
  MinCount=1, 
  MaxCount=1,
  KeyName=my_key,
  InstanceType="t2.small",
  UserData=u_data)

然后启动此实例。我ssh到实例,我的UserData文件似乎没有被执行。我使用boto3.set_stream_logger('botocore')在控制台中记录了所有内容,并检查了UserData参数的base64编码。它看起来像这样:

#!/bin/bash
echo "Hello World" >> /tmp/data.txt

我可以将它复制到ec2实例上的shell文件中,使其可执行,并执行它就好了。我真的很困惑为什么在创建实例时没有应用我的UserData参数。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

这很傻,但我发现了问题。当我创建一个字符串变量来保存UserData时,我在shebang之前的文件顶部有一个换行符。 shebang必须是UserData文件的第一行。每天都在学习!

希望这可以帮助有人在路上。

答案 1 :(得分:0)

希望这对其他人有所帮助。

u_data = '''#!/bin/bash
    echo "Hello World" >> /tmp/data.txt'''

_i = ec2.create_instances(
  ImageId=my_ami,
  MinCount=1, 
  MaxCount=1,
  KeyName=my_key,
  InstanceType="t2.small",
  UserData=u_data) # the script we wrote above