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.
Daftar Isi
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
- 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 adalahlabelSelector
,deploymentName
, danpodName
.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: 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
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" ] } ],