CloudFormation
テンプレートファイルのセクション
Resouces
作成すべきAWSリソースの定義
Outputs
展開後に参照させたい値の定義
Parameters
展開時に任意の値を注入できる、つまり仮引数。
型, デフォルト値, コメント, 制約 などが設定できる
Resouces, Outputs で Ref を使って参照できる。
組み込みで用意されているものは擬似パラメータとよばれる
SSMパラメータストアの値なども特殊な形式で参照できるので、パラメータ定義は不要
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/dynamic-references.html
Conditions
Resources, Outputs を展開するか否かの条件式
Mappings
Fn::FindInMap で参照する用の map<string, map<string, any>>
CloudFormation 組み込み関数
CLIコマンド
aws cloudformation package
アーティファクトをパッケージ化して S3 にアップロードする。
アーティファクトには Lambda のコードや API Gateway の Swagger ファイルなどが含まれる。
Lambda を S3 指定してるケースでとても有効。
aws cloudformation deploy
スタックのデプロイを実施する。
Lambda を S3 指定してるケースなどでは事前に package コマンドもやっておこう。
SAMを使う
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/transform-aws-serverless.html
Transformセクションを使う
AWS::Serverless オプションを記載する
ここでSAMのバージョンを指定する
エクスポート(Outputs)名の一意性
AWSアカウント X リージョン 単位で一意であるべし
なので、エクスポートを含むテンプレートを同一リージョンに2つ展開するとコンフリクトエラーになる
EC2向けの Python ヘルパースクリプト
cfn-init
デプロイ時にEC2インスタンスをカスタマイズする
cfn-get-metadata
特定キーのリソースに対してメタデータを取得するのに使う
cfn-hup
メタデータへの更新をフック的に取得する
cfn-signal
他のリソース作成との同期を目的として、終わったよ〜みたいなシグナルを投げる
LambdaをCFnでデプロイ
AWS::Lambda::Function
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html
ZipFile
Node.js / Python に限り、インライン文字列を Lambda のコードとして記載できる
使うことはなさそう
S3***
S3にアップロードした Zip ファイルを指定して Lambda のコードとする
よく使いそう
ImageUri
コンテナイメージのURLを指定して Lambda の実行イメージとする
handlerは実際のコードの中にあるメソッド名を指定するのに使う
他サービスとの連携