でこてっくろぐ ねお

UbieのSRE。でこらいふろぐ(http://dekolife.hatenablog.com/)の姉妹版。デコテックログ(deko tech log)である

AWSでCloudFormationを使う時にAWS SAMで代替できる部分は全部AWS SAMでやっていこう!と思った(追記:主にLambdaとIAM)

以前 AWSで作業する時は今後はずっとCloudFormationだけ使っていこうと思った - でこてっくろぐ ねお というエントリを書きましたが、最近はAWS SAMを使って色々作っており、これはめっちゃ便利だな、しかも思ってたよりも柔軟性が高い、という気持ちになったのでこのエントリを書いている。

(と思ったけど、DynamoDBは細かい制御が効かなかったので、以下は主にLambda + IAMについて書いていると考えてください)

めっちゃ便利

  • CloudFormationと比較してとにかく記述量が圧倒的に少ない、圧倒的に読みやすい
  • CloudFormationと比較して、IAM Role周りの設定がある程度隠蔽されていて嬉しい。IAM Role周りはいつも何を付与すればいいかが難しいし、後から見ても難しい
  • AWS SAM Localが使えて簡単に手元で動作確認ができる
    • これは小さいものを作る時には便利。 sam local generate-event でイベントファイルを生成しさえすれば後はそれをチョロチョロっと書き換えて sam local invoke に食わせてめでたしめでたしとか、 sam local start-api で手元でAPI Gatewayを立ち上げたりとかできて便利
    • LambdaやAPI Gateway以外と連携したい時にどうするの、という問題はある。また、起動は遅い。

柔軟性も高い

  • IAM Roleの設定がSAMに隠蔽されていると言っても、リソースはCloudFormation同様に見られるので、後から細かい設定を知りたくなったときも問題ない
  • IAM Roleの細かい設定をしたくなった際は細かい設定を行うための方法もある
  • 同じテンプレートにCloudFormationもSAMも両方書ける

AWS SAMを使って色々作ったもの

追記

  • DynamoDBとかは細かい制御が効かないため