我正在使用AWS API创建一个现场实例。当我尝试以文件格式提供用户数据时,出现错误
" 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编码。
答案 0 :(得分:0)
根据文档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())