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

问题描述 投票:0回答:1

我有一个使用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凭证文件以外的地方将这些凭据传递给客户端。我也有错误的完整堆栈跟踪,如果这有用,我也可以发布它。我只是不想最初弄乱这个问题。

python amazon-ses boto3
1个回答
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')
© www.soinside.com 2019 - 2024. All rights reserved.