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, lihatBekerja dengan eksperimen 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:lambda: fungsi - Sebuah fungsi AWS Lambda

  • 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.

  • Jika Anda menentukan lebih dari satu tag, semua tag yang ditentukan harus ada pada sumber daya target agar dapat dipilih (AND).

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 periode berarti perluasan elemen. 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" ] } ],

Logika berikut berlaku untuk semua filter sumber daya:

  • Jika beberapa filter disediakan, termasuk filter dengan jalur yang sama, semua filter harus dicocokkan untuk sumber daya yang akan dipilih — AND

  • Jika beberapa nilai disediakan untuk satu filter, salah satu nilai harus dicocokkan untuk sumber daya yang akan dipilih — OR

  • Jika beberapa nilai ditemukan di lokasi jalur API panggilan deskripsikan, salah satu nilai harus dicocokkan untuk sumber daya yang akan dipilih — OR

  • Untuk mencocokkan pada pasangan kunci tag/nilai, Anda harus memilih sumber daya target dengan tag sebagai gantinya (lihat di atas).

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.

Jenis sumber daya Tindakan API AWS CLI perintah
aws:ec2:autoscaling-group DescribeAutoScalingGroups describe-auto-scaling-groups
aws:ec2:ebs-volume DescribeVolumes jelaskan-volume
aws:ec2:instance DescribeInstances mendeskripsikan-contoh
aws:ec2:subnet DescribeSubnets jelaskan-subnet
aws:ec2:transit-gateway DescribeTransitGateways describe-transit-gateways
aws:ecs:cluster DescribeClusters jelaskan-cluster
aws:ecs:task DescribeTasks jelaskan tugas-tugas
aws:eks:cluster DescribeClusters jelaskan-cluster
aws:eks:nodegroup DescribeNodegroup jelaskan-nodegroup
aws:elasticache:redis-replicationgroup DescribeReplicationGroups describe-replication-groups
aws:iam:role ListRoles daftar-peran
aws:lambda:function ListFunctions daftar-fungsi
aws:rds:cluster D escribeDBClusters describe-db-clusters
aws:rds:db D escribeDBInstances describe-db-instances
aws:s3:bucket ListBuckets daftar-ember
aws:dynamodb:global-table DescribeTable deskripsikan-tabel

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:lambda:function
  • functionQualifier – Opsional. Versi atau alias fungsi yang ditargetkan. Jika tidak ada kualifikasi yang ditentukan, semua pemanggilan akan dipertimbangkan untuk penargetan. Jika alias dengan beberapa versi ditentukan, semua versi yang disertakan dalam alias akan dipertimbangkan untuk penargetan selama mereka dipanggil menggunakan alias yang ARN berisi. Jika alias khusus $LATEST digunakan, pemanggilan ke fungsi dasar ARN dan pemanggilan termasuk $LATEST dalam ARN akan dipertimbangkan untuk injeksi kesalahan. Untuk informasi selengkapnya tentang versi Lambda, lihat Mengelola versi fungsi Lambda di panduan pengguna.AWS Lambda

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.

Modus seleksi

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 tag env=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 denganitalics. 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", ... "NetworkInterfaces": [ { ... "Groups": [ { "GroupName": "sec-group-1", "GroupId": "sg-a0011223344556677" }, { "GroupName": "sec-group-1", "GroupId": "sg-b9988776655443322" } ], ... }, ... }, ... { ... } ], "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" ] } ],

Untuk memilih instance yang memiliki salah satu dari sejumlah grup keamanan yang dilampirkan, tentukan satu filter dengan jalur atribut untuk GroupId dan beberapa grup IDs keamanan. Sebagai contoh:

"filters": [ { "path": "NetworkInterfaces.Groups.GroupId", "values": [ "sg-a0011223344556677", "sg-f1100110011001100" ] } ],

Untuk memilih instance yang memiliki semua grup keamanan yang dilampirkan, tentukan beberapa filter dengan jalur atribut untuk GroupId dan satu ID grup keamanan untuk setiap filter. Sebagai contoh:

"filters": [ { "path": "NetworkInterfaces.Groups.GroupId", "values": [ "sg-a0011223344556677" ] }, { "path": "NetworkInterfaces.Groups.GroupId", "values": [ "sg-b9988776655443322" ] } ],
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 denganitalics. 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" ] } ],