翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SAM でアプリケーションを作成する
使用を開始し「AWS Serverless Application Model (AWS SAM) を使用する方法」を読み終えれば、デベロッパー環境で AWS SAM プロジェクトを作成する準備が整います。AWS SAM プロジェクトは、サーバーレスアプリケーションを記述するための出発点の働きをします。AWS SAM CLI sam init
コマンドオプションのリストについては、「sam init」を参照してください。
AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) sam init
コマンドは、次で構成される新しいサーバーレスアプリケーションを初期化するためのオプションを提供します。
-
インフラストラクチャコードを定義するための AWS SAM テンプレート。
-
アプリケーションを整理するフォルダ構造。
-
AWS Lambda 関数の設定。
AWS SAM プロジェクトを作成するには、このセクションのトピックを参照してください。
新しいサーバーレスアプリケーションを初期化する
AWS SAM CLI を使用して新しいサーバーレスアプリケーションを初期化するには
-
cd
を実行して開始ディレクトリに移動します。 -
コマンドラインで次を実行します。
$
sam init
-
AWS SAM CLI は、新しいサーバーレスアプリケーションを作成するためのインタラクティブフローを通じてユーザーをガイドします。
注記
チュートリアル: を使用して Hello World アプリケーションをデプロイする AWS SAM で説明されているように、このコマンドはサーバーレスアプリケーションを初期化し、プロジェクトディレクトリを作成します。このディレクトリには、ファイルとフォルダがいくつか含まれています。最も重要なファイルは
template.yaml
です。これが使用する AWS SAM テンプレートです。ご使用の Python のバージョンは、sam init コマンドで作成されたtemplate.yaml
ファイルにリストされている Python のものと、一致する必要があります。
開始テンプレートを選択する
テンプレートは次で構成されます。
-
インフラストラクチャコードの 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 を使用したセッションのシリーズ。
次のステップ
AWS SAM プロジェクトを作成したら、アプリケーションのオーサリングを開始できます。これを行うために必要なタスクの詳細については、「AWS SAMを使用してインフラストラクチャを定義する」を参照してください。