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, 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 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.
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) 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 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 - 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 OSS) ElastiCache
-
aws:iam:role — Peran IAM
-
aws:lambda: fungsi - Sebuah fungsi AWS Lambda
-
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:
-
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 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 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 panggilan API deskripsikan, salah satu nilai harus dicocokkan agar sumber daya 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 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.
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 | Jelaskan DBClusters | describe-db-clusters |
aws:rds:db | Jelaskan DBInstances | 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
— 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 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 ARN yang berisi alias. 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.
-
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 EC2 instans Amazon 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 EC2 instans dan cakupan Amazon 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: Contoh di VPC yang ditentukan dengan tag yang ditentukan
Target yang mungkin untuk contoh ini adalah EC2 instance Amazon 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
Contoh: EC2 contoh
Saat Anda menentukan filter untuk tindakan yang mendukung tipe sumber daya aws:ec2:instance, AWS FIS menggunakan perintah EC2 describe-instances Amazon 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 denganitalics
. 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",
...
"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: 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 denganitalics
. 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" ] } ],