Я пытаюсь добавить правило для входящего трафика в группу безопасности в 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: Произошла ошибка (MissingParameter) при вызове операции AuthorizeSecurityGroupIngress: запрос должен содержать параметр groupName или groupId
Я пробовал это, включая имя группы, но это все равно не работает.
с идентификатором группы безопасности это работает:
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': ......}}
Должна быть возможность получить идентификатор группы безопасности также программно - фильтрация по имени группы безопасности.
Привет Энчо: Да! Оно работает! После вашего предложения мне пришлось немного изменить свой код.