Boto3 向非默认 VPC 中的安全组添加入站规则
Boto3 Adding an Inbound Rule to a Security Group in a Non Default VPC
我正在尝试向非默认 VPC 中的安全组添加入站规则。我正在使用此代码:
import boto3
ec2 = boto3.client('ec2')
def modify_sg_add_rules():
response = ec2.authorize_security_group_ingress(
IpPermissions=
[
{
'FromPort': 3306,
'IpProtocol': 'tcp',
'IpRanges':
[
{
'CidrIp': '64.192.85.294/32',
'Description': 'My home IP',
},
],
'ToPort': 3306,
'UserIdGroupPairs':
[
{
'Description': 'My home IP',
'GroupId': 'sg-0123',
# 'GroupName': 'mysql-sg-0123',
'VpcId': 'vpc-0f93q3',
},
]
},
],
)
但是,我收到以下错误:
botocore.exceptions.ClientError:调用AuthorizeSecurityGroupIngress操作时出现错误(MissingParameter):请求中必须包含参数groupName或groupId
我已经试过了,包括组名,但还是不行。
使用安全组 ID 有效:
data = client_ec2.authorize_security_group_ingress(
GroupId='sg-01b8f7d6ae1022a20',
IpPermissions=[
{'IpProtocol': 'tcp',
'FromPort': 80,
'ToPort': 80,
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]},
{'IpProtocol': 'tcp',
'FromPort': 22,
'ToPort': 22,
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}
])
print('Ingress Successfully Set %s' % data)
输出:
Ingress Successfully Set {'ResponseMetadata': {'RequestId': xxxx, 'HTTPStatusCode': 200, 'HTTPHeaders': ......}}
应该也可以通过编程方式获取安全组 ID - 按安全组名称过滤。
我正在尝试向非默认 VPC 中的安全组添加入站规则。我正在使用此代码:
import boto3
ec2 = boto3.client('ec2')
def modify_sg_add_rules():
response = ec2.authorize_security_group_ingress(
IpPermissions=
[
{
'FromPort': 3306,
'IpProtocol': 'tcp',
'IpRanges':
[
{
'CidrIp': '64.192.85.294/32',
'Description': 'My home IP',
},
],
'ToPort': 3306,
'UserIdGroupPairs':
[
{
'Description': 'My home IP',
'GroupId': 'sg-0123',
# 'GroupName': 'mysql-sg-0123',
'VpcId': 'vpc-0f93q3',
},
]
},
],
)
但是,我收到以下错误:
botocore.exceptions.ClientError:调用AuthorizeSecurityGroupIngress操作时出现错误(MissingParameter):请求中必须包含参数groupName或groupId
我已经试过了,包括组名,但还是不行。
使用安全组 ID 有效:
data = client_ec2.authorize_security_group_ingress(
GroupId='sg-01b8f7d6ae1022a20',
IpPermissions=[
{'IpProtocol': 'tcp',
'FromPort': 80,
'ToPort': 80,
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]},
{'IpProtocol': 'tcp',
'FromPort': 22,
'ToPort': 22,
'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}
])
print('Ingress Successfully Set %s' % data)
输出:
Ingress Successfully Set {'ResponseMetadata': {'RequestId': xxxx, 'HTTPStatusCode': 200, 'HTTPHeaders': ......}}
应该也可以通过编程方式获取安全组 ID - 按安全组名称过滤。