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

sco*_*ott 6 boto boto3

我在中国和美国两个区域有两个不同的 AWS 账户,我可以使用 boto3 连接到不同区域的服务吗?看起来像后续代码。

波托2代码:

sqs = boto.sqs.connect_to_region(
  region, aws_access_key_id=access_key, aws_secret_access_key=secret_key)
Run Code Online (Sandbox Code Playgroud)

Boto3 如何像 boto2 那样做

moo*_*oot 6

有很多方法可以做到这一点。首先 请参阅凭据配置指南。

您可以从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"
)
Run Code Online (Sandbox Code Playgroud)

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

client = boto3.client(
    's3',
    aws_access_key_id="****",
    aws_secret_access_key="****",
    region_name="us-east-1"
)
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用 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
    )
Run Code Online (Sandbox Code Playgroud)


fra*_*ijo 5

一种可能的方法是使用 botoSession

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')
Run Code Online (Sandbox Code Playgroud)