Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用boto3的revoke_ingress方法从入站规则中删除特定的安全组_Python_Amazon Web Services_Boto3_Aws Security Group - Fatal编程技术网

Python 如何使用boto3的revoke_ingress方法从入站规则中删除特定的安全组

Python 如何使用boto3的revoke_ingress方法从入站规则中删除特定的安全组,python,amazon-web-services,boto3,aws-security-group,Python,Amazon Web Services,Boto3,Aws Security Group,我想使用boto3方法从另一个安全组sg ZZ的入站规则中删除特定的安全组sg yy组 资料来源:sg ZZ 目标:sg yy 我试过: response = security_group_source.revoke_ingress( FromPort=FromPort, GroupName=groupName_source, IpPermissions=[ {'ToPort': ToPort,

我想使用boto3方法从另一个安全组sg ZZ的入站规则中删除特定的安全组sg yy组

资料来源:sg ZZ 目标:sg yy

我试过:

    response = security_group_source.revoke_ingress(
        FromPort=FromPort,
        GroupName=groupName_source,
        IpPermissions=[
            {'ToPort': ToPort,
             'UserIdGroupPairs': [
                 {
                     'Description': description_target,
                     'GroupId': group_id_target,
                     'GroupName': groupName_target,
                     'VpcId': VpcId_target,

                 },
             ]
             },
        ],
        SourceSecurityGroupName=groupName_source,
        SourceSecurityGroupOwnerId=owner_id_source,
        ToPort=ToPort,
        DryRun=True
    )
    print( response )
但我得到了错误:调用RevokeSecurityGroupIngress操作时发生错误(InvalidGroup.NotFound):默认VPC“VPC-1111”中不存在安全组“sg_group_name”

我不能使用:

security_group.revoke_ingress(
    IpPermissions = IpPermissions,
)
因为我需要删除特定的安全组


有人能帮我吗?

这可以通过保留正确的参数来解决。Boto3文档中没有明确规定非默认VPC使用哪些参数,但解决这些错误对我来说是可行的。 非默认VPC的工作代码:

       response = security_group_source.revoke_ingress(
            GroupId=group_id_source,
            IpPermissions=[
                {'FromPort': FromPort,
                 'IpProtocol': IpProtocol,
                 'ToPort': ToPort,
                 'UserIdGroupPairs': [
                     {
                         'GroupId': group_id_target,
                         'VpcId': VpcId_target,
                     },
                 ]
                 },
            ],
            DryRun=False
        )

您确定您的所有SGs都在默认vpc中吗?@Marcin不,它们不在默认vpc中,我要提到的是它所在的vpc,即
VpcId':VpcId\u target
。此外,安全组sg yy和sg ZZ位于同一个vpc中。错误显示“默认情况下不存在”,因此它将在默认vpc中搜索它们。也不知道为什么同时使用
GroupId
GroupName
?应该使用其中一个。对于非devaulf专有网络,仅应根据文档使用
GroupId
:对于非默认专有网络中的安全组,使用安全组ID。@Marcin即使我只使用
组ID
我也会收到相同的错误,并且可能是什么原因导致它在默认VPC中查找,而不是我提到的VPC,即
VpcId\u target
?必须检查文档。我看到
GroupName
SourceSecurityGroupName
也仅适用于
[EC2经典,默认VPC]
。所以,你必须指定其他材料,或者移除它们?我现在还不太清楚。