Получение AWS accountID из CloudTrail для использования в функции Lambda - PullRequest
0 голосов
/ 10 июля 2020

Я работаю над получением accountID из только что созданной учетной записи AWS в организации. Я использую правило CloudWatch, которое запускает лямбда-функцию для имени события CreateAccountResult. В рамках этого события он дает мне createAccountStatus из "SUCCEEDED", а также accountID новой учетной записи.

Я хочу иметь возможность вытащить ТОЛЬКО accountID и вставить его в переменной в моей лямбда-функции.

Эта лямбда-функция используется для создания коннектора AWS для привязки учетной записи к Trend Micro. По сути, в этом скрипте я использую:

account = '**accountID**'

payload = "{\n   \"crossAccountRoleArn\": \"arn:aws:iam" + account + ":role/TrendMicroDSM\",\n   \"workspacesEnabled\": true\n}"

Я хочу, чтобы переменная учетной записи автоматически обновлялась с учетом accountID

самой новой учетной записи * Возможно ли это вообще?

1 Ответ

0 голосов
/ 11 июля 2020

Если вы используете Python, функция create_account() возвращает:

{
    'CreateAccountStatus': {
        'Id': 'string',
        'AccountName': 'string',
        'State': 'IN_PROGRESS'|'SUCCEEDED'|'FAILED',
        'RequestedTimestamp': datetime(2015, 1, 1),
        'CompletedTimestamp': datetime(2015, 1, 1),
        'AccountId': 'string',
        'GovCloudAccountId': 'string',
        'FailureReason': 'ACCOUNT_LIMIT_EXCEEDED'|'EMAIL_ALREADY_EXISTS'|'INVALID_ADDRESS'|'INVALID_EMAIL'|'CONCURRENT_ACCOUNT_MODIFICATION'|'INTERNAL_FAILURE'|'GOVCLOUD_ACCOUNT_ALREADY_EXISTS'
    }
}

Следовательно, вы можете просто использовать:

import boto3

client = boto3.client('organizations')

response = client.create_account(...)

account_id = response['CreateAccountStatus']['AccountId']
...