■ はじめに
https://dk521123.hatenablog.com/entry/2022/03/02/122037
で、Glue workflow と trigger を作る時に、 apply() を使ったのだが、 だんだんと、Pulumi Output や 非同期処理 について、 分かってきたので、整理する意味でメモしておく。 なお、理解する際に以下のサイトが役に立った。感謝。。。
https://qiita.com/346/items/6f972990baf3c708273f
目次
【1】Output<T> 補足:Promiseについて 【2】関連メソッド 1)pulumi.apply / pulumi.all 2)pulumi.interpolation 3)pulumi.lifting
【1】Output
https://www.pulumi.com/docs/intro/concepts/inputs-outputs/
より抜粋 ~~~~ Outputs are values of type Output<T> , which behave very much like promises. ~~~~ Output は、 Promise と非常に近しい振る舞いをする(Output ≒ Promise) => これに尽きる、、、遅延実行的なこと => 非同期処理でとりあえず、Output をオブジェクトを渡すイメージ
補足:Promiseについて
* 詳細は、以下の関連記事を参照のこと
非同期処理 ~ async/await, Promise ~
https://dk521123.hatenablog.com/entry/2021/01/16/202822
【2】関連メソッド
1)pulumi.apply / pulumi.all
pulumi.apply
* 非同期処理からの結果が返ってきた際のコールバック関数 => 非同期処理を待たずに次の処理に移行できる
https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#inputs-and-outputs
より抜粋 ~~~~ a callback that receives the raw value, and computes a new output [意訳] raw値を受け取った際のコールバックで、そして新しいOutputを生成する ~~~~
pulumi.all
* apply() の複数版
https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#all
import * as pulumi from "@pulumi/pulumi"; // ★注目 let connectionString = pulumi.all([sqlServer.name, database.name]) .apply(([server, db]) => `Server=tcp:${server}.database.windows.net;initial catalog=${db}...`);
2)pulumi.interpolation
* 文字列結合(TypeScriptの `${xxx}` の非同期版?) cf. interpolation = 補間
https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#inputs-and-outputs
より抜粋 ~~~~ concatenate string outputs with other strings directly [意訳] 直接他の文字列との連結をOutputとして返却 cf. concatenate = 連結 ~~~~
https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#outputs-and-strings
// interpolate takes a JavaScript "template literal" and expands outputs correctly: const url2: Output<string> = pulumi.interpolate `http://${hostname}:${port}/`;
3)pulumi.lifting
https://www.pulumi.com/docs/intro/concepts/inputs-outputs/#inputs-and-outputs
より抜粋 ~~~~ directly read properties off an output value [意訳] Output値からプロパティを直接読み取る ~~~~
参考文献
https://qiita.com/346/items/6f972990baf3c708273f
関連記事
Pulumi ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/10/23/025230
Pulumi ~ 環境設定編 ~
https://dk521123.hatenablog.com/entry/2022/01/10/155206
Pulumi ~ 入門編 / Hello World in Local/k8s ~
https://dk521123.hatenablog.com/entry/2022/03/07/233752
Pulumi ~ 入門編 / Hello World in AWS ~
https://dk521123.hatenablog.com/entry/2022/03/11/184041
Pulumi ~ 基本編 / CLI ~
https://dk521123.hatenablog.com/entry/2021/10/25/215508
Pulumi ~ 基本編 / Config ~
https://dk521123.hatenablog.com/entry/2022/03/15/224217
Pulumi ~ 基本編 / Logging ~
https://dk521123.hatenablog.com/entry/2022/03/04/111618
Pulumi ~ 基本編 / Component ~
https://dk521123.hatenablog.com/entry/2022/03/05/100153
Pulumi ~ AWS S3 / KMS のデプロイ ~
https://dk521123.hatenablog.com/entry/2022/03/03/095415
Pulumi ~ AWS Glue のデプロイ ~
https://dk521123.hatenablog.com/entry/2022/03/02/122037
Pulumi に関するトラブル
https://dk521123.hatenablog.com/entry/2022/01/11/105319
非同期処理 ~ async/await, Promise ~
https://dk521123.hatenablog.com/entry/2021/01/16/202822
Future パターン
https://dk521123.hatenablog.com/entry/2014/01/18/000804