允许使用boto进出实例的所有流量

时间:2015-03-12 09:10:37

标签: boto

以下代码按预期工作。

import boto.ec2
conn = boto.ec2.connect_to_region("us-east-1", aws_access_key_id='xxx', aws_secret_access_key='zzz')

sg = conn.create_security_group('test_delete', 'description')
auth = conn.authorize_security_group(sg.name, None, None, ip_protocol='tcp', from_port='22', to_port='22', cidr_ip='0.0.0.0/0')

我可以选择" 所有流量"用户界面中的选项。 boto中没有相应的内容。 我知道所涉及的安全风险,但出于某种原因,我想使用boto打开所有流量的所有端口(往返)。

2 个答案:

答案 0 :(得分:0)

我认为您只需指定端口号的最小值和最大值。由于它是一个16位值,因此该值的范围为0到65535.所以:

auth = conn.authorize_security_group(sg.name, None, None, ip_protocol='tcp', from_port=0, to_port=65535, cidr_ip='0.0.0.0/0')

应允许TCP协议的所有端口上的流量。

答案 1 :(得分:0)

在“所有流量”选项中使用“ IpProtocol”:“-1”,有关详情,请参见下面的代码。

def create_ingress_rules (credentials=None,securitygroupid=None, region_name=None):

print("3-Start creating ingress rule(s)...")

create_ingress_rules_handler = \
    boto3.client('ec2',
    aws_access_key_id=credentials['AccessKeyId'],
    aws_secret_access_key=credentials['SecretAccessKey'],
    aws_session_token=credentials['SessionToken'],
    region_name=region_name)


try:
    data = create_ingress_rules_handler.authorize_security_group_ingress(
        GroupId=securitygroupid,
        IpPermissions=[
            {'IpProtocol': '-1',
            'FromPort': 0,
            'ToPort': 65535,
            'IpRanges': [{'CidrIp': '0.0.0.0/0','Description': 'Temporary inbound rule for Guardrail Testing'}]}
        ])

    print('Complete creating Ingress rule...')
except ClientError as e:
    print(e)