使用python boto3对每个入口的描述授权aws安全组

时间:2018-05-25 14:25:00

标签: python boto3 aws-security-group

我正在准备一个脚本,当我运行不同的网络连接时,用myip和静态字符串更新安全组。

sg.authorize_ingress(DryRun=False,IpPermissions=[{'IpProtocol': 'tcp','FromPort': 22,'ToPort': 22,'IpRanges': [{'CidrIp': 192.168.2.3/32}]}])

以上授权工作正常,但如果我添加

sg.authorize_ingress(DryRun=False,IpPermissions=[{'IpProtocol': 'tcp','FromPort': 22,'ToPort': 22,'IpRanges': [{'CidrIp': 192.168.2.3/32,'Description': 'string'}]}])

根据语法,如果我应用描述部分,它会抛出错误信息。是否可以用描述更新每个条目。

语法:

'IpRanges': [
                {
                    'CidrIp': 'string',
                    'Description': 'string'
                }

3 个答案:

答案 0 :(得分:1)

我是使用AWS Command-Line Interface (CLI)

进行的
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 authorize-security-group-ingress --group-name "Foo-SG" --protocol tcp --port 22   --cidr $IP/32 --output text
aws ec2 authorize-security-group-ingress --group-name "Foo-SG" --protocol tcp --port 3389 --cidr $IP/32 --output text

但是,我没有尝试使用Description参数。

请参阅:authorize-security-group-ingress — AWS CLI Command Reference

答案 1 :(得分:1)

import boto3

aws_access_key_id = 'XXXXXXXXXXXXXXXXXXXXXXXXXX'

aws_secret_access_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

ec2 = boto3.resource('ec2', region_name='region_name', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)

sg = "security group id"

security_group = ec2.SecurityGroup(sg)

add_ip = security_group.authorize_ingress(GroupId=sg,IpPermissions=[ {'IpProtocol': 'tcp','FromPort': 80,'ToPort': 80,'IpRanges':[{'CidrIp': '127.5.5.5/32', 'Description' : 'description'}]}])

请尝试使用上述代码。 因为它对我来说很好。希望它也对您有用。

答案 2 :(得分:0)

这是我用于boto3创建ec2和ssh的通用方法。

# Configure so you can SSH
ec2Client.modify_vpc_attribute( VpcId = vpc.id , EnableDnsSupport = { 'Value': DNS_SUPPORT })
ec2Client.modify_vpc_attribute( VpcId = vpc.id , EnableDnsHostnames = { 'Value': DNS_HOSTNAMES })

# Create a security group and allow SSH inbound rule through the VPC
securitygroup = ec2.create_security_group(
    GroupName=SG_GROUP_NAME,
    Description=SG_DESC,
    VpcId=vpc.id
)

securitygroup.authorize_ingress(
    IpPermissions=[
        {'IpProtocol': SG_IP_PROTOCOL,
         'FromPort': SG_FROM_PORT,
         'ToPort': SG_TO_PORT,
         'IpRanges': [{'CidrIp': SG_IP}]}
    ]
)

这是给ssh使用的,

SG_IP_PROTOCOL = 'tcp'
   SG_FROM_PORT = 22
   SG_TO_PORT = 22
   SG_IP = 'XXX.XXX.XXX.XXX/32' # your specified IP address

其中

    ec2Client = boto3.client('ec2', region_name=aws_region)

AWS Boto3 Documentation