【发布时间】:2020-07-12 05:10:24
【问题描述】:
我正在尝试编写一个 lambda,它可以自动撤销我们所有 AWS 账户中“0.0.0.0/0”的入口规则。对于存在 lambda 的帐户,这非常简单。当我尝试从另一个帐户撤消对安全组的入口时,就会出现此问题。没有 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')
}
【问题讨论】:
-
你能举一个 lambda 的例子吗?
-
添加到原帖@a-abramov
标签: python amazon-web-services aws-lambda