

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

# Beanstalk クラスターの開始方法
<a name="beanstalk-cluster-getting-started"></a>

このチュートリアルでは、Elastic Beanstalk アプリケーションと Beanstalk クラスター環境を作成します。Elastic Beanstalk が構築済みのサンプルコンテナイメージをデプロイするように、アプリケーションバージョンを省略します。次に、環境の準備が整うのを待ち、URL を取得して終了します。または、完全にガイドされたエクスペリエンスを提供する AWS マネジメントコンソールで開始するか、 [Beanstalk クラスター](beanstalk-cluster.md)ドキュメントで AI エージェントをポイントすることもできます。

推定所要時間: **15～20 分**

**重要**  
Elastic Beanstalk には追加料金はかかりませんが、Amazon EKS とそのコンピューティングなど、環境が使用する AWS リソースに対して料金が発生します。詳細については、[「Elastic Beanstalk の料金](https://aws.amazon.com/elasticbeanstalk/pricing/)」を参照してください。このチュートリアルを完了したら、クリーンアップステップを完了します。

## [開始する前に]
<a name="beanstalk-cluster-getting-started-prerequisites"></a>

以下の前提条件を満たしてください。
+  AWS CLIをインストールして設定します。手順については、「*AWS Command Line Interface ユーザーガイド*」の「[AWS CLIの開始方法](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)」を参照してください。
+ Elastic Beanstalk アプリケーションと環境を作成および管理でき、環境の作成時にクラスター、ノード、オブザーバビリティロールを渡すことができる IAM プリンシパルを使用します。正確なアクセス許可については、「」を参照してください[環境を作成するアクセス許可](beanstalk-cluster-permissions.md#beanstalk-cluster-permissions-caller)。
+ 「」で説明されているように、Amazon EKS が引き受けるクラスターロール、クラスターの Amazon EC2 ノードが引き受けるノードロール、および環境のメトリクス、ログ、トレースを発行するオブザーバビリティロールを作成します[IAM ロールを作成する](#beanstalk-cluster-getting-started-roles)。環境が使用する VPC サブネットを選択するには、「」を参照してください[Beanstalk クラスター環境のネットワークの設定](configuring-cluster-networking.md)。
+ Beanstalk クラスターが利用可能な AWS リージョンを選択します。コマンドは、 AWS CLI 設定から リージョンを使用します。

## IAM ロールを作成する
<a name="beanstalk-cluster-getting-started-roles"></a>

Beanstalk クラスター環境には、クラスターロール、ノードロール、オブザーバビリティロールの 3 つの IAM ロールが必要です。Elastic Beanstalk コンソールによって自動的に作成されますが、このチュートリアルでは を使用するため AWS CLI、最初に作成します。コンソールは既存のロールを名前で選択するので、これらの名前を使用します。各ロールの内容と、ロールを渡す必要がある発信者のアクセス許可については、「」を参照してください[Beanstalk クラスターのアクセス許可](beanstalk-cluster-permissions.md)。

**クラスター、ノード、オブザーバビリティロールを作成するには**

1. ロールを引き受けるサービスごとに信頼ポリシーファイルを作成します。クラスターロールは Amazon EKS を信頼し、ノードロールは Amazon EC2 を信頼し、オブザーバビリティロールは Amazon EKS Pod Identity を信頼します。

   ```
   $ cat > eks-trust.json <<'EOF'
   {
     "Version": "2012-10-17",
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"Service": "eks.amazonaws.com"},
       "Action": ["sts:AssumeRole", "sts:TagSession"]
     }]
   }
   EOF
   ```

   ```
   $ cat > ec2-trust.json <<'EOF'
   {
     "Version": "2012-10-17",
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"Service": "ec2.amazonaws.com"},
       "Action": "sts:AssumeRole"
     }]
   }
   EOF
   ```

   ```
   $ cat > pods-trust.json <<'EOF'
   {
     "Version": "2012-10-17",
     "Statement": [{
       "Effect": "Allow",
       "Principal": {"Service": "pods.eks.amazonaws.com"},
       "Action": ["sts:AssumeRole", "sts:TagSession"]
     }]
   }
   EOF
   ```

1. クラスターロールを作成し、そのポリシーをアタッチします。

   ```
   $ aws iam create-role \
       --role-name aws-elasticbeanstalk-eks-cluster-role \
       --assume-role-policy-document file://eks-trust.json
   $ for p in AmazonEKSClusterPolicy AmazonEKSNetworkingPolicy AmazonEKSComputePolicy \
            AmazonEKSBlockStoragePolicy AmazonEKSLoadBalancingPolicy AWSElasticBeanstalkEKSTagging; do
       aws iam attach-role-policy \
           --role-name aws-elasticbeanstalk-eks-cluster-role \
           --policy-arn arn:aws:iam::aws:policy/$p
   done
   ```

1. ノードロールを作成し、そのポリシーをアタッチします。

   ```
   $ aws iam create-role \
       --role-name aws-elasticbeanstalk-eks-node-role \
       --assume-role-policy-document file://ec2-trust.json
   $ for p in AmazonEKSWorkerNodeMinimalPolicy AmazonEC2ContainerRegistryPullOnly \
            AmazonSSMManagedInstanceCore; do
       aws iam attach-role-policy \
           --role-name aws-elasticbeanstalk-eks-node-role \
           --policy-arn arn:aws:iam::aws:policy/$p
   done
   ```

1. オブザーバビリティロールを作成し、そのポリシーをアタッチします。

   ```
   $ aws iam create-role \
       --role-name aws-elasticbeanstalk-eks-observability-role \
       --assume-role-policy-document file://pods-trust.json
   $ for p in CloudWatchAgentServerPolicy AWSElasticBeanstalkEKSObservability; do
       aws iam attach-role-policy \
           --role-name aws-elasticbeanstalk-eks-observability-role \
           --policy-arn arn:aws:iam::aws:policy/$p
   done
   ```

1. 3 つのロール ARNs を記録します。環境を作成するときに渡します。

   ```
   $ for r in cluster node observability; do
       aws iam get-role --role-name aws-elasticbeanstalk-eks-$r-role \
           --query 'Role.Arn' --output text
   done
   ```

## サポートされているプロビジョニングツールを選択する
<a name="beanstalk-cluster-getting-started-tools"></a>

Beanstalk クラスター環境は、Elastic Beanstalk コンソール、Elastic Beanstalk API、または を使用して作成および管理できます AWS CLI。このチュートリアルでは、 を使用して、各リクエストを表示および繰り返し可能 AWS CLI にします。

公式の GitHub Action を使用してデプロイすることもでき、 AWS プロバイダーを通じて Terraform で環境をコードとしてのインフラストラクチャとして定義することもできます。GitHub アクションについては、「」を参照してください[GitHub Actions を使用した Elastic Beanstalk へのデプロイ](deploying-github-actions.md)。

## アプリケーションを作成し、サンプルをデプロイする
<a name="beanstalk-cluster-getting-started-deploy"></a>

1. 環境を格納する Elastic Beanstalk アプリケーションを作成します。

   ```
   $ aws elasticbeanstalk create-application \
       --application-name getting-started-cluster-app
   ```

1. 環境の作成 `Cluster` 階層は Beanstalk クラスターを選択します。このリクエストにはバージョンラベルがないため、Elastic Beanstalk はサンプルアプリケーションをデプロイします。

   ```
   $ aws elasticbeanstalk create-environment \
       --application-name getting-started-cluster-app \
       --environment-name getting-started-cluster-env \
       --tier Name=Cluster,Type=EKS \
       --option-settings \
           Namespace=aws:elasticbeanstalk:eks,OptionName=cluster-role,Value={{cluster-role-arn}} \
           Namespace=aws:elasticbeanstalk:eks,OptionName=node-role,Value={{node-role-arn}} \
           Namespace=aws:elasticbeanstalk:eks:environment,OptionName=observability-role,Value={{observability-role-arn}}
   ```

   ロール ARN プレースホルダーを、準備したロールに置き換えます。リクエストは `service-port`と を省略します`load-balancer-type`。Elastic Beanstalk は、これらの設定をデフォルト `8080`および に解決します`ALB`。異なる値を選択するには、 で渡します`--option-settings`。完全なオプションリファレンスについては、「」を参照してください[Beanstalk クラスター環境の設定オプション](command-options-general-eks.md)。

1. 環境の準備ができるまで待ちます。最初の環境では、Elastic Beanstalk が Amazon EKS クラスターを作成し、サンプルをデプロイするまでに 15～20 分かかることがあります。には、環境が AWS CLI を報告するまでポーリングする組み込みウェーターが用意されています`Ready`。ウェーターは 20 秒間隔で最大 20 回、約 6 分 40 秒ポーリングするため、最初の環境では が報告されることを想定しています`Max attempts exceeded`。成功が報告されるまで、再度実行します。

   ```
   $ aws elasticbeanstalk wait environment-exists \
       --environment-names getting-started-cluster-env
   ```

   ウェーターは、環境がまだ作成されているときと作成に失敗したとき`Max attempts exceeded`の両方を報告します。数回実行しても成功が報告されない場合は、環境の最近のイベントを調べ、報告されたエラーを解決してから続行してください。

   ```
   $ aws elasticbeanstalk describe-events \
       --environment-name getting-started-cluster-env \
       --query 'Events[].[EventDate,Severity,Message]' \
       --output table
   ```

1. 環境ステータス、ヘルスカラー、ヘルスステータス、URL を検査します。

   ```
   $ aws elasticbeanstalk describe-environments \
       --application-name getting-started-cluster-app \
       --environment-names getting-started-cluster-env \
       --query 'Environments[0].[Status,Health,HealthStatus,CNAME]' \
       --output table
   ```

   環境が を報告し`Ready`、空でない を返すことを確認します`CNAME`。ウェブブラウザで を開き、`https://`続いて CNAME を開き、サンプルアプリケーションが応答することを確認します。ロードバランサーは HTTPS でのみ応答するため、 へのリクエストはタイムアウトするまで`http://`待機します。HTTP リクエストを受け入れて Elastic Beanstalk に HTTPS にリダイレクトさせるには、「」を参照してください[Beanstalk クラスター環境のネットワークの設定](configuring-cluster-networking.md)。アイドル状態の環境では、アプリケーションのヘルスを判断するためのリクエストが少なすぎる`NoData`ため、最初に `Grey`と をレポートできます。ヘルスイベントでは、このステータスが と表示されます`No Data`。これはデプロイが失敗したことを示すものではありません。アプリケーションが十分な成功したリクエストを受信すると、正常性は通常 `Green`と に移行します`Ok`。CNAME が空の場合、アプリケーションが応答しない場合、またはヘルスが障害を報告した場合は、続行する前に環境の最近のイベントを調べます。

   ```
   $ aws elasticbeanstalk describe-events \
       --environment-name getting-started-cluster-env \
       --query 'Events[].[EventDate,Severity,Message]' \
       --output table
   ```

   クラスターヘルスモデルについては、「」を参照してください[Beanstalk クラスター環境のモニタリング](monitoring-cluster-environments.md)。

## 独自のコンテナイメージをデプロイする
<a name="beanstalk-cluster-getting-started-deploy-own"></a>

作成リクエストにバージョンラベルが付いていないため、環境はサンプルアプリケーションを実行しています。独自のアプリケーションを実行するには、コンテナイメージに名前を付ける*アプリケーションバージョン*を作成し、そのバージョンを環境にデプロイします。これは通常の Elastic Beanstalk フローです。アプリケーションバージョンはデプロイ可能なアーティファクトであり、サンプルは、Elastic Beanstalk がデプロイしない場合にデプロイするものです。

開始する前に、アカウントの Amazon Elastic Container Registry (Amazon ECR) リポジトリなど、レジストリにプッシュ済みのコンテナイメージが必要です。イメージは環境の をリッスンする必要があります。これは`service-port`、変更`8080`しない限りです。独自のバージョンをデプロイすると、サンプルアプリケーションが置き換えられます。代わりに Elastic Beanstalk でソースからイメージを構築し、ビルドオプションについては、「」を参照してください[Beanstalk クラスター環境のコンテナイメージの構築](beanstalk-cluster-app-versions.md)。

1. イメージをポイントするアプリケーションバージョンを作成します。

   ```
   $ aws elasticbeanstalk create-application-version \
       --application-name getting-started-cluster-app \
       --version-label v1 \
       --image-configuration Source={Uri={{your-image-uri}}}
   ```

   {{your-image-uri}} を などのイメージに置き換えます`111122223333.dkr.ecr.us-east-1.amazonaws.com/my-app:v1`。イメージはすでに構築されているため、バージョンにビルドステップは不要で、デプロイする準備が整います。

1. 環境にバージョンをデプロイします。

   ```
   $ aws elasticbeanstalk update-environment \
       --environment-name getting-started-cluster-env \
       --version-label v1
   ```

1. デプロイが完了し、環境がアプリケーションを提供していることを確認します。

   ```
   $ aws elasticbeanstalk describe-events \
       --environment-name getting-started-cluster-env \
       --query 'Events[].[EventDate,Severity,Message]' \
       --output table
   ```

   を開き`https://`、続いてウェブブラウザで環境の CNAME を開き、アプリケーションが応答することを確認します。そうでない場合は、デプロイの失敗のイベントをチェックし、イメージが環境の をリッスンすることを確認します`service-port`。

## チュートリアルリソースをクリーンアップする
<a name="beanstalk-cluster-getting-started-cleanup"></a>

1. 環境を終了します。

   ```
   $ aws elasticbeanstalk terminate-environment \
       --environment-name getting-started-cluster-env
   ```

1. 環境が `Terminated`ステータスになるまで待ちます。 AWS CLI には、終了が完了するまでポーリングする組み込みウェーターが用意されています。このウェーターには同じ 20 試行の制限があるため、成功が報告されるまで再度実行します。

   ```
   $ aws elasticbeanstalk wait environment-terminated \
       --environment-names getting-started-cluster-env
   ```

   ウェーターは、終了がまだ進行中のときと失敗したとき`Max attempts exceeded`の両方を報告します。数回実行しても成功が報告されない場合は、環境のイベントでエラーを解決します。環境がまだ存在する間は、アプリケーションを削除しないでください。

1. Elastic Beanstalk が作成したサンプルバージョンや追加したバージョンなど、アプリケーションとそのアプリケーションバージョンを削除します。これにより、指定したコンテナイメージやそれを保持するリポジトリは削除されません。「」を参照してください[Beanstalk クラスター環境のコンテナイメージの構築](beanstalk-cluster-app-versions.md)。

   ```
   $ aws elasticbeanstalk delete-application \
       --application-name getting-started-cluster-app
   ```

Elastic Beanstalk は、共有 Amazon EKS クラスターを使用する最後の環境を終了した後にのみ、共有 Amazon EKS クラスターを削除します。クラスターの削除には最大 3 時間かかる場合があります。Amazon EKS およびその他のリソース料金は、削除が完了するまで継続されます。終了しても、お客様が用意したクラスター、ノード、オブザーバビリティ IAM ロールは削除されません。「」の説明に従って、クラスターの削除を確認します[クラスターの削除](beanstalk-cluster-concepts.md#beanstalk-cluster-clusters-lifecycle)。

## 次の手順
<a name="beanstalk-cluster-getting-started-next"></a>
+ アプリケーションバージョンを作成して、独自のコンテナイメージまたはソースをデプロイします。「[Beanstalk クラスター環境のコンテナイメージの構築](beanstalk-cluster-app-versions.md)」を参照してください。
+ リソースの制限、スケーリング、デプロイ動作、負荷分散、オブザーバビリティを設定します。「[Beanstalk クラスター環境の設定オプション](command-options-general-eks.md)」を参照してください。
+ 環境を更新およびモニタリングする方法について説明します。「[Elastic Beanstalk 環境の管理](using-features.managing.md)」および「[Beanstalk クラスター環境のモニタリング](monitoring-cluster-environments.md)」を参照してください。