Python 3.x 如何通过api获取假定角色的信息?
我有一个函数,可以将帐户的成本写入CSV。现在我想使用假定角色查询所有其他帐户。不幸的是,他只写Lambda函数所在帐户的成本。将所有进一步的成本写入CSV文件有什么不对?这是我认为应该是的代码。我没有考虑CSV的功能,因为它工作得非常完美Python 3.x 如何通过api获取假定角色的信息?,python-3.x,amazon-s3,aws-lambda,aws-sdk,Python 3.x,Amazon S3,Aws Lambda,Aws Sdk,我有一个函数,可以将帐户的成本写入CSV。现在我想使用假定角色查询所有其他帐户。不幸的是,他只写Lambda函数所在帐户的成本。将所有进一步的成本写入CSV文件有什么不对?这是我认为应该是的代码。我没有考虑CSV的功能,因为它工作得非常完美 import boto3 import re import csv import os def lambda_handler(event,context): #get data from environment start = os.en
import boto3
import re
import csv
import os
def lambda_handler(event,context):
#get data from environment
start = os.environ['Start']
end = os.environ['End']
response = client.get_cost_and_usage(
TimePeriod={
'Start': start,
'End': end
},
Granularity='MONTHLY',
Metrics=['BlendedCost'],
GroupBy=[
{
'Type': 'TAG',
'Key': 'Project
您必须首先承担目标客户中的角色
def assume_role(aws_account_number, role_name):
sts_client = boto3.client('sts')
partition = sts_client.get_caller_identity()['Arn'].split(":")[1]
response = sts_client.assume_role(
RoleArn='arn:{}:iam::{}:role/{}'.format(
partition,
aws_account_number,
role_name
),
RoleSessionName='MySession'
)
# Create a boto3 session by using the temporary credentials
session = boto3.Session(
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken']
)
print("Assumed session for {}.".format(aws_account_number))
return session
最后一步是让您的客户机使用此会话
session = assume_role('123456789012', 'MyCrossAccountRoleName')
client = session.client('ce')
在进行跨帐户请求时,最好增加3秒的时间