sam init を使用する
AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) sam init
コマンドは、次で構成される新しいサーバーレスアプリケーションを初期化するためのオプションを提供します。
-
インフラストラクチャコードを定義するための AWS SAM テンプレート。
-
アプリケーションを整理するフォルダ構造。
-
AWS Lambda 関数の設定。
AWS SAM CLI の概要については、「AWS SAMCLI とは?」を参照してください。
AWS SAM CLI sam init
コマンドオプションのリストについては、「sam init」を参照してください。
新しいサーバーレスアプリケーションを初期化する
AWS SAM CLI を使用して新しいサーバーレスアプリケーションを初期化するには
-
cd
を実行して開始ディレクトリに移動します。 -
コマンドラインで次を実行します。
$
sam init
-
AWS SAM CLI は、新しいサーバーレスアプリケーションを作成するためのインタラクティブフローを通じてユーザーをガイドします。
開始テンプレートを選択する
テンプレートは次で構成されます。
-
インフラストラクチャコードの AWS SAM テンプレート。
-
プロジェクトファイルを整理する開始プロジェクトディレクトリ。例えば、これには次が含まれる場合があります。
-
Lambda 関数コードとその依存関係の構造。
-
ローカルテスト用のテストイベントを含む
events
フォルダ。 -
ユニットテストをサポートする
tests
フォルダ。 -
プロジェクトの設定を構成する
samconfig.toml
ファイル。 -
ReadMe
ファイルおよび他の基本的な開始プロジェクトファイル。
開始プロジェクトディレクトリの例を次に示します。
sam-app ├── README.md ├── __init__.py ├── events │ └── event.json ├── hello_world │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py ├── integration │ ├── __init__.py │ └── test_api_gateway.py ├── requirements.txt └── unit ├── __init__.py └── test_handler.py
-
利用可能な AWS クイックスタートテンプレートのリストから選択することも、独自のカスタムテンプレートの場所を指定することもできます。
AWS クイックスタートテンプレートを選択するには
-
プロンプトが表示されたら、[AWS クイックスタートテンプレート] を選択します。
-
まずは AWS クイックスタートテンプレートを選択します。次に例を示します。
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 - Multi-step workflow 3 - Serverless API 4 - Scheduled task 5 - Standalone function 6 - Data processing 7 - Hello World Example With Powertools 8 - Infrastructure event management 9 - Serverless Connector Hello World Example 10 - Multi-step workflow with Connectors 11 - Lambda EFS example 12 - DynamoDB Example 13 - Machine Learning Template:4
独自のカスタムテンプレートの場所を選択するには
-
プロンプトが表示されたら、[カスタムテンプレートの場所] を選択します。
Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice:
2
-
AWS SAM CLI は、テンプレートの場所を指定するよう促すプロンプトを表示します。
Template location (git, mercurial, http(s), zip, path):
テンプレート .zip ファイルアーカイブに対して次のいずれかの場所を指定します。
-
GitHub リポジトリ – GitHub リポジトリ内の .zip ファイルへのパス。ファイルはリポジトリのルートに存在する必要があります。
-
Mercurial リポジトリ – Mercurial リポジトリ内の .zip ファイルへのパス。ファイルはリポジトリのルートに存在する必要があります。
-
.zip パス – .zip ファイルへの HTTPS またはローカルパス。
-
-
AWS SAM CLI は、カスタムテンプレートを使用してサーバーレスアプリケーションを初期化します。
ランタイムを選択する
AWS クイックスタートテンプレートを選択すると、AWS SAM CLI は Lambda 関数のランタイムを選択するよう促すプロンプトを表示します。AWS SAM CLI によって表示されるオプションのリストは、Lambda によってネイティブにサポートされるランタイムです。
カスタムランタイムでは他のプログラミング言語を使用できます。これを実行するには、開始アプリケーション構造を手動で作成する必要があります。その後、カスタムテンプレートの場所を設定することで、sam init
を使用してアプリケーションを迅速に初期化できます。
選択内容に基づいて、AWS SAM CLI は Lambda 関数コードと依存関係の開始ディレクトリを作成します。
Lambda がランタイムについて複数の依存関係マネージャーをサポートしている場合は、優先する依存関係マネージャーを選択するよう促すプロンプトが表示されます。
パッケージタイプを選択する
AWS クイックスタートテンプレートとランタイムを選択すると、AWS SAM CLI はパッケージタイプを選択するよう促すプロンプトを表示します。パッケージタイプによって、Lambda サービスで使用するために Lambda 関数がどのようにデプロイされるかが決まります。サポートされているパッケージタイプは次の 2 つです。
-
コンテナイメージ – 基本オペレーティングシステム、ランタイム、Lambda 拡張機能、アプリケーションコード、およびその依存関係が含まれています。
-
.zip ファイルアーカイブ – アプリケーション コードとその依存関係が含まれます。
デプロイパッケージタイプの詳細については、「AWS Lambda デベロッパーガイド」の「Lambda デプロイパッケージ」を参照してください。
Lambda 関数がコンテナイメージとしてパッケージ化されたアプリケーションのディレクトリ構造の例を次に示します。AWS SAM CLI はイメージをダウンロードし、関数のディレクトリで Dockerfile
を作成してイメージを指定します。
sam-app ├── README.md ├── __init__.py ├── events │ └── event.json ├── hello_world │ ├── Dockerfile │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py └── unit ├── __init__.py └── test_handler.py
関数が .zip ファイルアーカイブとしてパッケージ化されたアプリケーションのディレクトリ構造の例を次に示します。
sam-app ├── README.md ├── __init__.py ├── events │ └── event.json ├── hello_world │ ├── __init__.py │ ├── app.py │ └── requirements.txt ├── samconfig.toml ├── template.yaml └── tests ├── __init__.py ├── integration │ ├── __init__.py │ └── test_api_gateway.py ├── requirements.txt └── unit ├── __init__.py └── test_handler.py
AWS X-Ray トレースを設定する
AWS X-Ray トレースをアクティブ化するかどうかを選択できます。詳細については、「AWS X-Ray デベロッパーガイド」の「AWS X-Ray とは」を参照してください。
アクティブ化すると、AWS SAM CLI は AWS SAM テンプレートを設定します。次に例を示します。
Globals: Function: ... Tracing: Active Api: TracingEnabled: True
Amazon CloudWatch Application Insights でモニタリングを設定する
Amazon CloudWatch Application Insights を使用してモニタリングをアクティブ化することを選択できます。詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon CloudWatch Application Insights」を参照してください。
アクティブ化すると、AWS SAM CLI は AWS SAM テンプレートを設定します。次に例を示します。
Resources: ApplicationResourceGroup: Type: AWS::ResourceGroups::Group Properties: Name: Fn::Join: - '' - - ApplicationInsights-SAM- - Ref: AWS::StackName ResourceQuery: Type: CLOUDFORMATION_STACK_1_0 ApplicationInsightsMonitoring: Type: AWS::ApplicationInsights::Application Properties: ResourceGroupName: Fn::Join: - '' - - ApplicationInsights-SAM- - Ref: AWS::StackName AutoConfigurationEnabled: 'true' DependsOn: ApplicationResourceGroup
アプリケーションに名前を付ける
アプリケーションの名前を入力します。AWS SAM CLI は、この名前を使用してアプリケーションの最上位フォルダを作成します。
sam init のオプション
sam init
コマンドで使用できる主なオプションの一部を次に示します。すべてのオプションのリストについては、「sam init」を参照してください。
カスタムテンプレートの場所を使用してアプリケーションを初期化する
--location
オプションを使用して、サポートされているカスタムテンプレートの場所を指定します。次に例を示します。
$
sam init --location
https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip
インタラクティブフローを使用せずにアプリケーションを初期化する
--no-interactive
オプションを使用して、コマンドラインで設定の選択内容を指定し、インタラクティブフローをスキップします。次に例を示します。
$
sam init --no-interactive
--runtime go1.x --name go-demo --dependency-manager mod --app-template hello-world
トラブルシューティング
AWS SAM CLI をトラブルシューティングするには、「AWS SAMCLI トラブルシューティング」を参照してください。
例
Hello World AWS スターターテンプレートを使用して新しいサーバーレスアプリケーションを初期化する
この例については、「チュートリアル: Hello World アプリケーションのデプロイ」の「 ステップ 1: サンプルの Hello World アプリケーションを初期化する」を参照してください。
カスタムテンプレートの場所を使用して新しいサーバーレスアプリケーションを初期化する
カスタムテンプレートに GitHub の場所を提供する例を次に示します。
$
sam init --location
gh:aws-samples/cookiecutter-aws-sam-python
$
sam init --location
git+sh://git@github.com/aws-samples/cookiecutter-aws-sam-python.git
$
sam init --location
hg+ssh://hg@bitbucket.org/repo/template-name
ローカルファイルパスの例を次に示します。
$
sam init --location
/path/to/template.zip
HTTPS によって到達可能なパスの例を次に示します。
$
sam init --location
https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip
詳細
sam init
コマンドの使用方法の詳細については、次を参照してください。
-
AWS SAM の学習: sam init
– YouTube の Serverless Land の「AWS SAM の学習」シリーズ。 -
AWS SAM CLI で使用するサーバーレスアプリケーションの構築 (SAM S2E7 を使用したセッション)
– YouTube の AWS SAM を使用したセッションのシリーズ。