見出し画像

CloudFormation-疑似パラメータ

みなさん、こんにちは。ちゃみみです。

本日は、CloudFormationを書いていく上で利用するSub関数でよく使われる疑似パラメータなるものについて書いていこうと思います。
疑似パラメータってなんやねん!って思うかもしれないのですが、これです。

上記でいうところの<<<${AWS::AccountId}>>>ですね。
この部分てインフラから言うとテンプレートの汎用性(どんな環境でもある程度使えるように)を高めるためによく書いたりするんですが、この代名詞的なパラメータが思いつかないとかって時が書いているとよくあって探すときに割かし時間をもってかれるのでこのあたりをまとめようと思います。
そもそも一体いくつあるのか?もさっぱりわかってなかったんで汗

${}で落としこむ前の中身を書きますが、以下のようです。2022年4月現在

AWS::AccountId
→こちらは、まぁお馴染みですがStackを作成するときに使われているAWSアカウントのIDが返ってくる形となりますね。

AWS::NotificationARNs
→現在のStackの通知に使われるARNのリストを返してくる感じですね。返したところでってのはあるんですが(結構私は、時間を要するものはともかくとして確実にデプロイできるかをしっかり見届けるので)
私、今まで全く使ったことねぇっすw
参考例だとこんな感じです。

AWS::NoValue
Fn::If 組み込み関数の戻り値として指定すると、対応するリソースプロパティを削除するパラメータのようです。
Ifを使うあたり条件式による分岐に用いるようですが、その条件に見合うと書き込んだ要素(セクションの内容)が実施されますが、条件に合致しないと削除?(というかスルーされるというのが正しい?)されるみたいです。
これも全く使ったことねぇっす汗
参考例は、こんな感じです。

ここで使われる場合を紐解くと、このRefで指定したスナップショットがあればそれを使ってこのDBを構成するけど無い場合はスルーするって感じですね。ナレッジを見る限りCloudformationでこの「DBSnapshotIdentifier」プロパティを削除すると書いてあります。
ひとまず、条件に合致しなければ実施はされないということはわかるのですが気になる点としては、この↑のテンプレートを実行したときに削除と真に受けた場合にStackが無事に構成された場合、Stackから確認できるテンプレート内でこの構文「DBSnapshotIdentifier」自体が削除されているのか?という点です。
その場合確かに削除されるという意味合いが強いのですが、そうではない場合単にスルーしたという表現が正しいのでこのあたりの情報をお持ちの方募集しますww

AWS::Partition
これも全く使ったことないので恩恵を感じたことがないのですが、使うとリソースがあるパーティションを返すようで標準のAWSリージョンの場合は、パーティションが「aws」でこれを返してくるそうです。
ただ他の中国などのリージョンにあるリソースパーティションは、「aws-cn」だったりと微妙に各リージョンのリソースによって変わるのでそのあたりは使ってみて~~という感じになりそうです。

AWS::Region
これは恐らくSub関数などでは一番使っているんじゃないでしょうかね?
Stackやサービスを構成しているリージョンを変数に置き換えているので東京リージョン上でこのパラメータを使えばイメージとして
!Sub ${AWS::Region} = ap-northeast-1 てな具合で変換されるのでARN情報をハードコーディングするよりもテンプレートの汎用性を高めるためにこのパラメータは良く使うので覚えておいて損はないと思います。

AWS::StackId
これは、アタクシほぼ使ったことないですがStackのIDを返してくれるそうです。使いどころがわからんとです泣
例:aws cloudformation create-stack など、arn:aws:cloudformation:us-west-2:123456789012:stack/teststack/51af3dc0-da77-11e4-872e-1234567db123 コマンドで指定されたようにスタックの IDが返ってくる。

AWS::StackName
これも上記同様、一度も使ったことなくて使いどころがよくわからんとですがStackの名前のほうを返してくれるのでIDじゃなくて名前をという場合にはアリかなと思います。
使いどころのイメージとしては、OutputsセクションとかでExport値を出すときに使うかなーというくらいでしょうか、、、
例:aws cloudformation create-stack など、teststack コマンドで指定されたようにスタックの名前を返します。

AWS::URLSuffix
ドメイン返すようですがメインどころのサービスでもこれをRefやSubで使ったことないですね、、、使う所がどっかでありそうなんですが、、、
例:ドメインのサフィックスを返します。サフィックスは、通常 amazonaws.com ですが、リージョンによって異なります。例えば、中国 (北京) リージョンのサフィックスは amazonaws.com.cn です。


とまぁ、今回はこんな感じで疑似パラメータの記事を書いてみましたのでSEライフでお役立てください。

2022年04月24日

いいなと思ったら応援しよう!