boto3 - 遍历 AWS 安全组
问题描述
for i in configuration_item['configuration']['ipPermissions']:
if i['FromPort'] == '23':
compliance_type = 'NON_COMPLIANT'
annotation = 'SecurityGroup is not compliant:Port 23'
break
如果只有一个规则但对多个规则失败,则上面的代码有效。那么如何遍历所有规则(检查端口/ipRanges 等)
解决方案
这将遍历并获得所有 sgs 和权限。
您可以使用它来过滤您要查找的内容。
import boto3
ec2 = boto3.client('ec2',region_name='us-west-1')
response = ec2.describe_security_groups()
for i in response['SecurityGroups']:
print "Security Group Name: "+i['GroupName']
print "the Egress rules are as follows: "
for j in i['IpPermissionsEgress']:
print "IP Protocol: "+j['IpProtocol']
for k in j['IpRanges']:
print "IP Ranges: "+k['CidrIp']
print "The Ingress rules are as follows: "
for j in i['IpPermissions']:
print "IP Protocol: "+j['IpProtocol']
try:
print "PORT: "+str(j['FromPort'])
for k in j['IpRanges']:
print "IP Ranges: "+k['CidrIp']
except Exception:
print "No value for ports and ip ranges available for this security group"
continue
推荐阅读
- c# - Task.Wait(int) 是否在被调用时开始等待,或者在任务开始运行时开始等待?
- git - 嵌套的 git repos 有什么问题?
- python - Django - 在对象创建之前删除自身的变量?
- node.js - Node.js, Facebook Graph API - 使用 Node.js 后端将文件上传到 facebook
- html - Bootstrap Grid 水平对齐和折叠
- java - 我们可以将平面文件发送到 IBM MQ 还是我们必须创建平面文件的字符串表示,以便它可以作为消息发送
- php - 使用 jQuery ajax 显示输出后,使用 PHP post 方法的值不通过
- cordova - 类似 Instagram 的强制触摸弹出模式
- java - 当迭代第 4 个偶数时跳出 for 循环
- php - 如何解决在 PHP 中使用 TCPDF 获取未定义偏移量 0 的错误