いくつかのリソースを作成しようとしていますが、何らかの作成順序を強制する必要があります。たとえば、aws.s3.Bucket
への入力として使用する前にログを保存するための を作成しaws.cloudfront.Distribution
ます。
Pulumi の使用時にリソースの作成順序を制御するにはどうすればよいですか?
いくつかのリソースを作成しようとしていますが、何らかの作成順序を強制する必要があります。たとえば、aws.s3.Bucket
への入力として使用する前にログを保存するための を作成しaws.cloudfront.Distribution
ます。
Pulumi の使用時にリソースの作成順序を制御するにはどうすればよいですか?
通常、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);