Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einen Amazon EKS-Cluster verwalten
Dieses Beispielprojekt zeigt, wie Sie Step Functions und Amazon Elastic Kubernetes Service verwenden, um einen Amazon EKS-Cluster mit einer Knotengruppe zu erstellen, einen Job auf Amazon EKS auszuführen und anschließend die Ausgabe zu untersuchen. Wenn der Vorgang abgeschlossen ist, werden die Knotengruppen und der Amazon EKS-Cluster entfernt.
Weitere Informationen zu Step Functions und Step Functions Service-Integrationen finden Sie im Folgenden:
Anmerkung
Für dieses Beispielprojekt können Gebühren anfallen.
Für neue AWS-Benutzer steht ein kostenloses Nutzungskontingent zur Verfügung. Im Rahmen dieses Kontingents sind die Services bis zu einem bestimmten Nutzungsumfang kostenlos. Für mehr Informationen überAWSKosten und das kostenlose Kontingent finden Sie unterAmazon EKS — Preisgestaltung
Schritt 1: State-Machine erstellen und Ressourcen bereitstellen
-
Öffne denStep Functions Functions-Konsole
und wähleZustandsmaschine erstellen. -
Typ
Manage an EKS cluster
im Suchfeld und dannEinen EKS-Cluster verwaltenaus den Suchergebnissen, die zurückgegeben werden. -
Wählen Sie Next (Weiter), um fortzufahren.
-
Step Functions listet dieAWS-Servicesverwendet in dem von Ihnen ausgewählten Beispielprojekt. Außerdem wird ein Workflow-Diagramm für das Beispielprojekt angezeigt. Stellen Sie dieses Projekt in Ihrem bereitAWS-Kontooder verwenden Sie es als Ausgangspunkt, um Ihre eigenen Projekte zu erstellen. Je nachdem, wie Sie vorgehen möchten, wählen SieEine Demo startenoderDarauf bauen.
Dieses Beispielprojekt stellt die folgenden Ressourcen bereit:
-
EinAmazon Elastic Kubernetes ServiceCluster
-
Ein Amazon SNS-Thema
-
Ein AWS Step Functions-Zustandsautomat
-
Zugehörige AWS Identity and Access Management (IAM)-Rollen
Die folgende Abbildung zeigt das Workflow-Diagramm fürEinen EKS-Cluster verwaltenBeispielprojekt:
-
-
WähleVorlage verwendenum mit Ihrer Auswahl fortzufahren.
-
Führen Sie eine der folgenden Aktionen aus:
-
Wenn Sie ausgewählt habenDarauf bauen, Step Functions erstellt den Workflow-Prototyp für das von Ihnen ausgewählte Beispielprojekt. Step Functions stellt die in der Workflow-Definition aufgeführten Ressourcen nicht bereit.
In den von Workflow StudioEntwurfsmodus, ziehen Sie Status per Drag-and-Drop aus demBrowser für Staatenum mit der Erstellung Ihres Workflow-Prototyps fortzufahren. Oder wechseln Sie zuCodemodusdas bietet einen integrierten Code-Editor ähnlich wie VS Code zum Aktualisieren vonAmazon States Language(ASL) Definition Ihrer Zustandsmaschine in der Step Functions Functions-Konsole. Weitere Informationen zur Verwendung von Workflow Studio zum Erstellen Ihrer Zustandsmaschinen finden Sie unterVerwenden von Workflow Studio.
Wichtig
Denken Sie daran, den Platzhalter Amazon Resource Name (ARN), den die im Beispielprojekt verwendeten Ressourcen vor Ihnen zu aktualisieren.führe deinen Workflow aus.
-
Wenn Sie ausgewählt habenEine Demo starten, Step Functions erstellt ein schreibgeschütztes Beispielprojekt, das eineAWS CloudFormationVorlage für die Bereitstellung desAWSRessourcen, die in dieser Vorlage aufgeführt sind, für IhreAWS-Konto.
Tipp
Um die State-Machine-Definition des Beispielprojekts anzuzeigen, wählen SieCode.
Wenn du bereit bist, wähleBereitstellen und ausführenum das Beispielprojekt bereitzustellen und die Ressourcen zu erstellen.
Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und die zugehörigen IAM-Berechtigungen erstellt sind. Während Ihre Ressourcen bereitgestellt werden, können Sie das öffnen CloudFormation Stack-ID-Link, um zu sehen, welche Ressourcen bereitgestellt werden.
Nachdem alle Ressourcen im Beispielprojekt erstellt wurden, können Sie das neue Beispielprojekt auf derStaatsmaschinenseite.
Wichtig
Für jeden in Anspruch genommenen Dienst können Standardgebühren anfallen CloudFormation Schablone.
-
Schritt 2: Den State Machine ausführen
-
Auf derStaatsmaschinenSeite, wählen Sie Ihr Beispielprojekt aus.
-
Wählen Sie auf der Seite mit dem BeispielprojektAusführung starten.
-
In derAusführung startenGehen Sie im Dialogfeld wie folgt vor:
-
(Optional) Um Ihre Ausführung zu identifizieren, können Sie einen Namen dafür in derNameKiste. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.
Anmerkung
Mit Step Functions können Sie Zustandsmaschinen-, Ausführungs- und Aktivitätsnamen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit Amazon CloudWatch. Um sicherzustellen, dass Sie nachverfolgen können CloudWatch Metriken: Wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.
-
(Optional) ImEingabeFeld, geben Sie Eingabewerte im JSON-Format ein, um Ihren Workflow auszuführen.
Wenn Sie sich dafür entschieden habenEine Demo starten, Sie müssen keine Ausführungseingaben angeben.
Anmerkung
Wenn das von Ihnen bereitgestellte Demo-Projekt vorab ausgefüllte Eingabedaten für die Ausführung enthält, verwenden Sie diese Eingabe, um den Zustandsmaschine auszuführen.
-
Wählen Sie Start execution (Ausführung starten) aus.
-
Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist. Diese Seite ist bekannt alsEinzelheiten zur Ausführungseite. Auf dieser Seite können Sie die Ausführungsergebnisse im Verlauf oder nach Abschluss der Ausführung überprüfen.
Um die Ausführungsergebnisse zu überprüfen, wählen Sie einzelne Status auf derGraphische Ansicht, und wählen Sie dann die einzelnen Tabs aufEinzelheiten zum SchrittBereich, um die Details der einzelnen Bundesstaaten, einschließlich Eingabe, Ausgabe und Definition, anzuzeigen. Einzelheiten zu den Ausführungsinformationen finden Sie auf derEinzelheiten zur AusführungSeite, sieheSeite mit den Ausführungsdetails — Übersicht über die Benutzeroberfläche.
-
Code des Zustandsautomaten aus diesem Beispiel
Die Zustandsmaschine in diesem Beispielprojekt integriert sich in Amazon EKS, indem sie einen Amazon EKS-Cluster und eine Knotengruppe erstellt, und verwendet ein SNS-Thema, um Ergebnisse zurückzugeben.
Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Amazon EKS-Cluster und -Knotengruppen verwaltet.
Weitere Informationen darüber, wie AWS Step Functions andere AWS-Services steuern kann, finden Sie unter Verwenden von AWS Step Functions mit sonstigen Services.
{
"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
}
}
}
Für Informationen zur Konfiguration von IAM, wenn Sie Step Functions mit anderen verwendenAWSDienste finden Sie unterIAM-Richtlinien für integrierte Dienste.
IAM-Beispiel
Dieses BeispielAWS Identity and Access ManagementDie vom Beispielprojekt generierten (IAM-) Richtlinien beinhalten die geringsten Rechte, die für die Ausführung der Zustandsmaschine und der zugehörigen Ressourcen erforderlich sind. Wir empfehlen, dass Sie nur die Berechtigungen in Ihre IAM-Richtlinien aufnehmen, die erforderlich sind.
{
"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"
]
}
]
}
Für Informationen zur Konfiguration von IAM, wenn Sie Step Functions mit anderen verwendenAWSDienste finden Sie unterIAM-Richtlinien für integrierte Dienste.