AWS Lambda用のデプロイツール、lambroll の v1.0 を2024年2月10日にリリースしたのでお知らせです。
リリースして早速ですが v1.0.0 には一部のフラグ名がv0と異なるというバグがあるので、v1.0.1 以降をご利用ください。
v0.x と v1 の変更点
リポジトリ にまとめてありますが、簡単に解説します。
非互換変更
lambroll archive
zipのバイナリを、標準出力ではなくファイルに書き出します
デフォルトのファイル名 function.zip
(--dest
オプションで指定可能) に書き出すようになりました。
--dest -
を指定することで、v0と同様に標準出力に書き出すことができます。
lambroll diff
コマンドは、常に短縮型の unified 形式で出力します
--unified
オプションは廃止されました。
新機能
Lambda Function URLのデプロイをサポート
function_url.json (.jsonnetも可) というファイルを例として以下のように用意して、lambroll deploy --function-url function_url.json
としてやると、function自体のdeployが終わったあとに Function URL をデプロイします。必要な Lambda permission も同時に付与します。
{ "Config": { "AuthType": "NONE" } }
これは認証なしの一番単純な形式ですが、IAM認証やCORSの指定にも対応しています。Config, Permissions はそれぞれ、AWS SDK Go v2 の CreateFunctionUrlConfigInput と AddPermissionInput に対応しています。
{ "Config": { "AuthType": "AWS_IAM", "Qualifier": "current", "Cors": { "AllowOrigins": [ "*" ], "AllowMethods": [ "GET", "POST" ] }, }, "Permissions": [ { "Principal": "0123456789012" }, { "PrincipalOrgID": "o-123456789", "Principal": "*" } ] }
備考
deploy --function-url
が指定された場合のみ、Function URL デプロイを行います- オプションを指定しない場合は既存の Function URL のリソースが存在していても変更を行いません
lambroll init
で既存 function を指定して設定ファイル化する場合、--function-url
フラグを指定すると function_url.json の生成も行いますlambroll diff
についても--function-url
オプションが指定された場合のみ、Function URL についての変更差分を表示します
SSM テンプレート関数追加
{{ ssm "/path/to/parameter" }}
という記法で、SSMパラメーターストアの値をテンプレート展開できるようになりました。
lambroll status
コマンド追加
現在のfunctionの情報を出力します。--output json
オプションでJSON形式での出力もできます。
$ lambroll status +-----------------+-----------------------------------------------------------+ | FunctionName | hello | | FunctionArn | arn:aws:lambda:ap-northeast-1:314472643515:function:hello | | Version | $LATEST | | Runtime | provided.al2023 | | PackageType | Zip | | State | Active | | LastUpdateState | Successful | | FunctionURL | https://xxxxxxxxxxxxxxx.lambda-url.ap-northeast-1.on.aws/ | +-----------------+-----------------------------------------------------------+
lambroll render
コマンド追加
lambroll render
を実行すると、設定ファイル (function.json, .jsonnet) をレンダリングして標準出力に出力します。
環境変数 LAMBROLL_XXX
をオプションとして受け入れます
例えばこれまで lambroll deploy --tfstate=s3://example/terraform.tfstate
としていた場合、 LAMBROLL_TFSTATE=s3://example/terraform.tfstate
という環境変数を設定することで、コマンドラインオプションでの指定を省略できます。
diff
とdeploy
コマンドに --ignore
オプションを追加
--ignore
で指定された function.json 内の要素について、diff
と deploy
時に比較と更新を無視するようになりました。
例えば lambroll deploy --ignore ".Timeout, .Environment"
と指定すると、Timeout
と Environment
の値はデプロイ実行時に無視されます。特定の値は更新したくないような場合に便利です。
その他の変更
- AWS SDK Go を v1 から v2 に更新しました
- CLI flag parser を kingpin から kong に変更しました
- リリースバイナリの生成を GoReleaser で行うようにしました
- アーカイブのパッケージ構成が変わっています。独自のインストール用のscriptがある場合は修正が必要になる可能性があります
- aqua をご利用の場合は aqua-registry v4.131.1 以降に更新をお願いします
lambroll v1.0.0 がリリースされましたが、 aqua で lambroll をインストールしている人は aqua-registry を v4.131.1 以降に update してください https://t.co/EZkrCBXWXq
— Shunsuke Suzuki (@szkdash) 2024年2月10日- CircleCI orb を利用している場合、
fujiwara/lambroll@2.0.1
を使用してください - Github Actions では
fujiwara/lambroll@v1
を使用してください
まとめ
Lambroll v1をリリースしました。目玉機能は Function URL のサポートです!
ドキュメントに書かれた以外の非互換変更は意図しないものの可能性が高いため、もし見つけたらissueなどで教えていただけると嬉しいです。