我正在准备一个脚本,当我运行不同的网络连接时,用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'
}
答案 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)