我正在使用boto3会话将文件上传到s3。我可以使用~/.aws/credentials将文件上传到s3,但是如果我尝试按here所述创建会话,则会收到禁止的错误。基本上,我无法使用自己的凭据上传。代码是:

        if env == 'qa':
         credentials = getQaConfig(data)
         ACCESS_KEY = credentials['AccessKeyId']
         SECRET_KEY = credentials['SecretAccessKey']
        elif env == 'prod':
         credentials = getProdConfig(data)
         ACCESS_KEY = credentials['AccessKeyId']
         SECRET_KEY = credentials['SecretAccessKey']
       elif env == 'dev':
        credentials = getDevConfig(data)
        ACCESS_KEY = credentials['AccessKeyId']
        SECRET_KEY = credentials['SecretAccessKey']

      s3 = boto.Session(
           aws_access_key_id=ACCESS_KEY,
           aws_secret_access_key=SECRET_KEY
           ).resource('s3')


即使没有从环境中获取访问密钥并直接对其进行硬编码,如下所示,我也会遇到错误。

      s3 = boto.Session(
           aws_access_key_id='my_Actual_key',
           aws_secret_access_key='mey actual_Secret
           ).resource('s3')

最佳答案

使用boto3设置S3客户端的实际方法如下:

client = boto3.client(
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
)


或通过会议

session = boto3.Session(
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
)


无法建立会话的可能原因之一可能是您的账户为AWS设置了SSO(单一登录),并且您需要解析令牌以及剩余的凭证

关于python - boto3 session 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47643236/

10-12 22:21