Python AWS boto3请求\现场\车队传递jinja模板作为用户数据-用户数据的BASE64编码无效

Python AWS boto3请求\现场\车队传递jinja模板作为用户数据-用户数据的BASE64编码无效,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,我正在尝试创建AWS request spot fleet,并将jinja模板指定为用户数据并传递给实例,我遵循以下文档: 查找-request\u spot\u fleet(**kwargs): 'UserData':'string', UserData(string)——要使实例可用的用户数据。 如果您使用的是AWS SDK或命令行工具,则使用Base64编码 为您执行,您可以从文件中加载文本。否则,, 您必须提供Base64编码文本 错误: self.output_templat

我正在尝试创建
AWS request spot fleet
,并将
jinja
模板指定为用户数据并传递给实例,我遵循以下文档:

查找-
request\u spot\u fleet(**kwargs)

'UserData':'string',

UserData(string)——要使实例可用的用户数据。 如果您使用的是AWS SDK或命令行工具,则使用Base64编码 为您执行,您可以从文件中加载文本。否则,, 您必须提供Base64编码文本

错误:

    self.output_template = base64.b64encode(output_template).decode("ascii")
    File "/usr/lib/python3.5/base64.py", line 59, in b64encode
    encoded = binascii.b2a_base64(s)[:-1]
    TypeError: a bytes-like object is required, not 'str'
如果我按原样传递
jinja
模板:

self.output\u template=output\u template

com.amazonaws.services.ec2.model.AmazonEC2Exception: 
Invalid BASE64 encoding of user data 
(Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue)
如果我将UserData更改为字符串,则一切正常:

self.output_template = base64.b64encode(b'test').decode("ascii")
'UserData': self.output_template,

有什么建议吗?

Python 3明确要求您指定字节和字符串对象,以防止代码页编码问题

# this line only works in python2 
self.output_template = base64.b64encode(output_template).decode("ascii")

# You must convert str to bytes in Python3 
self.output_template = base64.b64encode(output_template.encode("ascii")).decode("ascii")

注意:提问时请记住指定python版本。

python 3明确要求您指定字节和字符串对象,以防止代码页编码问题

# this line only works in python2 
self.output_template = base64.b64encode(output_template).decode("ascii")

# You must convert str to bytes in Python3 
self.output_template = base64.b64encode(output_template.encode("ascii")).decode("ascii")

注意:提问时请记住指定python版本。

文档清楚地说明,如果您使用AWS SDK,并且确实使用AWS SDK(Boto3),则会为您执行
Base64编码。那你为什么要传递一个base64编码的字符串,只传递一个字符串。不确定我如何传递jinja模板,如果我这样做
self.output\u template=output\u template
,我在aws控制台
com.amazonaws.services.ec2.model.amazonec2上看到一个错误异常:用户数据的base64编码无效(服务:AmazonEC2;状态代码:400;错误代码:InvalidParameterValue)如果您使用AWS SDK且确实使用AWS SDK(Boto3),文档中明确说明将为您执行Base64编码。那么,为什么要传递base64编码的字符串,只传递一个字符串。我不确定如何传递jinja模板,如果我这样做
self.output\u template=output\u template
,我在aws控制台
com.amazonaws.services.ec2.model.amazonec2异常:用户数据的base64编码无效(服务:AmazonEC2;状态代码:400;错误代码:InvalidParameterValue)