Python 是否在vpc存在之前返回两个vpc_?

Python 是否在vpc存在之前返回两个vpc_?,python,python-3.x,amazon-web-services,amazon-ec2,boto3,Python,Python 3.x,Amazon Web Services,Amazon Ec2,Boto3,我在创建VPC后尝试设置它的标签时遇到了以下错误(几十次尝试中只有一次。它在大多数情况下都有效,但并不总是有效): 后来我检查过,VPC VPC-4240de24确实存在,所以调用CreateTags太早了 错误发生在以下方法中: def create_vpc(self, region, vpc_name): """create VPC in region and attach tags (threaded)""" ec2_client = aws.ec2_client(regi

我在创建VPC后尝试设置它的标签时遇到了以下错误(几十次尝试中只有一次。它在大多数情况下都有效,但并不总是有效):

后来我检查过,VPC VPC-4240de24确实存在,所以调用CreateTags太早了

错误发生在以下方法中:

def create_vpc(self, region, vpc_name):
    """create VPC in region and attach tags (threaded)"""
    ec2_client = aws.ec2_client(region) # Custom method, essentially calls boto3.client('ec2')
    vpc_id = ec2_client.create_vpc(
        CidrBlock="172.31.0.0/16",
        AmazonProvidedIpv6CidrBlock=False
    )["Vpc"]["VpcId"]
    # TODO: Attach tags on VPC creation when (if) it becomes supported
    ec2_client.get_waiter("vpc_exists").wait(VpcIds=[vpc_id])
    ec2_client.create_tags(
        Resources=[vpc_id],
        Tags=[
            {
                "Key": "Namespace",
                "Value": config.NAMESPACE
            },
            {
                "Key": "Name",
                "Value": vpc_name
            }
        ]
    )

我不明白为什么会出现这样的错误。vpc_exists服务员不应该只在vpc存在时返回,否则会引发WaiteError异常吗?我会在侍者之后设置一秒钟的睡眠时间,但是有什么我做得不对吗?

您现在可以在创建时标记VPC

response = client.create_vpc(
    CidrBlock='string',
    AmazonProvidedIpv6CidrBlock=True|False,
    Ipv6Pool='string',
    Ipv6CidrBlock='string',
    DryRun=True|False,
    InstanceTenancy='default'|'dedicated'|'host',
    Ipv6CidrBlockNetworkBorderGroup='string',
    TagSpecifications=[
        {
            'ResourceType': 'vpc',
            'Tags': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ]
        },
    ]
)

我不确定这是否有效,但您能试试
vpc\u available
服务员吗?它有一个更大的等待超时和轮询间隔,
vpc\u存在
water。所以你说这个方法看起来不错。到时候我会切换到vpc_。希望它能防止这个问题重新出现。如果你需要经常这样做,你应该考虑云的形成。只要AWS不提供VPC create token API,允许对VPC的状态进行异步查询,cloudformation就是摆脱繁琐服务的唯一方法。
response = client.create_vpc(
    CidrBlock='string',
    AmazonProvidedIpv6CidrBlock=True|False,
    Ipv6Pool='string',
    Ipv6CidrBlock='string',
    DryRun=True|False,
    InstanceTenancy='default'|'dedicated'|'host',
    Ipv6CidrBlockNetworkBorderGroup='string',
    TagSpecifications=[
        {
            'ResourceType': 'vpc',
            'Tags': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ]
        },
    ]
)