通过 boto3 中的撤销删除 Aws 安全组规则

Aws Security Group rule deletion via revoke in boto3

我写了一个脚本来删除安全组中的规则。不是所有规则,只有带有 0.0.0.0/0 cidr 块的规则。我正在尝试使用 ec2.revoke_security_group_ingress,但是 boto3 文档中提到的参数,我无法像那样设置我的条件。

我说的那行是:

response = ec2.revoke_security_group_ingress(GroupId=group_id,GroupName=group_name,IpPermissions=inbound[{'IpRanges': ip[{'CidrIp': cidr}]])

这里我收到这个错误:

Response:
{
  "errorMessage": "Syntax error in module 'lambda_function': invalid syntax (lambda_function.py, line 29)",
  "errorType": "Runtime.UserCodeSyntaxError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\" Line 29\n              response = ec2.revoke_security_group_ingress(GroupId=group_id,GroupName=group_name,IpPermissions=inbound{'IpRanges': ip{'CidrIp': cidr}}])\n"
  ]
}

如果我尝试这样做:

response = ec2.revoke_security_group_ingress(group_id,group_name,inbound[ip[cidr]])

我收到这个错误:

Response:
{
  "errorMessage": "list indices must be integers or slices, not str",
  "errorType": "TypeError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 31, in lambda_handler\n    response = ec2.revoke_security_group_ingress(group_id,group_name,inbound[ip[cidr]])\n"
  ]
}

我知道有一些基本列表到字典或字典到列表错误,但我不明白如何解决这个问题。有人可以帮忙吗?

我尝试了这个而不是所有这些。

response = ec2.revoke_security_group_ingress(CidrIp=cidr,GroupId=group_id,IpProtocol=protocol,FromPort=fromport,ToPort=toport)

但要小心,您的默认安全组会带来麻烦,因为它不包含任何值。请记住从您的代码中选择它或通过错误处理来处理它。