簡體   English   中英

使用 boto3 從主帳戶列出子帳戶的資源?

[英]List resource for child account from master account using boto3?

我正在使用 python 和 boto3 來列出我的組織擁有的資源。 我列出了我的主帳戶中的資源沒有問題,但我還需要列出子帳戶中的資源。 我可以獲得兒童帳戶 ID,但僅此而已。

有什么幫助嗎?

您將需要訪問屬於子帳戶的一組憑據。

訪問和管理組織中的成員賬戶 - AWS Organizations

當您使用 AWS Organizations 控制台創建成員賬戶時,AWS Organizations 會自動在該賬戶中創建 IAM 角色 此角色在成員賬戶中具有完全管理權限。 該角色還配置為授予對組織主賬戶的訪問權限。

要使用此角色訪問成員賬戶,您必須以主賬戶中有權代入該角色的用戶身份登錄。

因此,您可以在子賬戶中擔任 IAM 角色,然后提供一組臨時憑證,可與boto3一起使用以boto3賬戶進行 API 調用。

import boto3

role_info = {
    'RoleArn': 'arn:aws:iam::<AWS_ACCOUNT_NUMBER>:role/<AWS_ROLE_NAME>',
    'RoleSessionName': '<SOME_SESSION_NAME>'
}

client = boto3.client('sts')
credentials = client.assume_role(**role_info)

session = boto3.session.Session(
    aws_access_key_id=credentials['Credentials']['AccessKeyId'],
    aws_secret_access_key=credentials['Credentials']['SecretAccessKey'],
    aws_session_token=credentials['Credentials']['SessionToken']
)

一種更簡單的方法是將該角色作為新.aws/config文件放入您的.aws/config文件中。 然后,您可以在進行函數調用時指定配置文件

# In ~/.aws/credentials:
[master]
aws_access_key_id=foo
aws_secret_access_key=bar

# In ~/.aws/config
[profile child1]
role_arn=arn:aws:iam:...
source_profile=master

像這樣使用它:

session = boto3.session.Session(profile_name='dev')
s3 = session.client('s3')

請參閱:如何在使用 boto3 連接到 CloudFront 時選擇 AWS 配置文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM