

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

# でアプリケーションを作成する AWS SAM
<a name="using-sam-cli-init"></a>

[使用を開始](serverless-getting-started.md)し「[( AWS Serverless Application Model AWS SAM) の使用方法](chapter-using-sam.md)」を読み終えれば、デベロッパー環境で AWS SAM プロジェクトを作成する準備が整います。 AWS SAM プロジェクトは、サーバーレスアプリケーションを記述するための出発点として機能します。`sam init` コマンドオプションのリスト AWS SAM CLIについては、「」を参照してください[sam init](sam-cli-command-reference-sam-init.md)。

 AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) `sam init` コマンドには、以下で構成される新しいサーバーレスアプリケーションを初期化するためのオプションが用意されています。
+ インフラストラクチャコードを定義する AWS SAM テンプレート。
+ アプリケーションを整理するフォルダ構造。
+  AWS Lambda 関数の設定。

 AWS SAM プロジェクトを作成するには、このセクションのトピックを参照してください。

**注記**  
`sam init` には、サポートされているランタイム (TypeScript、Python、Java) で永続的な関数用のプロジェクトテンプレートが含まれています。これらのテンプレートは、ステートフルなサーバーレスアプリケーションを構築するためのスターターコードと設定を提供します。

**Topics**
+ [新しいサーバーレスアプリケーションを初期化する](#using-sam-cli-init-new)
+ [sam init のオプション](#using-sam-cli-init-options)
+ [トラブルシューティング](#using-sam-cli-init-troubleshooting)
+ [例](#using-sam-cli-init-examples)
+ [詳細情報](#using-sam-cli-init-learn)
+ [次の手順](#w2aac18c11c39)

## 新しいサーバーレスアプリケーションを初期化する
<a name="using-sam-cli-init-new"></a>

**AWS SAM CLI を使用して新しいサーバーレスアプリケーションを初期化するには**

1. `cd` を実行して開始ディレクトリに移動します。

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

   ```
   $ sam init
   ```

1.  AWS SAM CLI は、新しいサーバーレスアプリケーションを作成するためのインタラクティブフローを通じてユーザーをガイドします。
**注記**  
[チュートリアル: を使用して Hello World アプリケーションをデプロイする AWS SAM](serverless-getting-started-hello-world.md) で説明されているように、このコマンドはサーバーレスアプリケーションを初期化し、プロジェクトディレクトリを作成します。このディレクトリには、ファイルとフォルダがいくつか含まれています。最も重要なファイルは `template.yaml` です。これは AWS SAM テンプレートです。ご使用の Python のバージョンは、**sam init** コマンドで作成された `template.yaml` ファイルにリストされている Python のものと、一致する必要があります。

### 開始テンプレートを選択する
<a name="using-sam-cli-init-new-template"></a>

*テンプレート*は次の要素で構成されています。

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

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

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

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

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

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

   1. `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 クイックスタートテンプレート]** を選択します。

1. 開始する 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
   ```

1.  AWS SAM CLI は、テンプレートの場所を指定するよう促すプロンプトを表示します。

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

   テンプレート .zip ファイルアーカイブに対して次のいずれかの場所を指定します。
   + **GitHub リポジトリ** – GitHub リポジトリ内の .zip ファイルへのパス。ファイルはリポジトリのルートに存在する必要があります。
   + **Mercurial リポジトリ** – Mercurial リポジトリ内の .zip ファイルへのパス。ファイルはリポジトリのルートに存在する必要があります。
   + **.zip パス** – .zip ファイルへの HTTPS またはローカルパス。

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

### ランタイムを選択する
<a name="using-sam-cli-init-new-runtime"></a>

*AWS クイックスタートテンプレート*を選択すると、 AWS SAM CLI は Lambda 関数のランタイムを選択するよう促すプロンプトを表示します。 AWS SAM CLI によって表示されるオプションのリストは、Lambda によってネイティブにサポートされるランタイムです。
+ [ランタイム](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-runtime)では、実行環境で実行される言語固有の環境が提供されます。
+ にデプロイされると AWS クラウド、Lambda サービスは[実行環境で](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.html)関数を呼び出します。

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

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

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

### パッケージタイプを選択する
<a name="using-sam-cli-init-new-package"></a>

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

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

1. **.zip ファイルアーカイブ** – アプリケーション コードとその依存関係が含まれます。

デプロイパッケージタイプの詳細については、「*AWS Lambda デベロッパーガイド*」の「[Lambda デプロイパッケージ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)」を参照してください。

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 トレースを設定する
<a name="using-sam-cli-init-new-tracing"></a>

 AWS X-Ray トレースをアクティブ化することを選択できます。詳細については、「 *AWS X-Ray デベロッパーガイド*」の[「What is AWS X-Ray?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)」を参照してください。

アクティブ化すると、 AWS SAM CLI は AWS SAM テンプレートを設定します。以下に例を示します。

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

### Amazon CloudWatch Application Insights でモニタリングを設定する
<a name="using-sam-cli-init-new-insights"></a>

Amazon CloudWatch Application Insights を使用してモニタリングをアクティブ化することを選択できます。詳細については、「*Amazon CloudWatch ユーザーガイド*」の「[Amazon CloudWatch Application Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html)」を参照してください。

アクティブ化すると、 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
```

### アプリケーションに名前を付ける
<a name="using-sam-cli-init-new-name"></a>

アプリケーションの名前を入力します。 AWS SAM CLI は、この名前を使用してアプリケーションの最上位フォルダを作成します。

## sam init のオプション
<a name="using-sam-cli-init-options"></a>

`sam init` コマンドで使用できる主なオプションの一部を次に示します。すべてのオプションのリストについては、「[sam init](sam-cli-command-reference-sam-init.md)」を参照してください。

### カスタムテンプレートの場所を使用してアプリケーションを初期化する
<a name="using-sam-cli-init-options-location"></a>

`--location` オプションを使用して、サポートされているカスタムテンプレートの場所を指定します。以下に例を示します。

```
$ sam init --location https://github.com/aws-samples/sessions-with-aws-sam/raw/master/starter-templates/web-app.zip
```

### インタラクティブフローを使用せずにアプリケーションを初期化する
<a name="using-sam-cli-init-options-no-interactive"></a>

`--no-interactive` オプションを使用して、コマンドラインで設定の選択内容を指定し、インタラクティブフローをスキップします。以下に例を示します。

```
$ sam init --no-interactive --runtime go1.x --name go-demo --dependency-manager mod --app-template hello-world
```

## トラブルシューティング
<a name="using-sam-cli-init-troubleshooting"></a>

のトラブルシューティングについては AWS SAM CLI、「」を参照してください[AWS SAMCLI トラブルシューティング](sam-cli-troubleshooting.md)。

## 例
<a name="using-sam-cli-init-examples"></a>

### Hello World AWS Starter Template を使用して新しいサーバーレスアプリケーションを初期化する
<a name="using-sam-cli-init-examples-helloworld"></a>

この例については、「*チュートリアル: Hello World アプリケーションのデプロイ*」の「[ステップ 1: サンプルの Hello World アプリケーションを初期化する](serverless-getting-started-hello-world.md#serverless-getting-started-hello-world-init)」を参照してください。

### カスタムテンプレートの場所を使用して新しいサーバーレスアプリケーションを初期化する
<a name="using-sam-cli-init-examples-custom"></a>

カスタムテンプレートに 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
```

## 詳細情報
<a name="using-sam-cli-init-learn"></a>

`sam init` コマンドの使用方法の詳細については、次を参照してください。
+ **[学習 AWS SAM: sam init](https://www.youtube.com/watch?v=9m3R-leD5Xo) ** – でのServerless Land「学習 AWS SAM」シリーズYouTube。
+ **[AWS SAM CLI で使用するサーバーレスアプリケーションの構築 (SAM S2E7 を使用したセッション)](https://www.youtube.com/watch?v=k9IRdgze9fQ)** – YouTube の AWS SAM を使用したセッションのシリーズ。

## 次の手順
<a name="w2aac18c11c39"></a>

 AWS SAM プロジェクトを作成したら、アプリケーションの作成を開始する準備が整いました。これを行うために必要なタスクの詳細については、「[でインフラストラクチャを定義する AWS SAM](serverless-authoring.md)」を参照してください。