【问题标题】:request_spot_instance API is not accepting user data in file formatrequest_spot_instance API 不接受文件格式的用户数据
【发布时间】:2018-01-27 15:51:03
【问题描述】:

我正在使用 AWS API 创建一个 Spot 实例。当我尝试以文件格式提供用户数据时,出现错误

“botocore.exceptions.ClientError:调用RequestSpotInstances操作时发生错误(InvalidParameterValue):用户数据的BASE64编码无效

session = boto3.Session()
client = session.client('ec2', region_name = 'us-west-2')

response = client.request_spot_instances(
    InstanceCount=1,
    LaunchSpecification={

        'ImageId': 'ami-012345',
        'InstanceType': 't2.medium',
        'Placement': {'AvailabilityZone': 'us-west-2a'},
        'SecurityGroupIds': ['sg-012345'],
        'SubnetId': 'subnet-012345',
    'UserData': 'file://my_script0.txt'
    },
    SpotPrice='0.0139',
    Type='persistent',
    InstanceInterruptionBehavior = 'stop'

)

根据 AWS 文档,如果我们想将用户数据作为文件传递,我们可以通过在文件名前加上“file://”来实现。 但似乎这个 API 期望整个文件内容首先进行 base64 编码。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-sdk aws-cli


    【解决方案1】:

    根据文档http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html,base64 仅用于 API 调用,不适用于 CLI。

    因此,当我传递文件的 base64 编码数据时,API 可以正常工作。

    file  = open("my_script0.txt", 'r')
    encoded_data = base64.encodestring(file.read())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-15
      • 2019-11-06
      • 2023-01-30
      • 2015-03-31
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 2022-08-15
      相关资源
      最近更新 更多