boto3如何连接不同地区的不同帐户

时间:2017-01-17 16:04:09

标签: boto boto3

我在CN和US两个地区有两个不同的AWS账户,我可以使用boto3连接到不同的区域服务吗?看起来像是跟进代码。

Boto2代码:

sqs = boto.sqs.connect_to_region(
  region, aws_access_key_id=access_key, aws_secret_access_key=secret_key)

Boto3如何做到像boto2

2 个答案:

答案 0 :(得分:3)

一种可能的方法是使用boto Session

from boto3 import Session

# Example: connecting to 'us-east-1' region

session = Session(aws_access_key_id=*****,aws_secret_access_key=****,region_name='us-east-1')
sqs_client = session.client('sqs')
sqs_resource = session.resource('sqs')

答案 1 :(得分:1)

有很多方法可以做到这一点。请参阅credential configuration guide 了解一下。

您可以快速从boto3.Session

获取信息
# use aws credential profile
session = boto3.Session(profile_name='dev')

# Or hardcoded your credentail 
session = boto3.Session(
    aws_access_key_id="****",
    aws_secret_access_key="****",
    region_name="us-east-1"
)

第二种方式是在客户端调用中提供硬编码凭证。注意:您不能使用客户端指定profile_name。

client = boto3.client(
    's3',
    aws_access_key_id="****",
    aws_secret_access_key="****",
    region_name="us-east-1"
)

注意:如果使用STS /临时安全凭证设置EC2实例,则可以像这样检索会话令牌。

sts = boto3.client('sts')
my_token = sts.get_session_token()
s3 = boto3.client(
        's3',
        region_name="us-east-1",
        aws_session_token = my_token
    )