Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜconsole.logはTokenになるのか?もうハマらないためにTokenをちゃんと理解する

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Shota Kawasaki Shota Kawasaki
February 01, 2026
67

 なぜconsole.logはTokenになるのか?もうハマらないためにTokenをちゃんと理解する

AWS CDKのTokenの仕組みを追っています。

Avatar for Shota Kawasaki

Shota Kawasaki

February 01, 2026
Tweet

Transcript

  1. JAWS-UG 茨城 #11 CDK 支部コラボ回 2026/2/1 Shota Kawasaki なぜconsole.log はToken

    になるのか? もうハマらないためにToken をちゃんと理解する
  2. cdk synth 時 cdk deploy 時 なぜToken が必要か Cfn テンプレート時点では

    まだリソースが存在しない Cfn がリソースを作成して はじめてarn やID が確定 「まだ決まっていない値」をTypeScript として 扱うために、仮の値を埋め込んでおく必要がある。 これがToken
  3. Construct Prepare Validate Synthesize CDK のアプリケーションライフサイクル CDK App Deploy Cfn

    TypeScript コードのほとんどはConstruct フェーズで実行され、実際にToken が生成される 生成されたToken が解決され、 Cfn に展開される
  4. Synthesize CfnReference がresolve される /packages/aws-cdk-lib/core/lib/private/cfn-reference.ts Synthesize フェーズではTS がCfn に変換されるため、 検知されたToken

    もTokenMap によってIResolvable な値が 取り出され、Cfn に解決される Intrinsic クラスを継承しており、Intrinsic クラスのresolve メソッドを実行する
  5. 結局、Token に対して文字列操作したい時はどうする? Fn 組み込み関数を利用する CloudFormation に埋め込まれ、deploy 時に解決される Fn.join(delimiter, values)→ 文字列を結合

    Fn.split(delimiter, string)→ 文字列を分割 Fn.select(index, array)→ 配列から要素を選択 Fn.sub(template, variables)→ テンプレート文字列を置換