Voir le document ci-dessous. .. .. .. .. https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-assume-iam-role/
Je ne comprends pas du tout même si je le lis, alors Avec le compte (compte A) qui contient les informations que vous souhaitez obtenir Je l'ai essayé avec le compte (compte B) auquel je veux le transmettre
CostExplorerFullAccess, AWSOrganizationsFullAccess, etc.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::Numéro de compte du compte B:role/service-role/Nom du rôle du compte B"
],
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Donner l'accès administrateur pour le moment
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Numéro de compte du compte A:role/Compte Un nom de rôle"
}
}
La documentation de boto3 détaille comment l'obtenir. Voir ci-dessous pour plus de détails. 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):
#Obtenez un ensemble d'informations d'identification de sécurité utilisées pour accéder à d'autres comptes Ressources AWS
sts_connection = boto3.client('sts')
acct_b = sts_connection.assume_role(
RoleArn="arn:aws:iam::Numéro de compte du compte A:role/Compte Un nom de rôle",
RoleSessionName="cross_acct_lambda"
)
ACCESS_KEY = acct_b['Credentials']['AccessKeyId']
SECRET_KEY = acct_b['Credentials']['SecretAccessKey']
SESSION_TOKEN = acct_b['Credentials']['SessionToken']
#Obtenir des informations sur les organisations dans le compte A
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)
#Obtenir des informations sur CostExplorer pour le compte A
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