Target untuk AWS FIS - AWS Layanan Injeksi Kesalahan

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Target untuk AWS FIS

Target adalah satu atau lebih AWS sumber daya di mana tindakan dilakukan oleh AWS AWS Fault Injection Service (FIS) selama percobaan. Target dapat berada di akun AWS yang sama dengan eksperimen, atau di akun lain menggunakan eksperimen multi-akun. Untuk mempelajari lebih lanjut tentang penargetan sumber daya di akun lain, lihatEksperimen multi-akun untuk AWS FIS.

Anda menentukan target saat membuat templat eksperimen. Anda dapat menggunakan target yang sama untuk beberapa tindakan dalam template eksperimen Anda.

AWS FIS mengidentifikasi semua target pada awal percobaan, sebelum memulai salah satu tindakan dalam tindakan yang ditetapkan. AWS FIS menggunakan sumber daya target yang dipilihnya untuk seluruh percobaan. Jika tidak ada target yang ditemukan, percobaan gagal.

Sintaks target

Berikut ini adalah sintaks untuk target.

{ "targets": { "target_name": { "resourceType": "resource-type", "resourceArns": [ "resource-arn" ], "resourceTags": { "tag-key": "tag-value" }, "parameters": { "parameter-name": "parameter-value" }, "filters": [ { "path": "path-string", "values": ["value-string"] } ], "selectionMode": "value" } } }

Saat Anda menentukan target, Anda memberikan yang berikut:

target_name

Sebuah nama untuk target.

resourceType

Jenis sumber daya.

resourceArns

Nama Sumber Daya Amazon (ARN) dari sumber daya tertentu.

resourceTags

Tag diterapkan pada sumber daya tertentu.

parameters

Parameter yang mengidentifikasi target menggunakan atribut tertentu.

filters

Filter sumber daya mencakup sumber daya target yang diidentifikasi menggunakan atribut tertentu.

selectionMode

Mode pemilihan untuk sumber daya yang diidentifikasi.

Sebagai contoh, lihat Contoh target.

Jenis sumber daya

Setiap tindakan AWS FIS dilakukan pada jenis AWS sumber daya tertentu. Ketika Anda menentukan target, Anda harus menentukan dengan tepat satu jenis sumber daya. Saat Anda menentukan target untuk tindakan, target harus jenis sumber daya yang didukung oleh tindakan.

Jenis sumber daya berikut didukung oleh AWS FIS:

  • aws:dynamodb: global-table - Sebuah tabel global Amazon DynamoDB

  • aws:ec2: autoscaling-group - Grup Auto Scaling Amazon EC2

  • aws:ec2:ebs-volume - Volume Amazon EBS

  • aws:ec2: instance - Sebuah instans Amazon EC2

  • aws:ec2: spot-instance - Instans Spot Amazon EC2

  • aws:ec2:subnet - Subnet Amazon VPC

  • aws:ec2:transit-gateway — Sebuah gerbang transit

  • aws:ecs:cluster - Cluster Amazon ECS

  • aws:ecs:task - Tugas Amazon ECS

  • aws:eks:cluster - Kluster Amazon EKS

  • aws:eks:nodegroup - Grup simpul Amazon EKS

  • aws:eks:pod — Sebuah pod Kubernetes

  • aws:elasticache:redis-replicationgroup — Grup Replikasi Redis ElastiCache

  • aws:iam:role — Peran IAM

  • aws:rds:cluster - Cluster Amazon Aurora DB

  • aws:rds: db - Sebuah instans Amazon RDS DB

  • aws:s3: ember - Ember Amazon S3

Identifikasi sumber daya target

Saat Anda menentukan target di konsol AWS FIS, Anda dapat memilih AWS sumber daya tertentu (dari jenis sumber daya tertentu) untuk ditargetkan. Atau, Anda dapat membiarkan AWS FIS mengidentifikasi sekelompok sumber daya berdasarkan kriteria yang Anda berikan.

Untuk mengidentifikasi sumber daya target Anda, Anda dapat menentukan yang berikut:

  • ID Sumber Daya — ID sumber daya dari AWS sumber daya tertentu. Semua ID sumber daya harus mewakili jenis sumber daya yang sama.

  • Tag sumber daya — Tag yang diterapkan pada AWS sumber daya tertentu.

  • Filter sumber daya — Jalur dan nilai yang mewakili sumber daya dengan atribut tertentu. Untuk informasi selengkapnya, lihat Filter sumber daya.

  • Parameter sumber daya — Parameter yang mewakili sumber daya yang memenuhi kriteria tertentu. Untuk informasi selengkapnya, lihat Parameter sumber daya.

Pertimbangan
  • Anda tidak dapat menentukan ID sumber daya dan tag sumber daya untuk target yang sama.

  • Anda tidak dapat menentukan ID sumber daya dan filter sumber daya untuk target yang sama.

  • Jika Anda menentukan tag sumber daya dengan nilai tag kosong, itu tidak setara dengan wildcard. Ini cocok dengan sumber daya yang memiliki tag dengan kunci tag yang ditentukan dan nilai tag kosong.

Filter sumber daya

Filter sumber daya adalah kueri yang mengidentifikasi sumber daya target sesuai dengan atribut tertentu. AWS FIS menerapkan kueri ke output tindakan API yang berisi deskripsi kanonik AWS sumber daya, sesuai dengan jenis sumber daya yang Anda tentukan. Sumber daya yang memiliki atribut yang cocok dengan kueri disertakan dalam definisi target.

Setiap filter dinyatakan sebagai jalur atribut dan nilai yang mungkin. Path adalah urutan elemen, dipisahkan oleh periode, yang menggambarkan jalur untuk mencapai atribut dalam output dari tindakan Deskripsikan untuk sumber daya. Setiap elemen harus dinyatakan dalam kasus Pascal, bahkan jika output dari tindakan Deskripsikan untuk sumber daya dalam kasus unta. Misalnya, Anda harus menggunakanAvailabilityZone, bukan availablityZone sebagai elemen atribut.

"filters": [ { "path": "component.component.component", "values": [ "string" ] } ],

Tabel berikut mencakup tindakan dan AWS CLI perintah API yang dapat Anda gunakan untuk mendapatkan deskripsi kanonik untuk setiap jenis sumber daya. AWS FIS menjalankan tindakan ini atas nama Anda untuk menerapkan filter yang Anda tentukan. Dokumentasi yang sesuai menjelaskan sumber daya yang disertakan dalam hasil secara default. Misalnya, dokumentasi untuk DescribeInstances status bahwa instance yang baru saja dihentikan mungkin muncul di hasil.

Logika berikut berlaku untuk semua filter sumber daya:

  • Nilai di dalam filter - OR

  • Nilai di seluruh filter - AND

Sebagai contoh, lihat Contoh filter.

Parameter sumber daya

Parameter sumber daya mengidentifikasi sumber daya target sesuai dengan kriteria tertentu.

Jenis sumber daya berikut mendukung parameter.

aws:ec2:ebs-volume
  • availabilityZoneIdentifier— Kode (misalnya, us-east-1a) dari Availability Zone yang berisi volume target.

aws:ec2:subnet
  • availabilityZoneIdentifier— Kode (misalnya, us-east-1a) atau ID AZ (misalnya, use1-az1) dari Availability Zone yang berisi subnet target.

  • vpc— VPC yang berisi subnet target. Tidak mendukung lebih dari satu VPC per akun.

aws:ecs:task
  • cluster— Cluster yang berisi tugas target.

  • service— Layanan yang berisi tugas target.

aws:eks:pod
  • availabilityZoneIdentifier – Opsional. Availability Zone yang berisi pod target. Misalnya, us-east-1d. Kami menentukan Availability Zone dari sebuah pod dengan membandingkan HostIP dan CIDR dari subnet cluster.

  • clusterIdentifier – Wajib. Nama atau ARN dari kluster EKS target.

  • namespace – Wajib. Namespace Kubernetes dari pod target.

  • selectorType – Wajib. Jenis pemilih. Nilai yang mungkin adalah labelSelector, deploymentName, dan podName.

  • selectorValue – Wajib. Nilai pemilih. Nilai ini tergantung pada nilaiselectorType.

  • targetContainerName – Opsional. Nama kontainer target sebagaimana didefinisikan dalam spesifikasi pod. Defaultnya adalah kontainer pertama yang ditentukan dalam setiap spesifikasi pod target.

aws:rds:cluster
  • writerAvailabilityZoneIdentifiers – Opsional. Availability Zones dari penulis cluster DB. Nilai yang mungkin adalah: daftar pengidentifikasi Availability Zone yang dipisahkan koma,. all

aws:rds:db
  • availabilityZoneIdentifiers – Opsional. Availability Zones dari instans DB akan terpengaruh. Nilai yang mungkin adalah: daftar pengidentifikasi Availability Zone yang dipisahkan koma,. all

aws:elasticache:redis-replicationgroup
  • availabilityZoneIdentifier – Wajib. Kode (misalnya, us-east-1a) atau ID AZ (misalnya, use1-az1) dari Availability Zone yang berisi node target.

Mode pemilihan

Anda mencakup sumber daya yang diidentifikasi dengan menentukan mode pemilihan. AWS FIS mendukung mode pemilihan berikut:

  • ALL— Jalankan aksi pada semua target.

  • COUNT(n)— Jalankan tindakan pada jumlah target yang ditentukan, dipilih dari target yang diidentifikasi secara acak. Misalnya, COUNT (1) memilih salah satu target yang diidentifikasi.

  • PERCENT(n)— Jalankan tindakan pada persentase target yang ditentukan, dipilih dari target yang diidentifikasi secara acak. Misalnya, PERCENT (25) memilih 25% dari target yang diidentifikasi.

Jika Anda memiliki jumlah sumber daya ganjil dan menentukan 50%, AWS FIS akan membulatkan ke bawah. Misalnya, jika Anda menambahkan lima instans Amazon EC2 sebagai target dan cakupan hingga 50%, AWS FIS akan membulatkan ke dua instans. Anda tidak dapat menentukan persentase yang kurang dari satu sumber daya. Misalnya, jika Anda menambahkan empat instans dan cakupan Amazon EC2 menjadi 5%, AWS FIS tidak dapat memilih instans.

Jika Anda menentukan beberapa target menggunakan jenis sumber daya target yang sama, AWS FIS dapat memilih sumber daya yang sama beberapa kali.

Terlepas dari mode pemilihan yang Anda gunakan, jika cakupan yang Anda tentukan tidak mengidentifikasi sumber daya, eksperimen gagal.

Contoh target

Berikut ini adalah contoh target.

Contoh: Contoh di VPC yang ditentukan dengan tag yang ditentukan

Target yang mungkin untuk contoh ini adalah instans Amazon EC2 di VPC yang ditentukan dengan tag. env=prod Mode pemilihan menentukan bahwa AWS FIS memilih salah satu target ini secara acak.

{ "targets": { "randomInstance": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556" ] } ], "selectionMode": "COUNT(1)" } } }
Contoh: Tugas dengan parameter yang ditentukan

Target yang mungkin untuk contoh ini adalah tugas Amazon ECS dengan cluster dan layanan yang ditentukan. Mode pemilihan menentukan bahwa AWS FIS memilih salah satu target ini secara acak.

{ "targets": { "randomTask": { "resourceType": "aws:ecs:task", "parameters": { "cluster": "myCluster", "service": "myService" }, "selectionMode": "COUNT(1)" } } }

Contoh filter

Berikut ini adalah contoh filter.

Contoh: instans EC2

Saat Anda menentukan filter untuk tindakan yang mendukung tipe sumber daya aws:ec2:instance, AWS FIS menggunakan describe-instances perintah Amazon EC2 dan menerapkan filter untuk mengidentifikasi target.

describe-instancesPerintah mengembalikan output JSON di mana setiap instance adalah struktur di bawahInstances. Berikut ini adalah output sebagian yang mencakup bidang yang ditandai dengan huruf miring. Kami akan memberikan contoh yang menggunakan bidang ini untuk menentukan jalur atribut dari struktur output JSON.

{ "Reservations": [ { "Groups": [], "Instances": [ { "ImageId": "ami-00111111111111111", "InstanceId": "i-00aaaaaaaaaaaaaaa", "InstanceType": "t2.micro", "KeyName": "virginia-kp", "LaunchTime": "2020-09-30T11:38:17.000Z", "Monitoring": { "State": "disabled" }, "Placement": { "AvailabilityZone": "us-east-1a", "GroupName": "", "Tenancy": "default" }, "PrivateDnsName": "ip-10-0-1-240.ec2.internal", "PrivateIpAddress": "10.0.1.240", "ProductCodes": [], "PublicDnsName": "ec2-203-0-113-17.compute-1.amazonaws.com", "PublicIpAddress": "203.0.113.17", "State": { "Code": 16, "Name": "running" }, "StateTransitionReason": "", "SubnetId": "subnet-aabbcc11223344556", "VpcId": "vpc-00bbbbbbbbbbbbbbbbb", ... }, ... { ... } ], "OwnerId": "123456789012", "ReservationId": "r-aaaaaabbbbb111111" }, ... ] }

Untuk memilih instance di Availability Zone tertentu menggunakan filter sumber daya, tentukan jalur atribut untuk AvailabilityZone dan kode untuk Availability Zone sebagai nilainya. Sebagai contoh:

"filters": [ { "path": "Placement.AvailabilityZone", "values": [ "us-east-1a" ] } ],

Untuk memilih instance di subnet tertentu menggunakan filter sumber daya, tentukan jalur atribut untuk SubnetId dan ID subnet sebagai nilainya. Sebagai contoh:

"filters": [ { "path": "SubnetId", "values": [ "subnet-aabbcc11223344556" ] } ],

Untuk memilih instance yang berada dalam status instance tertentu, tentukan jalur atribut untuk Name dan salah satu nama status berikut sebagai nilai: pending | | running | shutting-down | terminated stopping |stopped. Sebagai contoh:

"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
Contoh: Cluster Amazon RDS (cluster DB)

Saat Anda menentukan filter untuk tindakan yang mendukung tipe sumber daya aws:rds:cluster, FIS AWS menjalankan describe-db-clusters perintah Amazon RDS dan menerapkan filter untuk mengidentifikasi target.

describe-db-clustersPerintah mengembalikan output JSON mirip dengan berikut untuk setiap cluster DB. Berikut ini adalah output sebagian yang mencakup bidang yang ditandai dengan huruf miring. Kami akan memberikan contoh yang menggunakan bidang ini untuk menentukan jalur atribut dari struktur output JSON.

[ { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-2a", "us-east-2b", "us-east-2c" ], "BackupRetentionPeriod": 7, "DatabaseName": "", "DBClusterIdentifier": "database-1", "DBClusterParameterGroup": "default.aurora-postgresql11", "DBSubnetGroup": "default-vpc-01234567abc123456", "Status": "available", "EarliestRestorableTime": "2020-11-13T15:08:32.211Z", "Endpoint": "database-1.cluster-example.us-east-2.rds.amazonaws.com", "ReaderEndpoint": "database-1.cluster-ro-example.us-east-2.rds.amazonaws.com", "MultiAZ": false, "Engine": "aurora-postgresql", "EngineVersion": "11.7", ... } ]

Untuk menerapkan filter sumber daya yang hanya mengembalikan cluster DB yang menggunakan mesin DB tertentu, tentukan jalur atribut sebagai Engine dan nilai aurora-postgresql seperti yang ditunjukkan pada contoh berikut.

"filters": [ { "path": "Engine", "values": [ "aurora-postgresql" ] } ],

Untuk menerapkan filter sumber daya yang hanya mengembalikan kluster DB di Availability Zone tertentu, tentukan jalur atribut dan nilai seperti yang ditunjukkan pada contoh berikut.

"filters": [ { "path": "AvailabilityZones", "values": [ "us-east-2a" ] } ],