【Cloudformation】RefやFn::GetAttが何を返すのか
Cloudformation初心者の私が最初に躓いたRefとかGetattの話です。
リソースによってRefで返す値が異なる。
Ref関数を使うと、テンプレート内のリソースIDを引数にしてARNだったり、リソース固有のIDだったりを返してくれるのですが、最初にハマったのは「じゃあリソースごとに一体なにを返すんですか?」という点。
結論から言うと、公式ドキュメントに書いてあります。
例えば、AWS::ApiGateway::RestApiをそのままぐぐってみると公式ドキュメントの以下のページが出てきます。
このページの下の方に下っていくと、「戻り値」というセクションにこのリソースが何を返すか書いてあります。
ID このリソースの論理 ID を組み込みの Ref 関数に渡すと、Ref は次を返します: a1bcdef2gh などの RestApi。
ただ、正直何を言っているか意味がわかりません。自動翻訳のせいだと思われます。このせいで理解するのに結構時間がかかりました。
おすすめは、公式ページは諦めて、githubの原点に当たること。
この中にはおそらく自動翻訳した元の英語の一覧が出てきます。
同じ様にAWS::ApiGateway::RestApiを開いてみると、
Return Valuesのセクションに以下のような記載があります。
When you pass the logical ID of this resource to the intrinsic Ref function, Ref returns the RestApi ID, such as a1bcdef2gh.
英語のほうがよっぽどわかりやすい!!
RestApi IDを返してくれるということがひと目で分かります。
GetAtt関数についても同じです。自動翻訳されていない英語のほうがわかりやすいです。
こっちを見るようになってから、だいぶツラくなくなりました。
以上です。