我有一个使用boto3调用Amazon SES api的python脚本。当我创建像client = boto3.client('ses')
这样的客户端并允许aws凭据来自~/.aws/credentials
时,它可以工作,但我想以某种方式将aws_access_key_id
和aws_secret_access_key
传递给构造函数。
我以为我找到了某个地方,说这样做是可以接受的
client = boto3.client(
'ses',
aws_access_key_id=kwargs['aws_access_key_id'],
aws_secret_access_key=kwargs['aws_secret_access_key'],
region_name=kwargs['region_name']
)
但是当我尝试发送电子邮件时,它会在TypeError: sequence item 0: expected string, tuple found
中尝试return '/'.join(scope)
时告诉我botocore/auth.py (line 276)
。
我知道这是一个很长的镜头,但我希望有人知道如何将这些凭据从aws凭证文件以外的地方传递给客户端。我也有错误的完整堆栈跟踪,如果这有用,我也可以发布它。我只是不想最初弄乱这个问题。
答案 0 :(得分:2)
您需要在其他地方配置连接信息,然后使用以下方式进行连接:
client = boto3.client('ses', AWS_REGION)
另一种方法,使用Session
可以这样做:
from boto3.session import Session
# create boto session
session = Session(
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
region_name=settings.AWS_REGION
)
# make connection
client =session.client('s3')