使用 Python BOTO3 授权 AWS 安全组,并为每个入口提供描述



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

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

语法:

'IpRanges': [
{
'CidrIp': 'string',
'Description': 'string'
}
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'}]}])

请尝试使用上面提到的代码。 因为它对我来说工作正常.希望它也对你有用.

我使用AWS命令行界面(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参数。

请参阅:授权安全组入口 — AWS CLI 命令参考

这是我用于 boto3 创建 ec2s 和 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 文档

最新更新