ノードグループを使用して Amazon EKSクラスターを作成および管理します。 - AWS Step Functions

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

ノードグループを使用して Amazon EKSクラスターを作成および管理します。

このサンプルプロジェクトでは、Step Functions と Amazon Elastic Kubernetes Service を使用してノードグループを持つ Amazon EKSクラスターを作成し、Amazon でジョブを実行してEKSから、出力を調べる方法を示します。完了すると、ノードグループと Amazon EKSクラスターが削除されます。

Step Functions と Step Functions サービス統合の詳細については、以下を参照してください。

注記

このサンプルプロジェクトでは、料金が発生する場合があります。

新規 AWS ユーザーは、無料利用枠を利用できます。この枠では、サービスを利用しても一定のレベル以下であれば無料です。 AWS コストと無料利用枠の詳細については、「Amazon のEKS料金」を参照してください。

ステップ 1: ステートマシンを作成してリソースをプロビジョニングする

  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. Manage an EKS cluster 検索ボックスに「」と入力し、返された検索結果からEKS「クラスターの管理」を選択します。

  3. [次へ] を選択して続行します。

  4. Step Functions は、選択したサンプルプロジェクト AWS サービス で使用される を一覧表示します。サンプルプロジェクトのワークフローグラフも表示されます。このプロジェクトを にデプロイ AWS アカウント するか、独自のプロジェクトを構築するための出発点として使用します。進める方法に応じて、[デモの実行] または [その上に構築する] を選択します。

    このサンプルプロジェクトは、以下のリソースをデプロイします。

    • Amazon Elastic Kubernetes Service クラスター

    • Amazon SNS トピック

    • AWS Step Functions ステートマシン

    • 関連する AWS Identity and Access Management (IAM) ロール

    次の図は、 EKSクラスターの管理サンプルプロジェクトのワークフローグラフを示しています。

    EKS クラスターの管理サンプルプロジェクトのワークフローグラフ。
  5. [テンプレートの使用] を選択して選択を続行します。

  6. 次のいずれかを行います。

    • Build on it を選択した場合、Step Functions はワークフロープロトタイプを作成しますが、ワークフロー定義にリソースをデプロイしないため、ワークフロープロトタイプの構築を継続できます。

      Workflow Studio の ではデザインモード、ワークフロープロトタイプに状態を追加できます。または、 に切り替えコードモードて、統合されたコードエディタを使用して、Step Functions コンソールからステートマシンの Amazon ステートメント言語 (ASL) 定義を編集することもできます。

      重要

      ワークフロー を実行する前に、サンプルプロジェクトで使用されるリソースのプレースホルダー Amazon リソースネーム (ARN) を更新する必要がある場合があります。 ワークフローを実行

    • デモの実行 を選択した場合、Step Functions は、 AWS CloudFormation テンプレートを使用してそのテンプレート内の AWS リソースを にデプロイする読み取り専用プロジェクトを作成します AWS アカウント。コードモード を選択すると、ステートマシンの定義を表示できます。

      デプロイと実行を選択してプロジェクトをデプロイし、リソースを作成します。

      デプロイには、リソースとIAMアクセス許可が作成されるまでに最大 10 分かかる場合があることに注意してください。リソースのデプロイ中に、 AWS CloudFormation スタック ID リンクを開いて、プロビジョニングされているリソースを確認できます。

      すべてのリソースが作成されると、コンソールのステートマシンページにプロジェクトが表示されます。

      重要

      CloudFormation テンプレートで使用されるサービスごとに、標準料金が適用される場合があります。

ステップ 2: ステートマシンを実行する

  1. [ステートマシン] ページで、サンプルプロジェクトを選択します。

  2. サンプルプロジェクトページで、[実行を開始] を選択します。

  3. [実行を開始] ダイアログボックスで、以下の操作を行います。

    1. (オプション) 実行を識別するには、名前を指定するか、デフォルトで生成された実行名 を使用します。

      注記

      Step Functions は、 ASCII以外の文字を含むステートマシン、実行、アクティビティ、およびラベルの名前を受け入れます。文字ASCII以外の名前は Amazon では機能しないため CloudWatch、 ASCII でメトリクスを追跡できるように、文字のみを使用することをお勧めします CloudWatch。

    2. (オプション) 入力ボックスに、ワークフローを実行するための入力値を JSON 形式で入力します。

      [デモの実行] を選択した場合、実行入力を入力する必要はありません。

      注記

      デプロイしたデモプロジェクトに事前入力された実行入力データが含まれている場合は、その入力を使用してステートマシンを実行します。

    3. [実行のスタート] を選択します。

    4. Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。

      実行結果を確認するには、[グラフビュー] で個々の状態を選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。[実行の詳細] ページに表示できる実行情報の詳細については、「[実行の詳細] ページ - インターフェイスの概要」を参照してください。

ステートマシンのコード例

このサンプルプロジェクトのステートマシンは、Amazon EKSクラスターとノードグループEKSを作成して Amazon と統合し、 SNSトピックを使用して結果を返します。

このステートマシンの例を参照して、Step Functions が Amazon EKSクラスターとノードグループを管理する方法を確認してください。

AWS Step Functions が他の AWS サービスをコントロールする方法の詳細については、「」を参照してください他の サービスと Step Functions の統合

{ "Comment": "An example of the Amazon States Language for running Amazon EKS Cluster", "StartAt": "Create an EKS cluster", "States": { "Create an EKS cluster": { "Type": "Task", "Resource": "arn:aws:states:::eks:createCluster.sync", "Parameters": { "Name": "ExampleCluster", "ResourcesVpcConfig": { "SubnetIds": [ "subnet-0aacf887d9f00e6a7", "subnet-0e5fc41e7507194ab" ] }, "RoleArn": "arn:aws:iam::111122223333:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE" }, "Retry": [{ "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 30, "MaxAttempts": 2, "BackoffRate": 2 }], "ResultPath": "$.eks", "Next": "Create a node group" }, "Create a node group": { "Type": "Task", "Resource": "arn:aws:states:::eks:createNodegroup.sync", "Parameters": { "ClusterName": "ExampleCluster", "NodegroupName": "ExampleNodegroup", "NodeRole": "arn:aws:iam::111122223333:role/StepFunctionsSample-EKSClusterMan-NodeInstanceRole-ANPAJ2UCCR6DPCEXAMPLE", "Subnets": [ "subnet-0aacf887d9f00e6a7", "subnet-0e5fc41e7507194ab"] }, "Retry": [{ "ErrorEquals": [ "States.ALL" ], "IntervalSeconds": 30, "MaxAttempts": 2, "BackoffRate": 2 }], "ResultPath": "$.nodegroup", "Next": "Run a job on EKS" }, "Run a job on EKS": { "Type": "Task", "Resource": "arn:aws:states:::eks:runJob.sync", "Parameters": { "ClusterName": "ExampleCluster", "CertificateAuthority.$": "$.eks.Cluster.CertificateAuthority.Data", "Endpoint.$": "$.eks.Cluster.Endpoint", "LogOptions": { "RetrieveLogs": true }, "Job": { "apiVersion": "batch/v1", "kind": "Job", "metadata": { "name": "example-job" }, "spec": { "backoffLimit": 0, "template": { "metadata": { "name": "example-job" }, "spec": { "containers": [ { "name": "pi-20", "image": "perl", "command": [ "perl" ], "args": [ "-Mbignum=bpi", "-wle", "print '{ ' . '\"pi\": '. bpi(20) . ' }';" ] } ], "restartPolicy": "Never" } } } } }, "ResultSelector": { "status.$": "$.status", "logs.$": "$.logs..pi" }, "ResultPath": "$.RunJobResult", "Next": "Examine output" }, "Examine output": { "Type": "Choice", "Choices": [ { "And": [ { "Variable": "$.RunJobResult.logs[0]", "NumericGreaterThan": 3.141 }, { "Variable": "$.RunJobResult.logs[0]", "NumericLessThan": 3.142 } ], "Next": "Send expected result" } ], "Default": "Send unexpected result" }, "Send expected result": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:sa-east-1:111122223333:StepFunctionsSample-EKSClusterManagement123456789012-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE", "Message": { "Input.$": "States.Format('Saw expected value for pi: {}', $.RunJobResult.logs[0])" } }, "ResultPath": "$.SNSResult", "Next": "Delete job" }, "Send unexpected result": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:sa-east-1:111122223333:StepFunctionsSample-EKSClusterManagement123456789012-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE", "Message": { "Input.$": "States.Format('Saw unexpected value for pi: {}', $.RunJobResult.logs[0])" } }, "ResultPath": "$.SNSResult", "Next": "Delete job" }, "Delete job": { "Type": "Task", "Resource": "arn:aws:states:::eks:call", "Parameters": { "ClusterName": "ExampleCluster", "CertificateAuthority.$": "$.eks.Cluster.CertificateAuthority.Data", "Endpoint.$": "$.eks.Cluster.Endpoint", "Method": "DELETE", "Path": "/apis/batch/v1/namespaces/default/jobs/example-job" }, "ResultSelector": { "status.$": "$.ResponseBody.status" }, "ResultPath": "$.DeleteJobResult", "Next": "Delete node group" }, "Delete node group": { "Type": "Task", "Resource": "arn:aws:states:::eks:deleteNodegroup.sync", "Parameters": { "ClusterName": "ExampleCluster", "NodegroupName": "ExampleNodegroup" }, "Next": "Delete cluster" }, "Delete cluster": { "Type": "Task", "Resource": "arn:aws:states:::eks:deleteCluster.sync", "Parameters": { "Name": "ExampleCluster" }, "End": true } } }

他の AWS のサービスで Step Functions を使用するIAMときに を設定する方法については、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法

IAM 例

サンプルプロジェクトによって生成されたこれらの例 AWS Identity and Access Management (IAM) ポリシーには、ステートマシンおよび関連リソースの実行に必要な最小権限が含まれています。IAM ポリシーに必要なアクセス許可のみを含めることをお勧めします。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:CreateCluster" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:DeleteCluster" ], "Resource": "arn:aws:eks:sa-east-1:111122223333:cluster/*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::111122223333:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE" ], "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:sa-east-1:111122223333:StepFunctionsSample-EKSClusterManagement123456789012-SNSTopic-ANPAJ2UCCR6DPCEXAMPLE" ] } ] }

他の AWS のサービスで Step Functions を使用するIAMときに を設定する方法については、「」を参照してくださいStep Functions が統合サービスのIAMポリシーを生成する方法