【问题标题】:EC2 & boto3 - UserData not executingEC2 & boto3 - 用户数据未执行
【发布时间】:2021-05-17 10:25:05
【问题描述】:

当我使用 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 参数。非常感谢任何帮助。

【问题讨论】:

    标签: python amazon-ec2 boto3


    【解决方案1】:

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

    希望这对以后的人有所帮助。

    【讨论】:

    • 并且您在问题中发布了用户数据,没有空行
    【解决方案2】:

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

    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
    
    
    
    
    
        
    

    【讨论】:

    • 一些解释会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 2022-10-07
    • 2018-08-02
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多