首页 > 解决方案 > Pulumi 输入输出和资源依赖 Python GCP

问题描述

我在尝试了解如何将资源的输出作为输入传递给另一个资源时遇到了一些麻烦,因此它们具有依赖性并且创建时的顺序正常工作。

场景:资源 B 依赖于资源 A。

我试图将类似的东西传递给资源 B

opts = ResourceOptions(depends_on=[ResourceA])

但由于某种原因,它充当该参数不存在并在创建资源 A 之前不断创建资源 B,因此引发错误。

如果我第二次执行 pulumi ,因为资源 A 存在,资源 B 被创建。

我注意到你也可以将输出作为另一个资源的输入传递,正因为如此,Pulumi 理解存在关系并使其如此自动

https://www.pulumi.com/docs/intro/concepts/inputs-outputs/

但是我无法理解如何通过它,因此,任何有关此的帮助将不胜感激。

我还使用了以下关于如何使用 ResourceOptions 的解释,我认为我在上面的代码中正确使用了它,但仍然没有

如何控制 Pulumi 中的资源创建顺序

提前致谢。

标签: pythongoogle-cloud-platformpulumi

解决方案


@mrthopson,

让我试着用一个公开的例子来解释。我从这个 Pulumi 例子中得到它:

https://github.com/pulumi/examples/blob/master/aws-ts-eks/index.ts

// Create a VPC for our cluster.
const vpc = new awsx.ec2.Vpc("vpc", { numberOfAvailabilityZones: 2 });

// Create the EKS cluster itself and a deployment of the Kubernetes dashboard.
const cluster = new eks.Cluster("cluster", {
    vpcId: vpc.id,
    subnetIds: vpc.publicSubnetIds,
    instanceType: "t2.medium",
    desiredCapacity: 2,
    minSize: 1,
    maxSize: 2,
});

该示例首先在 AWS 中创建一个 VPC。VPC 包含许多不同的网络,这些网络的标识符作为输出公开。当我们创建 EKS 集群时,我们将公共子网的 ID(输出vpc.publicSubnetIds)作为输入传递给集群(输入:)subnetIds

这是您需要做的唯一事情,以使 VPC 上的 EKS 集群具有依赖关系。在运行 Pulumi 时,引擎会发现它首先需要创建 VPC,然后才能创建 EKS 集群。

林戈


推荐阅读