我正在使用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/