インフラ

[Cloudformation]Fn::Subを使って文字列内に変数をいれる

cfn sub

こんにちは、ちゃりおです。

今回は、Cloudfomation書くときに便利なFn::Subについて書いてみます。

ちゃりお
ちゃりお
組み込み関数 Subについてです!

Fn::Subとは

この組み込み関数 Fn::Sub は特定した値の入力文字列にある変数の代わりになります。テンプレートで、スタックを作成または更新するまで使用できない値を含むコマンドまたは出力を作成するために、この関数を使用できます。

公式ドキュメントから引用

Cloudformationの組み込み関数の一つで、テンプレート上で変数を表示したいときに使います。

具体例

よく使う書き方

Name: !Sub
  - web001.${Domain}
  - Domain:
      !Ref DomainName

DomainNameの値が、「exameple.com」だった場合
Nameにはweb001.example.comが入ります。

複数の値を渡したい場合

また、複数の値を設定することもできます。

Name: !Sub
  - ${Env}-web001.${Domain}
  - Env:
      !Ref Env
    Domain: 
      !Ref DomainName   

Envに「stg」が入っていて、DomainNameに「example.com」入っていた場合
Nameはstg-web001.example.comとなります。

!Ref以外の場合

ImportValueやGetAttで値をとってくることもできます。
ネストさせることもできるので、柔軟に使えます。

ImportValueでとってくるパターンも割と使うと思うので載せておきます。

Name: !Sub
  - web001.${Domain}
  - Domain:
        Fn::ImportValue: !Sub '${Env}-HostedZone-Private-Name'

まとめ

今回は、Fn::Subの使い方についてでした。
公式ドキュメントでまとまっているので割と書くことありませんでしたw
よく使われるパターンを書いてみたので、参考になればと思います。

Sysops
運用経験なしでも取れるAWS認定 SysOps(改訂版)の勉強法最近改訂された、AWS SysOpsの勉強法をまとめてみました。 対象 AWSソリューションアーキテクトアソシエイトの勉強法・概要...
VPCアンチパターン
VPCをつくる前に見てほしいVPCアンチパターンこんにちは、ちゃりおです。 勉強会や資格勉強で、最近VPCについて考えることが多いです。 今回は、VPCを作成する際に個人的によくな...
RDSリードレプリカのメンテナンスでダウンタイムを発生させない方法こんにちは、ちゃりおです。 この前、RDSのリードレプリカのHWメンテナンスがありました。 メンテナンスによって、メンテナンスウィンド...

Amazonで「AWS」の本をみてみる!!