Я пытаюсь написать одну лямбду, которая автоматически отменяет правила входа для «0.0.0.0/0» во всех наших AWS учетных записях. Для учетной записи, в которой существует лямбда, это довольно просто. Проблема возникает, когда я пытаюсь отменить вход в группу безопасности из другой учетной записи. Отсутствует комбинация GroupId, SourceSecurityGroupOwnerId, Filter [{'Name': 'owner-id', 'Values': 'account #'}] и, в остальном, кажется, что работает, я постоянно сталкиваюсь с "Эта группа не существует" , Это как команда не смотрит на учетную запись, я говорю это. У кого-нибудь был опыт с этим?
Вот что у меня так далеко (пожалуйста, игнорируйте закомментированные строки, я все еще экспериментирую):
import json
import boto3
ec2 = boto3.client('ec2')
ec2_resources = boto3.resource('ec2')
def lambda_handler(event, context):
ipPermissions = event['detail']['requestParameters']['ipPermissions']['items'][0]
fromPort = ipPermissions['fromPort']
ipProtocol = ipPermissions['ipProtocol']
toPort = ipPermissions['toPort']
IpPermissions = [{'FromPort': fromPort, 'IpProtocol': ipProtocol, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}], 'Ipv6Ranges': [{'CidrIpv6': '::/0'}], 'PrefixListIds': [], 'ToPort': toPort, 'UserIdGroupPairs': []}]
account = event['detail']['userIdentity']['accountId']
groupId = event['detail']['requestParameters']['groupId']
print(account)
#response = ec2.revoke_security_group_ingress(GroupId=groupId,SourceSecurityGroupOwnerId=account)
response = ec2.revoke_security_group_ingress(GroupId=groupId,IpPermissions=IpPermissions,SourceSecurityGroupOwnerId=account)
#response = ec2.revoke_security_group_ingress(GroupId=groupId,CidrIp='0.0.0.0/0',SourceSecurityGroupOwnerId=security_group.owner_id)
#print(response)
print(json.dumps(event))
return {
'statusCode': 200,
'body': json.dumps('Ingress revoked')
}