У меня есть 2 аккаунта AWS. Я пишу код (с ролями между учетными записями) для отслеживания значений тегов EC2 (дата xx / xx / xx) для тега «расход». Это работало на одной учетной записи, но у меня возникли проблемы со структурой кода с несколькими учетными записями. У меня есть 3 тега в одной учетной записи (основной) и 2 в другой (дочерний), о которых следует сообщить.
import boto3
import collections
import datetime
import time
import sys
sns_client = boto3.client('sns')
from datetime import date as dt
aws_account_numbers = { "MassIT-Core":"xxxxxxxxxxxx", "MassIT-Engineering-Sandbox":"xxxxxxxxxxxx"}
def lambda_handler(event, context):
roleArn = "arn:aws:iam::%s:role/CrossAccount-CostExplorer-Role" % account_num
stsClient = boto3.client('sts')
sts_response = stsClient.assume_role(RoleArn=roleArn,RoleSessionName='AssumeCrossAccountRole', DurationSeconds=1800)
ec2 = boto3.client(service_name='ec2',region_name=region,aws_access_key_id = sts_response['Credentials']['AccessKeyId'],
aws_secret_access_key = sts_response['Credentials']['SecretAccessKey'], aws_session_token = sts_response['Credentials']['SessionToken'])
def lambda_handler(event, context):
acctnum2 = (boto3.client('sts').get_caller_identity()['Account'])
today = datetime.date.today()
mdy = today_string = today.strftime('%m/%d/%y')
ec2 = boto3.resource('ec2')
for name, acctnum in aws_account_numbers.items():
for instance in ec2.instances.all():
if instance.tags is None:
continue
for tag in instance.tags:
if tag['Key'] == 'expenddate':
expiredInstances=[]
if (tag['Value']) <= mdy:
sns_client.publish(
TopicArn = 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:EOTSS-Monitor-Tag-Exceptions',
Subject = '!!!! Tag Exception has Expired.',
Message = str("The tag exception for instance %s has expired in account %s" % (instance.id,acctnum2)))
else:
print ("end")
В результате я получаю 6 электронных писем (sns) с 3 тегами, один раз для основной учетной записи и один раз для дочерней учетной записи. Эти 3 экземпляра EC2 не живут в дочернем аккаунте. Я новичок в Python. Я хочу получить 3 электронных письма от основной учетной записи и 2 электронных письма от дочерней учетной записи, которые будут представлять фактические теги, по которым прошло expdenddate.