Siehe das Dokument unten. .. .. .. .. https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-assume-iam-role/
Ich verstehe das überhaupt nicht, selbst wenn ich es lese Mit dem Konto (Konto A), das die Informationen enthält, die Sie erhalten möchten Ich habe es mit dem Konto (Konto B) versucht, an das ich es weitergeben möchte
CostExplorerFullAccess, AWSOrganizationsFullAccess usw.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::Kontonummer des Kontos B.:role/service-role/Rollenname von Konto B."
],
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Gewähren Sie dem Administrator vorerst Zugriff
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Kontonummer des Kontos A.:role/Konto Ein Rollenname"
}
}
In der boto3-Dokumentation wird beschrieben, wie Sie es erhalten. Siehe unten für Details. https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts.html https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/organizations.html https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ce.html#CostExplorer.Client.get_cost_forecast https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetCostAndUsage.html
import boto3
def lambda_handler(event, context):
#Rufen Sie eine Reihe von Sicherheitsanmeldeinformationen ab, die für den Zugriff auf AWS-Ressourcen anderer Konten verwendet werden
sts_connection = boto3.client('sts')
acct_b = sts_connection.assume_role(
RoleArn="arn:aws:iam::Kontonummer des Kontos A.:role/Konto Ein Rollenname",
RoleSessionName="cross_acct_lambda"
)
ACCESS_KEY = acct_b['Credentials']['AccessKeyId']
SECRET_KEY = acct_b['Credentials']['SecretAccessKey']
SESSION_TOKEN = acct_b['Credentials']['SessionToken']
#Informationen zu Organisationen in Konto A abrufen
organizations = boto3.client(
'organizations',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
)
responses = []
res = {}
while True:
if 'NextToken' in res:
res = organizations.list_accounts(NextToken = res['NextToken'])
else:
res = organizations.list_accounts()
responses += res['Accounts']
if 'NextToken' not in res:
break
print(responses)
#Informationen zu CostExplorer für Konto A abrufen
ce = boto3.client(
'ce',
region_name='us-east-1',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
)
response = ce.get_cost_and_usage(
TimePeriod = {"Start": "2020-10-01", "End": "2020-11-01"},
Granularity = 'MONTHLY',
Metrics = ["UnblendedCost"],
GroupBy=[{'Type': 'DIMENSION','Key': 'LINKED_ACCOUNT'}]
)
print(response)
Recommended Posts