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 Fault Injection Service (AWS FIS) selama percobaan. Target dapat berada di AWS akun yang sama dengan eksperimen, atau di akun yang berbeda 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 FISmengidentifikasi semua target pada awal percobaan, sebelum memulai salah satu tindakan dalam tindakan yang ditetapkan. AWS FISmenggunakan sumber daya target yang dipilihnya untuk seluruh eksperimen. 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) 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 AWS FIS tindakan 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 suatu tindakan, target harus berupa jenis sumber daya yang didukung oleh tindakan tersebut.

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 contoh 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 - Sebuah cluster Amazon ECS

  • aws:ecs:task - Sebuah tugas Amazon ECS

  • aws:eks:cluster - Sebuah cluster Amazon EKS

  • aws:eks:nodegroup - Grup simpul Amazon EKS

  • aws:eks:pod — Sebuah pod Kubernetes

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

  • aws:iam:role — Sebuah peran IAM

  • aws:rds:cluster - Cluster Amazon Aurora DB

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

  • aws:s3: ember - Ember Amazon S3

Identifikasi sumber daya target

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

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

  • Sumber daya IDs — Sumber daya IDs sumber AWS daya tertentu. Semua sumber daya IDs 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 FISmenerapkan kueri ke output API tindakan 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 API tindakan dan AWS CLI perintah yang dapat Anda gunakan untuk mendapatkan deskripsi kanonik untuk setiap jenis sumber daya. AWS FISmenjalankan 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— Yang VPC 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. Kita menentukan Availability Zone dari sebuah pod dengan membandingkan HostIP dan subnet CIDR klaster.

  • clusterIdentifier – Wajib. Nama atau ARN EKS kluster 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 FISmendukung 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 tentukan 50%, AWS FIS bulatkan ke bawah. Misalnya, jika Anda menambahkan lima EC2 instans Amazon sebagai target dan cakupan hingga 50%, AWS FIS bulatkan ke dua instance. Anda tidak dapat menentukan persentase yang kurang dari satu sumber daya. Misalnya, jika Anda menambahkan empat EC2 instans dan cakupan Amazon ke 5%, tidak AWS FIS dapat memilih instance.

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 yang ditentukan VPC dengan tag yang ditentukan

Target yang mungkin untuk contoh ini adalah EC2 instance Amazon yang ditentukan VPC dengan tagenv=prod. Mode pemilihan menentukan yang 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 ECS tugas Amazon 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: EC2 contoh

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

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

{ "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: RDS Cluster Amazon (cluster DB)

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

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

[ { "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" ] } ],