gpt4 book ai didi

python - 调用 client.request_spot_instances 方法时抛出 AWS Boto3 BASE64 编码错误

转载 作者:行者123 更新时间:2023-12-03 18:43:54 25 4
gpt4 key购买 nike

我正在尝试使用 boto3(Environment Python 3.5,Windows 7)提交对 EC2 SPOT 实例的请求。
我需要通过用户数据 用于运行初始脚本的参数。

我得到的错误是
文件“C:\Users...\Python\Python35\lib\site-packages\botocore\client.py”,第 222 行,在 _make_api_call
引发 ClientError(parsed_response, operation_name)
botocore.exceptions.ClientError:发生错误(InvalidParameterValue)时
调用
RequestSpotInstances 操作:用户数据的 BASE64 编码无效代码

我正在关注此文档
https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.request_spot_instances

如果我去掉 UserData 参数 - 一切正常。

我尝试了不同的方法来传递参数,但最终还是出现了相同的.类似错误。

Boto 3 脚本

    client = session.client('ec2')

myparam = str(base64.b64encode(bytes('yum install -y php', 'utf-8')))

response = client.request_spot_instances(
SpotPrice='0.4',
InstanceCount=1,
Type='one-time',
LaunchSpecification={
'ImageId': 'ami-xxxxxx',
'KeyName': 'xxxxx',
'InstanceType': 't1.micro',
'UserData': myparam,
'Monitoring': {
'Enabled': True
}
})

最佳答案

我认为您不应该将 base64 字符串转换为 str .你在使用 Python 3 吗?

代替:

myparam = str(base64.b64encode(bytes('yum install -y php', 'utf-8')))

经过:
myparam = base64.b64encode(b'yum install -y php').decode("ascii")

关于python - 调用 client.request_spot_instances 方法时抛出 AWS Boto3 BASE64 编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com