初めに
昨日AWS SAM CLI v1.98.0がリリースされました。
今回のアップデートで追加された--save-params
オプションをsamコマンド実行時に付与することで、samconfigファイルを別途編集することなく実行時に指定したオプションを書き込んでくれるようになりました。
samconfigとは
samconfigはAWS SAM CLIで利用される設定ファイルとなります。
tomlもしくはyamlフォーマットで記述します。
こちらに値を設定するとsamコマンド実行の際に別途オプションを指定せずともそのオプションが指定されているのと同等の振る舞いをします。
例として以下のsamconfigファイルを用意します。
samconfig.toml
version = 0.1
[default title="samconfig.toml"]
[default.global.parameters]
stack_name = "sam-app"
debug = true
[default.build.parameters]
cached = true
parallel = true
[default.validate.parameters]
lint = true
この時以下の2つの実行は同義となります。
sam build
sam build --debug --cached --parallel
個人的なイメージとしては常に指定しておきたいものはsamconfigに指定しておき、スポットで必要となるものは都度コマンドで指定という感覚ではあります。
上記の通りsamconfigは常々編集するようなファイルではないのですが、これまでちょっとあのパラメータ変更したいなと思った時にわざわざ開いて編集する必要があり手間だったのが今後は--save-params
オプションを指定してsamコマンドを実行することで実行するだけで実行時に指定したオプションを自動的にsamconfigファイルに書き込んでくれるようになりより楽に作業ができるようになります。
試してみる
以下の内容のsamconfig.toml
を用意して比較用に複製を作っておきます。正確には記述内容後にデプロイ等他のパラメータも含まれていますが本検証には影響はありません。
samconfig.toml
version = 0.1
[default]
[default.global.parameters]
stack_name = "sam-app"
[default.build.parameters]
cached = true
parallel = true
[default.validate.parameters]
lint = true
通常時の実行では当然samconfig.toml
に変動はありません。
% sam build --no-cached --debug
2023-10-05 13:43:28,703 | Config file location: /Users/xxxxx/git/sam-app/samconfig.toml
2023-10-05 13:43:28,704 | Loading configuration values from [default.['build'].parameters] (env.command_name.section) in config file at
...
% diff samconfig.toml samconfig.toml.bk | wc -l
0
--save-parames
オプションを実行すると--no-cached
オプション相当の設定となるようにcached = false
が設定されていることが確認できます。
% sam build --no-cached --save-params --debug
2023-10-05 13:46:57,559 | Return available internal hook packages
Saved parameters to config file 'samconfig.toml' under environment 'default': {'cached': False}
...
# 気になる点があって上記の実行後もいくつか試してる関係で変更時刻が上記の実行と少しずれてます
% diff -uBb samconfig.toml samconfig.toml.bk
--- samconfig.toml 2023-10-05 14:47:10
+++ samconfig.toml.bk 2023-10-05 13:42:01
@@ -7,7 +7,7 @@
stack_name = "sam-app"
[default.build.parameters]
-cached = false
+cached = true
parallel = true
ここでdebug = true
が設定されていないぞ?と思ったのですが一部設定は書き込まれないように例外処理がされているようです。
ユニットテストを見る限り少なくとも- --save-params
と--config-file
は除外されていそうですが、そのほかにも--debug
、--config-env
あたりは対象外となっていそうです。
また機能としてはあくまで指定されたパラメータを保存機能となるため--cached
と--no-cached
のように対になるパラメータが存在しているものは書き換えられますが--parallel
のように対になるものが存在しないオプションは書き換えられなかったり、そもそものパラメータの削除自体が行えない点はご注意ください。
終わりに
細かい機能ではありますがリリース後の検証やってるとそのタイミングだけ常にしたいオプションがあったりするので実行タイミングでセットで書き換えられて地味にありがたいです。
これでエディタのタブに複数のプロジェクトのsamconfigを開きっぱなしにしてる時に別のプロジェクトのファイルを触ってハマるのに悩まされなくて済みます。