[アップデート]AWS SAM CLIのTerraform統合機能が正式リリース(GA)となりました

2023.09.06

初めに

本日AWS公式からAWS SAM CLIのTerraformのサポートが正式にアナウンスされました。

上記のリリースでは直接言及はありませんがaws-sam-cliのリポジトリのディスカッション上やAWS公式ブログでGAされた旨の記載があり公式ドキュメント上からもプレビュー版の記載が消えているため、v1.97.0を持って正式リリースとなります。

https://github.com/aws/aws-sam-cli/discussions/4553#discussioncomment-6918701
Terraform support in SAM CLI tool is GA now (announcement) in release 1.97.0. Please refer to this blogpost to know what is supported in the new SAM CLI release, and also refer to this docs to get more info regarding the SAM CLI and Terraform integrations.

ドキュメント上ではこの赤枠の部分が消えた。


本機能を利用することでCloudFormationベースのSAMテンプレートの利用が必須でなくなりインフラのIaCをTerraformで実現しつつSAMのローカルでの実行機能が利用可能となります。

なおTerraformのサポートの自体はベータ機能としてですが以前より追加されているためv1.97.0以前のバージョンでも利用可能です。

機能について

改めてとなりますがSAMではsam localコマンドを使うことでローカル環境上でlambdaのコードおよびAPI Gatewayを含めたテストが可能です。

  • sam local invoke
    • lambda関数を直接実行できる
  • sam local start-api
    • HTTPエンドポイントを立ち上げ(API Gatewayモック)lambda関数を実行できる
  • sam local start-lambda
    • HTTPエンドポイントを立ち上げ(Function URL相当)lambda関数を実行できる

厳密にはこれに加えテストイベント用のファイルを生成するsam local generate-eventが存在します。

前述の通り機能自体は以前より存在しているため、当ブログでも既にいくつかアップデートブログが執筆されておりますのでそちらをご参照ください。

GAタイミングでの変更点

とはいえv1.97.0で特に何の変更もないというわけではなく、ざっくり眺める感じでは実行時の--beta-featuresして周りの削除に加えてAPI Gatewayのv2(httpApi)への対応が行われているようです。

--beta-featuresはベータ機能を利用するためのフラグとなり、以前はこれをつけないと実行の確認が都度行われましたが今回正式リリースとなり指定が不要となりました。

# 以前まで、都度実行時にフラグを指定するかsamconfigにbeta_features=trueの指定をしないと以下のように利用の確認が行われた
% sam build --hook-name terraform
Supporting Terraform applications is a beta feature.
Please confirm if you would like to proceed using AWS SAM CLI with terraform application.
You can also enable this beta feature with 'sam build --beta-features'. [y/N]: y

終わりに

AWS SAM CLIで利用するSAMテンプレートはCloudFormationベースなのもありTerraformを採用されている環境では利用できず、Terraformでローカルの関数のテストをする場合は自前で別の仕組みで準備する必要がありました。

前述した通りTerraform統合の利用は以前から可能でしたがSAMテンプレート利用時と比べると機能も限定的でありベータ版となると実務上での利用は...となっていた方もいらっしゃったかと思います。

直近の機能追加等で機能面についてはほぼ解消されてる印象はありますしベータが抜けて業務上の提案等もしやすくなるかと思いますので、独自でテスト用の仕組みを管理してる方は一度機能を見てSAMに移行できないかを検討して見てはいかがでしょうか。