5

いくつかのリソースを作成しようとしていますが、何らかの作成順序を強制する必要があります。たとえば、aws.s3.Bucketへの入力として使用する前にログを保存するための を作成しaws.cloudfront.Distributionます。

Pulumi の使用時にリソースの作成順序を制御するにはどうすればよいですか?

4

2 に答える 2

9

通常、Pulumi はリソース作成の順序を自動的に処理します。TypeScript では、これは型pulumi.Input<T>pulumi.Output<T>型を介して言語の型システムによっても強制されます。ただし、これらの型の詳細を理解する必要はありません。

Pulumi エンジンは、すべての「パラメーター」または「入力」をリソースに解決します。そのため、あるリソースを別のリソースを構成する際のパラメータとして使用すると、依存リソースが最初に作成されます。つまり、希望どおりに機能します。

ただし、あるリソースが別のリソースに依存していることを明示的にマークする必要がある場合があります。これは、Pulumi プログラムの外部に何らかの結合がある場合に発生します。

明示的な依存関係を指定するにはpulumi.ResourceOptions、リソースに のインスタンスを提供し、そのdependsOnプロパティを設定します。Pulumi エンジンは、リソースをdependsOn処理する前に、アレイ内のすべてのリソースを解決します。

Pulumi が順序を決定する 2 つの方法を示す簡単な例を次に示します。AWS S3 バケットは、オブジェクトと呼ばれるファイルを含むリソースです。バケット内にオブジェクトを作成する前に、バケットを作成する必要があります。

// Create a bucket named "example-bucket", available at s3://example-bucket.
let bucket = new aws.s3.Bucket("bucket",
    {
        bucket: "example-bucket",
    });

let file1 = new aws.s3.BucketObject("file1", {
    // The bucket field of BucketObjectArgs is an instance of
    // aws.s3.Bucket. Pulumi will know to create the "bucket"
    // resource before this BucketObject resource.
    bucket: bucket,
});

let file2 = new aws.s3.BucketObject("file2",
    {
        // The bucket field of BucketObjectArgs is a string. So
        // Pulumi does not know to block creating the file2 resource
        // until the S3 bucket exists.
        bucket: "example-bucket",
    } as aws.s3.BucketArgs,
    {
        // By putting "bucket" in the "dependsOn" array here,
        // the Pulumi engine will create the bucket resource before
        // this file2 resource.
        dependsOn: [ bucket ],
    } as pulumi.ResourceOptions);
于 2018-06-20T22:02:09.690 に答える