

# Git 同期を使用してリポジトリソースコードからスタックを作成する
<a name="git-sync-create-stack-from-repository-source-code"></a>

このトピックでは、Git 同期を使用して Git リポジトリに同期する CloudFormation スタックを作成する方法について説明します。

**重要**  
先に進む前に、前のセクションのすべての[前提条件](git-sync-prereq.md)を満たしてください。

## リポジトリソースコードからスタックを作成する
<a name="create-stack-from-repository-source-code"></a>

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. 画面の上部のナビゲーションバーで、スタックを作成する AWS リージョンを選択します。

1. **[スタック]** ページで、**[スタックの作成]**、**[新しいリソースを使用 (標準)]** の順に選択します。

1. **[Create stack]** (スタックの作成) ページで、次の手順を実行します。

   1. **[前提条件 - テンプレートを準備]** で、**[既存のテンプレートを選択]** を選択したままにします。

   1. **[テンプレートを指定]** で、**[Git から同期]** を選択し、**[次へ]** を選択します。

1. **[スタックの詳細を指定]** ページの **[スタック名]** で、スタックの名前を入力します。スタック名には、文字 (A～Z および a～z)、数字 (0～9)、およびダッシュ (-) を使用できます。

1. **[スタックデプロイファイル]** の **[デプロイファイルの作成]** で、次のように操作します。
   + スタックデプロイファイルを作成してリポジトリに追加していない場合は、**[次のパラメータを使用してファイルを作成し、リポジトリに配置する]** を選択します。**
   + リポジトリにスタックデプロイファイルがある場合は、**[リポジトリに独自のファイルを提供しています]** を選択します。

1. **[テンプレート定義リポジトリ]** で、既に CloudFormation にリンクされている Git リポジトリを選択する場合は、**[リンクされた Git リポジトリを選択する]** を、新しいリポジトリをリンクする場合は、**[Git リポジトリをリンクする]** を選択します。**[Git リポジトリをリンクする]** を選択した場合は、次の操作を行います。

   1. **[レポジトリプロバイダーを選択]** で、次のいずれかを選択します。
      + **GitHub**
      + **GitHub Enterprise Server**
      + **GitLab**
      + **Bitbucket**
      + **GitLab セルフマネージド**

   1. **[接続]** でリストから接続を選択します。**[接続]** リストにオプションが表示されない場合は、**[新しい接続を追加]** を選択して、[接続コンソール](https://console.aws.amazon.com/codesuite/settings/connections)に移動し、リポジトリへの接続を作成します。

1. **[リポジトリ]** では、スタックテンプレートファイルが含まれている Git リポジトリを選択します。

1. **[ブランチ]** リストで、Git 同期に監視させるブランチを選択します。
**注記**  
Git 同期は、CloudFormation テンプレートとスタックデプロイファイルへの変更について、選択したブランチのみを監視します。スタックに適用する変更はすべてこのブランチにコミットする必要があります。

1. **デプロイファイルパス**には、リポジトリブランチのルートにあるスタックデプロイファイル名を含むフルパスを指定します。

   CloudFormation がファイルを生成している場合、ここでファイルがリポジトリにコミットされます。ご自身でファイルを設置する場合、これがリポジトリ内のファイルの場所です。

1. **IAM ロール**を追加します。IAM ロールには、CloudFormation が Git リポジトリからスタックを同期するために必要な権限が含まれています。新しいロールを生成するには **[新しい IAM ロール]** を選択し、AWS アカウント から既存のロールを選択するには **[既存の IAM ロール]** を選択できます。新しいロールの生成を選択すると、必要な権限がロールに含まれます。

1. プルリクエストに対するコメントを有効または無効にします。
   + CloudFormation がスタック更新のプルリクエストで変更セット情報を追加するようにするには、**[プルリクエストに対するコメントを有効にする]** トグルをオンにしたままにします。
   + このトグルをオフにすると、CloudFormation は、リポジトリファイルの更新時に現在のスタック設定とプルリクエストで提案された変更の違いを記述しません。

1. **テンプレートファイルパス**には、リポジトリのルートからのスタックテンプレートファイルのフルパスを指定します。

1. (オプション) スタックパラメータを指定するには、**[パラメータを追加]** を選択し、各パラメータにキーと値を指定してから、**[次へ]** を選択します。詳細については、「[スタックデプロイファイル](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file)」を参照してください。

   例えば、スタックデプロイファイルで **port=8080** パラメータを指定するには、次を実行します。

   1. **[Add parameter]** (パラメータの追加) を選択します。

   1. [**キー**] に「**port**」と入力します。

   1. [**Value (値)**] に「**8080**」と入力します。

1. (オプション) スタックタグを指定するには、**[新しいタグを追加]** を選択し、各タグのタグキーと値を指定して、**[次へ]** を選択します。詳細については、「[スタックデプロイファイル](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file)」を参照してください。

1. **[次へ]** を選択して **[スタックオプションの設定]** に進みます。スタックオプションの設定については、「[スタックオプションを設定する](cfn-console-create-stack.md#configure-stack-options)」を参照してください。

   スタックの設定が完了したら、**[次へ]** を選択してレビューとデプロイを続行します。

1. スタック設定を確認し、以下を確認します。
   + スタックテンプレートは正しく設定され、**[Git から同期]** に設定されています。
   + デプロイファイルは正しく設定されています。
   + テンプレート定義リポジトリは正しく設定されており、具体的には、正しい**リポジトリ**と**ブランチ名**が選択されています。
   + デプロイファイルのプレビューは正しく、期待通りのパラメータと値が含まれています。

1. **[送信]** を選択してスタックを作成します。

   **[送信]** を選択すると、Git リポジトリにプルリクエストが自動的に作成されます。スタックを作成するには、このプルリクエストを Git リポジトリにマージする必要があります。スタックが作成されると、CloudFormation は Git リポジトリの変更をモニタリングします。

## Git リポジトリからスタックを更新する
<a name="update-stack-from-repository-source-code"></a>

スタックを更新するには、Git リポジトリのテンプレートファイルまたはスタックデプロイファイルに直接変更を加えます。モニタリング対象のブランチに変更をコミットすると、CloudFormation は自動的にスタックを更新します。プルリクエストを使用する場合、スタックが更新される前に Git リポジトリにプルリクエストが自動的に作成されます。スタックを更新するには、このプルリクエストを Git リポジトリにマージする必要があります。

CloudFormation コンソールで、スタックを選択し、**[Git 同期]** タブを選択すると、スタックと同期イベントのステータスに関する情報が表示されます。詳細については、「[Git 同期ステータスダッシュボード](git-sync-status.md)」を参照してください。