【问题标题】:Unable to wait for VPC creation无法等待 VPC 创建
【发布时间】:2022-10-19 03:27:45
【问题描述】:

我正在尝试使用 Pulumi 人行横道创建 VPC,然后使用输出的 vpc_id 作为参数传递以获取安全组。但是,由于本机异步,vpc 对象应该在创建之前被查询,导致它抛出错误:

异常:调用 aws:ec2/getSecurityGroup:getSecurityGroup 失败:调用 aws:ec2/getSecurityGroup:getSecurityGroup 返回错误:调用 aws:ec2/getSecurityGroup:getSecurityGroup: 发生 1 个错误: * 多个安全组匹配;使用额外的约束来减少对单个安全组的匹配

我无法弄清楚以下内容:

  1. 为什么说有多个匹配项而实际上没有匹配项?
  2. 为什么它会在预览中引发错误?预览版是否也会进行 AWS 调用?
  3. 如何在创建 VPC 之前暂停查询,考虑到“depends_on”不适用于 get_security_group 方法?有没有 Pulumi 方法来处理这种情况?

    以下是代码sn-p:

    vpc = awsx.ec2.Vpc("pulumi-test",cidr_block='10.2.0.0/16',subnet_specs=[
          awsx.ec2.SubnetSpecArgs(
            type=awsx.ec2.SubnetType.PRIVATE,
            cidr_mask=26,
          ),
          awsx.ec2.SubnetSpecArgs(
            type=awsx.ec2.SubnetType.PUBLIC,
            cidr_mask=26,
          )
        ], number_of_availability_zones=1)
    security_group = aws.ec2.get_security_group(vpc_id=vpc.vpc_id)
    

【问题讨论】:

  • 您是在一些现有的堆栈/状态上执行此操作(已经包含一些资源,例如 VPC)还是全新的?
  • 您能否访问您的 AWS 账户并确保没有与此 VPC 关联的其他安全组?
  • 我很确定没有 sg,因为我从头开始旋转一切。唯一的事情是我之前已经破坏了堆栈几次。这是否有可能导致问题?

标签: pulumi pulumi-python


【解决方案1】:

1.

您可能不应该对只有一个安全组做出任何假设。使用get_security_groups 函数来获取它们。例子:

security_groups = aws.ec2.get_security_groups(filters=[aws.ec2.GetSecurityGroupsFilterArgs(name='vpc-id', values=[vpc.vpc_id])])

2.

是的,pulumi preview 将执行功能如果可能的话(get_security_group 在你的情况下)。即使是基于 Output 的函数调用(参见 3. 以了解说明)也可以在 preview 期间执行。

如果此函数使用的Output 属于已经存在的资源(在前面的某些pulumi up 中创建),则可能会发生这种情况。

例如:

  1. 您添加 VPC 代码。
  2. 你执行pulumi up成功(VPC创建完成,Pulumi状态保存在后端)。
  3. 您添加使用 VPC 输出之一 (get_security_group(vpc.vpc_id)) 的代码。
  4. 你执行pulumi preview,上面的函数是用真实的VPC id(vpc.vpc_id)执行的。

    3.

    不需要depends_on。 Pulumi 函数不同于资源。在 Python 中,有两种可用的调用形式。您正在使用的是Output-based。

    有两种调用形式可用。直接形式接受普通参数并阻塞直到结果值可用,或者返回一个 Promise 包装的结果。输出表单接受输入包装的参数并返回输出包装的结果。

【讨论】:

  • 我没有假设 vpc 是否存在任何安全组,我确定没有任何安全组,因为这是我正在尝试的帐户。此外,当我先单独创建 VPC 然后查询 SG 时,它工作正常。这让我相当确定那里已经没有任何 SG。感谢第 2 点和第 3 点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 2021-11-25
相关资源
最近更新 更多