Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengelola klaster Amazon EKS
Proyek sampel ini menunjukkan cara menggunakan Step Functions dan Amazon Elastic Kubernetes Service untuk membuat klaster Amazon EKS dengan grup simpul, menjalankan tugas di Amazon EKS, lalu memeriksa hasilnya. Setelah selesai, grup simpul dan klaster Amazon EKS akan dihapus.
Untuk informasi selengkapnya tentang Step Functions dan integrasi layanan Step Functions, lihat hal berikut:
catatan
Proyek sampel ini mungkin dikenakan biaya.
Untuk AWS pengguna baru, tingkat penggunaan gratis tersedia. Pada tingkat ini, layanan akan gratis di bawah tingkat penggunaan tertentu. Untuk informasi selengkapnya tentang AWS biaya dan Tingkat Gratis, lihat Harga Amazon EKS
Langkah 1: Buat mesin negara bagian dan sumber daya penyediaan
-
Buka Konsol Step Functions
dan pilih Buat mesin status. -
Ketik
Manage an EKS cluster
di kotak pencarian, lalu pilih Kelola kluster EKS dari hasil pencarian yang dikembalikan. -
Pilih Next untuk melanjutkan.
-
Step Functions mencantumkan yang AWS layanan digunakan dalam proyek sampel yang Anda pilih. Ini juga menunjukkan grafik alur kerja untuk proyek sampel. Menyebarkan proyek ini ke Anda Akun AWS atau menggunakannya sebagai titik awal untuk membangun proyek Anda sendiri. Berdasarkan cara Anda ingin melanjutkan, pilih Jalankan demo atau Bangun di atasnya.
Proyek contoh ini menyebarkan sumber daya berikut:
-
Sebuah Amazon Elastic Kubernetes Service cluster
-
Sebuah Amazon SNS topik
-
Mesin status AWS Step Functions
-
Peran terkait AWS Identity and Access Management (IAM)
Gambar berikut menunjukkan grafik alur kerja untuk Mengelola proyek sampel kluster EKS:
-
-
Pilih Gunakan templat untuk melanjutkan pilihan Anda.
-
Lakukan salah satu hal berikut:
-
Jika Anda memilih Build on it, Step Functions akan membuat prototipe alur kerja untuk proyek sampel yang Anda pilih. Step Functions tidak menyebarkan sumber daya yang tercantum dalam definisi alur kerja.
Di Workflow StudioMode desain, seret dan lepas status dari Peramban status untuk terus membangun prototipe alur kerja Anda. Atau beralih ke Mode kode yang menyediakan editor kode terintegrasi yang mirip dengan VS Code untuk memperbarui definisi Amazon States Language (ASL) mesin status Anda dalam konsol Step Functions. Untuk informasi selengkapnya tentang penggunaan Workflow Studio untuk membangun mesin status Anda, lihatMenggunakan Workflow Studio.
-
Jika Anda memilih Jalankan demo, Step Functions akan membuat proyek sampel hanya-baca yang menggunakan AWS CloudFormation templat untuk menyebarkan AWS sumber daya yang tercantum dalam templat tersebut ke templat Anda. Akun AWS
Tip
Untuk melihat definisi mesin status dari proyek sampel, pilih Kode.
Saat Anda siap, pilih Deploy dan jalankan untuk menyebarkan proyek sampel dan membuat sumber daya.
Tindakan ini dapat memakan waktu hingga 10 menit untuk membuat sumber daya dan izin IAM terkait. Saat sumber daya Anda sedang digunakan, Anda dapat membuka tautan CloudFormation Stack ID untuk melihat sumber daya mana yang sedang disediakan.
Setelah semua sumber daya dalam proyek sampel dibuat, Anda dapat melihat proyek sampel baru yang tercantum di halaman mesin Negara.
penting
Biaya standar mungkin berlaku untuk setiap layanan yang digunakan dalam CloudFormation templat.
-
Langkah 2: Jalankan mesin negara
-
Pada halaman mesin Negara, pilih proyek sampel Anda.
-
Pada halaman proyek sampel, pilih Mulai eksekusi.
-
Dalam kotak dialog Mulai eksekusi, lakukan hal berikut:
-
(Opsional) Untuk mengidentifikasi eksekusi Anda, Anda dapat menentukan nama untuk itu di Nama kotak. Secara default, Step Functions menghasilkan nama eksekusi unik secara otomatis.
catatan
Step Functions memungkinkan Anda membuat nama untuk mesin status, eksekusi, dan aktivitas, serta label yang berisi karakter non-ASCII. Nama-nama non-ASCII ini tidak berfungsi dengan Amazon. CloudWatch Untuk memastikan bahwa Anda dapat melacak CloudWatch metrik, pilih nama yang hanya menggunakan karakter ASCII.
-
(Opsional) Dalam kotak Input, masukkan nilai input dalam format JSON untuk menjalankan alur kerja Anda.
Jika Anda memilih untuk Menjalankan demo, Anda tidak perlu memberikan input eksekusi apa pun.
catatan
Jika proyek demo yang Anda gunakan berisi data input eksekusi yang telah diisi sebelumnya, gunakan input tersebut untuk menjalankan mesin status.
-
Pilih Mulai Eksekusi.
-
Konsol Step Functions mengarahkan Anda ke halaman yang berjudul dengan ID eksekusi Anda. Halaman ini dikenal sebagai halaman Detail Eksekusi. Di halaman ini, Anda dapat meninjau hasil eksekusi saat eksekusi berlangsung atau setelah selesai.
Untuk meninjau hasil eksekusi, pilih status individual pada tampilan Grafik, lalu pilih tab individual di Detail langkah panel untuk melihat detail setiap status termasuk input, output, dan definisi masing-masing. Untuk detail tentang informasi eksekusi yang dapat Anda lihat di halaman Rincian Eksekusi, lihatHalaman Detail Eksekusi - Ikhtisar antarmuka.
-
Contoh Kode Mesin Status
Mesin status dalam proyek sampel ini terintegrasi dengan Amazon EKS dengan membuat klaster dan grup simpul Amazon EKS, dan menggunakan topik SNS untuk mengembalikan hasil.
Jelajahi contoh mesin status ini untuk melihat cara Step Functions mengelola klaster dan grup simpul Amazon EKS.
Untuk informasi selengkapnya tentang AWS Step Functions cara mengontrol AWS layanan lain, lihatMenggunakan AWS Step Functions dengan layanan lain.
{
"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
}
}
}
Untuk informasi tentang cara mengonfigurasi IAM saat menggunakan Step Functions dengan AWS layanan lain, lihatKebijakan IAM untuk layanan terintegrasi.
Contoh IAM
Contoh kebijakan AWS Identity and Access Management (IAM) yang dihasilkan oleh proyek sampel ini mencakup hak istimewa paling sedikit yang diperlukan untuk mengeksekusi mesin negara dan sumber daya terkait. Kami merekomendasikan agar Anda hanya menyertakan izin yang diperlukan dalam kebijakan IAM Anda.
{
"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"
]
}
]
}
Untuk informasi tentang cara mengonfigurasi IAM saat menggunakan Step Functions dengan AWS layanan lain, lihatKebijakan IAM untuk layanan terintegrasi.