

# AWS Toolkit for JetBrains の AWS SAM アプリケーションを同期する
<a name="sam-sync"></a>

AWS Serverless Application Model (AWS SAM) `sam sync` は、サーバーレスアプリケーションに加えた変更を自動的に識別し、それらの変更を AWS クラウド に構築してデプロイする最適な方法を選択する AWS SAM CLI コマンドデプロイプロセスです。インフラストラクチャーを変更せずにアプリケーションコードのみを変更した場合、AWS SAM 同期は CloudFormation スタックを再デプロイせずにアプリケーションを更新します。

`sam sync` と AWS SAM CLI コマンドの詳細については、「AWS Serverless Application Model ユーザーガイド」の「[AWS SAM CLI コマンドリファレンス](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html)」トピックを参照してください。

次のセクションでは、AWS SAM Sync の開始方法について説明します。

## 前提条件
<a name="w7aac13c40c11b9"></a>

AWS SAM 同期を使用する前に、次の前提条件を満たす必要があります。
+ 動作している AWS SAM アプリケーションがあること。AWS SAM アプリケーションを作成する方法詳細については、本ユーザーガイドの「[AWS SAM の使用について](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-sam-create)」トピックを参照してください。
+ バージョン 1.78.0 以降の AWS SAM CLI をインストールしていること。AWS SAM CLI のインストールの詳細については、「AWS Serverless Application Model ユーザーガイド」の「[AWS SAM CLI のインストール](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)」トピックを参照してください。
+ アプリケーションは開発環境で実行されていること。

**注記**  
デフォルト以外の任意のプロパティを持った AWS Lambda 関数を含むサーバーレスアプリケーションを同期してデプロイするには、デプロイする前に AWS Lambda 関数に関連付けされた AWS SAM テンプレートファイルに、オプションのプロパティを設定する必要があります。  
AWS Lambda プロパティの詳細については、GitHub の「AWS Serverless Application Model ユーザーガイド」の「[AWS::Serverless::Function](https://github.com/aws/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction)」セクションを参照してください。

## 使用開始
<a name="w7aac13c40c11c11"></a>

AWS SAM 同期を始めるには、次の手順を実行してください。

**注記**  
お使いの AWS リージョンがサーバーレスアプリケーションに関連付けられたロケーションに設定されていることを確認してください。  
AWS Toolkit for JetBrains から AWS リージョンを変更する方法の詳細については、このユーザーガイドの「[AWS リージョン間の切り替え](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-switch-region)」トピックを参照してください。

1. **[プロジェクト]** ツールウィンドウのサーバーレスアプリケーションプロジェクトで、`template.yaml` ファイルのコンテキストメニューを開きます (右クリック)。

1. `template.yaml` コンテキストメニューから、**[サーバーレスアプリケーションの同期 (以前は 「Deploy」)]**を選択し、**[開発スタックの確認]** ダイアログを開きます。

1. 開発スタックから操作していることを確認し、**[サーバーレスアプリケーションの同期]** ダイアログを開きます。  
![\[開発スタック ダイアログの確認\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-jetbrains/latest/userguide/images/sam-sync-dev-stack.png)

1. **[サーバーレスアプリケーションの同期]** ダイアログの手順を完了したら、**[同期]** を選択して AWS SAM 同期プロセスを開始します。**[サーバーレスアプリケーションの同期]** ダイアログの詳細については、以下の「[サーバーレスアプリケーションの同期ダイアログ](#sam-sync-serverless-app-dialog)」セクションを参照してください。

1. 同期処理中、AWS Toolkit for JetBrains の **[ウィンドウの実行]** はデプロイ ステータスで更新されます。

1. 同期が正常に実行された後、CloudFormationスタックの名前が**AWS エクスプローラー**に追加されます。

   同期に失敗した場合、トラブルシューティングの詳細は JetBrains の**[ウィンドウの実行]** または CloudFormation の**[イベントログ]** で確認できます。CloudFormation イベントログの表示に関する詳細については、本ユーザーガイドの「[スタックのイベント ログの表示](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-cloudformation-logs)」トピックを参照してください。

## サーバーレスアプリケーションの同期ダイアログ
<a name="sam-sync-serverless-app-dialog"></a>

**[サーバーレスアプリケーションの同期] ダイアログ**は AWS SAM 同期プロセスを支援します。次のセクションは、ダイアログの各コンポーネントの説明と詳細を示します。

### スタックの作成または更新
<a name="w7aac13c40c11c13b5"></a>

**[必須]**: 新しいデプロイスタックを作成するには、表示されるフィールドに名前を入力し、サーバーレスアプリケーションのデプロイを行うために CloudFormation スタックを作成し、設定します。

または、既存の CloudFormation スタックにデプロイするには、お持ちの AWS アカウントに関連付けされたスタックの自動入力リストからスタック名を選択します。

### テンプレートパラメーター
<a name="w7aac13c40c11c13b7"></a>

**[オプション]**: プロジェクトの `template.yaml` ファイルから検出されたパラメータのリストが入力されます。パラメータ値を指定するには、**[値]** の列に表示されるテキスト フィールドに新しいパラメータ値を入力します。

### S3 バケット
<a name="w7aac13c40c11c13b9"></a>

**[必須]**: CloudFormation テンプレートを保存するために既存の Amazon Simple Storage Service (Amazon S3) バケットを選択するには、リストから選択してください。

ストレージ用に新しい Amazon S3 バケットを作成して使用するには、**[作成]** を選択してプロンプトに従います。

### ECR リポジトリ
<a name="w7aac13c40c11c13c11"></a>

**[必須。Image パッケージタイプを使用する場合にのみ表示されます:]** サーバーレスアプリケーションのデプロイ用に既存の Amazon Elastic Container Registry (Amazon ECR) リポジトリ URI を選択します。

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

### CloudFormation 機能
<a name="w7aac13c40c11c13c13"></a>

**[必須:]** スタックの作成時に CloudFormation が使用できる機能を選択します。

### タグ
<a name="w7aac13c40c11c13c15"></a>

**[オプション:]** 表示されるテキスト フィールドに任意のタグを入力してパラメータにタグ付けします。

### コンテナ内で関数を構築する
<a name="w7aac13c40c11c13c17"></a>

**[オプション。Docker が必須:]** このオプションを選択すると、デプロイ前にローカルの Docker コンテナ内にサーバーレスアプリケーション機能が構築されます。このオプションは、機能がネイティブにコンパイルされた依存関係やプログラムを持つパッケージに依存する場合に便利です。

詳細については、「AWS Serverless Application Model デベロッパーガイド」の「[アプリケーション構築](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-build.html)」トピックを参照してください。