CloudFormationのFn::Base64について簡単にまとめ。
(前提)CloudFormation
AWS(Amazon Web service)に置いてIaC(Infrastructure as Code)を実現するサービス。
CFnドキュメント
IaCとは
Fn::Base64とは(主題)
組み込み関数 Fn::Base64 は、入力文字列の Base64 表現を返します。この関数は通常、UserData プロパティを介して Amazon EC2 インスタンスにエンコードされたデータを渡すために使用されます。
(横道1)「Fn::」は「!」とする事が出来る
Fn:: を ! と書けるだけ?と勘違いするかと思いますが、違います。そんなふうに考えていた時期が俺にもありました
・行数も減る。
・短縮形(!)の中で短縮系では利用出来ない(Base64でも然り/先のドキュメントでも言及されている)
短縮形を使用し valueToEncode パラメータにすぐに別の関数を含める場合、少なくとも 1 つの関数では、完全名関数を使用します。例えば、次の構文は無効です
!Base64 !Sub string
!Base64 !Ref logical_ID
代わりに、次の例に示すように、少なくとも 1 つの関数では、完全名関数を使用します。
!Base64
"Fn::Sub": string
Fn::Base64:
!Sub string
との事。
Base64内でFn::Subを使う
ユーザーデータの中でCloudFormationのパラメーターを使いたいことがよくあります。
そういう場合は、組み込み関数Fn::Subを使用します。
ドル記号と中括弧 (
{!Literal} など)。AWS CloudFormation では、このテキストは ${Literal} のようになります。 {}) をそのまま書き込むには、最初の中括弧の後に感嘆符 (!) を追加します (
記法についての注意
[Fn::Base64: |-」
↓
Fn::Base64: !Sub下の行に- |
- |横縦の順番になり、変数を利用しない場合と順番が逆になる
複数変数を入力する際は結論に,を忘れないこと
(横道2)一行目の「#!/bin/bash」
「おまじない」と思って書いている方も多くいるのではないでしょうか。・・・私もその一人でした。
Linuxシェルでは先頭行に「#!/bin/bash」と書くべき(理由)
※追加の情報やTIPSが見つかったらまた更新します.
Discussion