Python boto3 - 在安全组下添加规则描述

Python boto3 - adding rule description under Security Group

我正在尝试创建带有描述的规则,但 Boto3 似乎不支持它。请检查以下语法:

 securityGroup.authorize_ingress(IpProtocol='tcp', FromPort=22, ToPort=22, CidrIp='0.0.0.0/0', Description='SSH Access')

这是错误:

botocore.exceptions.ParamValidationError: Parameter validation failed: Unknown parameter in input: "Description", must be one of: CidrIp, FromPort, GroupId, GroupName, IpPermissions, IpProtocol, SourceSecurityGroupName, SourceSecurityGroupOwnerId, ToPort, DryRun

我可以将描述添加到安全组中,但不能添加到规则中。有什么建议么?

要添加规则说明,您可以使用 IpRanges 块。

IpRanges - A set of IP permissions to specify multiple rules and a description for the rule.

'IpRanges': [
  {
     'CidrIp': '0.0.0.0/0',
     'Description': 'SSH Access'
  }
]

检查 documentation 以获取详细示例。顶层没有 Description 键,但您可以从 IpPermissionsIpRanges.

的值中找到它
response = security_group.authorize_ingress(
    CidrIp='string',
    FromPort=123,
    GroupName='string',
    IpPermissions=[
        {
            'FromPort': 123,
            'IpProtocol': 'string',
            'IpRanges': [
                {
                    'CidrIp': 'string',
                    'Description': 'string'
                },
            ],
            'Ipv6Ranges': [
                {
                    'CidrIpv6': 'string',
                    'Description': 'string'
                },
            ],
            'PrefixListIds': [
                {
                    'Description': 'string',
                    'PrefixListId': 'string'
                },
            ],
            'ToPort': 123,
            'UserIdGroupPairs': [
                {
                    'Description': 'string',
                    'GroupId': 'string',
                    'GroupName': 'string',
                    'PeeringStatus': 'string',
                    'UserId': 'string',
                    'VpcId': 'string',
                    'VpcPeeringConnectionId': 'string'
                },
            ]
        },
    ],
    IpProtocol='string',
    SourceSecurityGroupName='string',
    SourceSecurityGroupOwnerId='string',
    ToPort=123,
    DryRun=True|False
)

因此,在您的情况下,它应该如下所示。

response = security_group.authorize_ingress(
    IpPermissions=[
        {
            'FromPort': 22,
            'IpProtocol': 'tcp',
            'IpRanges': [
                {
                    'CidrIp': '0.0.0.0/0',
                    'Description': 'SSH Access'
                },
            ],
            'ToPort': 22,
            ]
        },
    ]
)