AWS SAM の --guided って何?

記事タイトルとURLをコピーする

こんにちは、アプリケーションサービス部ディベロップメントサービス1課の滝澤です。

本記事をご覧いただきありがとうございます。

本記事は AWS Serverless Application Model(以下、SAM) のテンプレートをデプロイする際に使用できる --guided オプションについて説明しようと思います。 SAM の概要についてはこちらの記事をご覧ください。

blog.serverworks.co.jp

AWS SAM とは?

SAM は、サーバーレスアプリケーションを定義、デプロイ、管理するためのフレームワークです。これは、AWS CloudFormation の拡張セットとして機能し、簡単な構文でサーバーレスリソースを記述できるといった特徴があります。

前提(SAM プロジェクトの初期化)

SAM CLI は執筆時点で最新のversion 1.108.0を使用しています。

今回は AWS が用意しているテンプレートのHello World Exampleを使用することにしました。

以下のコマンドを使用することで対話形式で新しいサーバーレスアプリケーションを初期化することができます。 本質ではないので詳しい説明は割愛します。

sam init
$ sam init

Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1

Choose an AWS Quick Start application template
        1 - Hello World Example
        2 - Data processing
        3 - Hello World Example with Powertools for AWS Lambda
        4 - Multi-step workflow
        5 - Scheduled task
        6 - Standalone function
        7 - Serverless API
        8 - Infrastructure event management
        9 - Lambda Response Streaming
        10 - Serverless Connector Hello World Example
        11 - Multi-step workflow with Connectors
        12 - GraphQLApi Hello World Example
        13 - Full Stack
        14 - Lambda EFS example
        15 - Hello World Example With Powertools for AWS Lambda
        16 - DynamoDB Example
        17 - Machine Learning
Template: 1

(以下略)

デプロイしてみる

さてここからが本題です。

SAM のデプロイには sam deployコマンドが使用できますが、この際に--guidedオプションを指定することでプロンプトを用いたガイドを有効にすることができます。

Stack Name

作成される CloudFormation Stack の名前です。 デフォルトでは、プロジェクトの名前が設定されています。

AWS Region

デプロイするリージョンです。 デフォルトでは AWS CLI の使用するプロファイルのデフォルトリージョンになります。

Parameter

パラメータを設定している場合はここで聞かれます。

Confirm changes before deploy

変更を確認するか設定します。

デフォルトでは Yes が選択されます。

No を選択してもデプロイ前に以下のような Change set は出ます。

Yesを選択した場合にはその後に以下のプロンプトでの応答が必要になります。

Deploy this changeset? [y/N]: 

Allow SAM CLI IAM role creation

SAM に必要な IAM Role の作成を許可するかを設定します。 IAM Role の作成を定義しているのにこちらを No で設定するとデプロイに失敗するので注意しましょう。 デフォルトでは Yes が選択されます。

Disable rollback

ロールバックを無効にするか設定します。 デフォルトでは No です。

[関数名] has no authentication

認可が定義されていない[関数名]の作成を許可するか聞かれます。 今回は、サンプルのHello World Exampleを選択しましたが、認可なしで API Gateway エンドポイントにパブリックにアクセスできるように設定されているため表示されました。

意図したものであれば yを選択しましょう。 デフォルトでは No が選択されます。

Save arguments to configuration file

これまでの設定内容をファイルに保存するか設定します。 デフォルトでは Yes が選択されます。

SAM configuration file

設定ファイルの名称を設定します。 使用できる拡張子は.toml``.yaml``.ymlです。 デフォルトでは samconfig.tomlと設定されます。

SAM configuration environment

デフォルトの環境を設定します。 デフォルトではdefaultが設定されます。

2回目以降のデプロイは?

Save arguments to configuration fileYesを選択した場合には、config ファイル(SAM configuration fileで設定したファイル名)に設定内容が保存されています。

そのため、2回以降はオプションをつけずにsam deployをするだけで今回設定した内容でデプロイをすることが可能です。

もちろん、再度sam deploy --guidedを実行して設定を上書きすることもできます。

終わりに

最後までお読み頂きありがとうございました。

本記事では SAM の --guided オプションについて説明しました。 このオプションを使用することでスタック名、リージョン、パラメータなどの重要な設定を対話的に行うことができ、特に新規ユーザーや初めて AWS SAM を使用する開発者にとっては大きなメリットがあります。また、デプロイメントの自動化と設定の保存機能により、再デプロイメントが簡単になり、開発プロセスがよりスムーズに進行します。

その--guidedオプションについての理解に本記事が少しでもお役に立てれば幸いです。

滝澤 稜(執筆記事の一覧)

アプリケーションサービス部ディベロップメントサービス1課

2022年に新卒で入社しました。 うどんが大好物です。