翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
でアプリケーションを作成する AWS SAM
使用を開始し「( AWS Serverless Application ModelAWS SAM) の使用方法」を読み終えれば、デベロッパー環境で AWS SAM プロジェクトを作成する準備が整います。 AWS SAM プロジェクトは、サーバーレスアプリケーションを記述するための開始点として機能します。sam init
コマンドオプションのリスト AWS SAMCLIについては、「」を参照してくださいsam init。
AWS Serverless Application Model コマンドラインインターフェイス (AWS SAMCLI) 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 SAMCLIをダウンロードし、関数の ディレクトリ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 テンプレートが AWS SAMCLI設定されます。以下に例を示します。
Globals: Function: ... Tracing: Active Api: TracingEnabled: True
Amazon CloudWatch Application Insights でモニタリングを設定する
Amazon CloudWatch Application Insights を使用してモニタリングをアクティブ化することを選択できます。詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon CloudWatch Application Insights」を参照してください。
アクティブ化すると、 によって AWS SAM テンプレートが AWS SAMCLI設定されます。以下に例を示します。
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 SAMCLI、「」を参照してください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
– でのServerless Land「学習 AWS SAM」シリーズYouTube。 -
AWS SAM CLI で使用するサーバーレスアプリケーションの構築 (SAM S2E7 を使用したセッション)
– YouTube の AWS SAM を使用したセッションのシリーズ。
次のステップ
AWS SAM プロジェクトを作成したので、アプリケーションの作成を開始する準備が整いました。これを行うために必要なタスクの詳細については、「でインフラストラクチャを定義する AWS SAM」を参照してください。