Список ресурсов для дочерней учетной записи из главной учетной записи с помощью boto3? - PullRequest
0 голосов
/ 25 июня 2019

Я использую python и boto3 для перечисления ресурсов, которые есть в моей организации.Я перечисляю ресурсы из моей основной учетной записи без проблем, но мне также необходимо перечислить ресурсы из дочерних учетных записей.Я могу получить идентификаторы детской учетной записи, но это почти все.

Любая помощь?

1 Ответ

0 голосов
/ 25 июня 2019

Вам потребуется доступ к набору учетных данных, принадлежащих дочерней учетной записи.

С Доступ к учетным записям членов вашей организации и управление ими - Организации AWS :

Когда вы создаете учетную запись участника с помощью консоли AWS Organizations, AWS Organizations автоматически создает роль IAM в учетной записи. Эта роль имеет полные права администратора в учетной записи участника. Роль также настроена на предоставление этого доступа к основной учетной записи организации.

Чтобы использовать эту роль для доступа к учетной записи участника, вы должны войти в систему как пользователь с основной учетной записью, у которой есть разрешения для принятия роли.

Таким образом, вы можете предположить роль IAM в дочерней учетной записи , которая затем предоставляет набор временных учетных данных, которые можно использовать с 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 в качестве нового профиля. Затем вы можете указать профиль при вызове функции:

# 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')

См .: Как выбрать профиль AWS при использовании boto3 для подключения к CloudFront

...