将aws凭据传递给amazon客户端构造函数时,“TypeError:expect string,tuple found”

时间:2015-09-11 17:39:52

标签: python amazon-ses boto3

我有一个使用boto3调用Amazon SES api的python脚本。当我创建像client = boto3.client('ses')这样的客户端并允许aws凭据来自~/.aws/credentials时,它可以工作,但我想以某种方式将aws_access_key_idaws_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凭证文件以外的地方传递给客户端。我也有错误的完整堆栈跟踪,如果这有用,我也可以发布它。我只是不想最初弄乱这个问题。

1 个答案:

答案 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')