sam init コマンドを使用してアプリケーションを作成する - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

sam init コマンドを使用してアプリケーションを作成する

の開始方法と読み取りが完了したらAWS Serverless Application Model (AWS 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 を使用して新しいサーバーレスアプリケーションを初期化するには
  1. cd を実行して開始ディレクトリに移動します。

  2. コマンドラインで次を実行します。

    $ sam init
  3. AWS SAM CLI は、新しいサーバーレスアプリケーションを作成するためのインタラクティブフローを通じてユーザーをガイドします。

    注記

    で説明されているようにチュートリアル: Hello World アプリケーションをデプロイする、このコマンドはサーバーレスアプリケーションを初期化し、プロジェクトディレクトリを作成します。このディレクトリには、複数のファイルとフォルダが含まれます。最も重要なファイルは ですtemplate.yaml。これは AWS SAM テンプレートです。Python のバージョンは、sam initコマンドが作成した template.yaml ファイルに記載されている Python のバージョンと一致する必要があります。

開始テンプレートを選択する

テンプレートは次で構成されます。

  1. インフラストラクチャコードの AWS SAM テンプレート。

  2. プロジェクトファイルを整理する開始プロジェクトディレクトリ。例えば、これには次が含まれる場合があります。

    1. Lambda 関数コードとその依存関係の構造。

    2. ローカルテスト用のテストイベントを含む events フォルダ。

    3. ユニットテストをサポートする tests フォルダ。

    4. プロジェクトの設定を構成する samconfig.toml ファイル。

    5. 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 クイックスタートテンプレートを選択するには
  1. プロンプトが表示されたら、[AWS クイックスタートテンプレート] を選択します。

  2. 開始する 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
独自のカスタムテンプレートの場所を選択するには
  1. プロンプトが表示されたら、[カスタムテンプレートの場所] を選択します。

    Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
    Choice: 2
  2. AWS SAM CLI は、テンプレートの場所を指定するよう促すプロンプトを表示します。

    Template location (git, mercurial, http(s), zip, path):

    テンプレート .zip ファイルアーカイブに対して次のいずれかの場所を指定します。

    • GitHub リポジトリ – GitHub リポジトリ内の .zip ファイルへのパス。ファイルはリポジトリのルートに存在する必要があります。

    • Mercurial リポジトリ – Mercurial リポジトリ内の .zip ファイルへのパス。ファイルはリポジトリのルートに存在する必要があります。

    • .zip パス – .zip ファイルへの HTTPS またはローカルパス。

  3. AWS SAM CLI は、カスタムテンプレートを使用してサーバーレスアプリケーションを初期化します。

ランタイムを選択する

AWS クイックスタートテンプレートを選択すると、 AWS SAM CLI は Lambda 関数のランタイムを選択するよう促すプロンプトを表示します。 AWS SAM CLI によって表示されるオプションのリストは、Lambda によってネイティブにサポートされるランタイムです。

  • ランタイムでは、実行環境で実行される言語固有の環境が提供されます。

  • にデプロイされると AWS クラウド、Lambda サービスは実行環境 で関数を呼び出します。

カスタムランタイムでは他のプログラミング言語を使用できます。これを実行するには、開始アプリケーション構造を手動で作成する必要があります。その後、カスタムテンプレートの場所を設定することで、sam init を使用してアプリケーションを迅速に初期化できます。

選択内容に基づいて、 AWS SAM CLI は Lambda 関数コードと依存関係の開始ディレクトリを作成します。

Lambda がランタイムについて複数の依存関係マネージャーをサポートしている場合は、優先する依存関係マネージャーを選択するよう促すプロンプトが表示されます。

パッケージタイプを選択する

AWS クイックスタートテンプレートとランタイムを選択すると、 AWS SAM CLI はパッケージタイプを選択するよう促すプロンプトを表示します。パッケージタイプによって、Lambda サービスで使用するために Lambda 関数がどのようにデプロイされるかが決まります。サポートされているパッケージタイプは次の 2 つです。

  1. コンテナイメージ – 基本オペレーティングシステム、ランタイム、Lambda 拡張機能、アプリケーションコード、およびその依存関係が含まれています。

  2. .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 SAMCLI が AWS SAM テンプレートを設定します。以下に例を示します。

Globals: Function: ... Tracing: Active Api: TracingEnabled: True

Amazon CloudWatch Application Insights によるモニタリングの設定

Amazon CloudWatch Application Insights を使用してモニタリングをアクティブ化することを選択できます。詳細については、「Amazon CloudWatch ユーザーガイド」の「Amazon Application Insights CloudWatch 」を参照してください。

アクティブ化すると、 AWS SAMCLI が 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 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 プロジェクトを作成したら、アプリケーションのオーサリングを開始する準備が整います。これを行うために必要なタスクの詳細については、でインフラストラクチャを定義する AWS SAM「」を参照してください。