のターゲット AWS FIS - AWS 障害インジェクションサービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

のターゲット AWS FIS

ターゲットが 1 つ以上である AWS アクションが によって実行される リソース AWS Fault Injection Service (AWS FIS) 実験中。ターゲットは、実験と同じ AWS アカウント、またはマルチアカウント実験を使用した別の アカウントにあることができます。別のアカウントのリソースをターゲットにする方法の詳細については、「のマルチアカウント実験の使用 AWS FIS」を参照してください。

ターゲットは、実験テンプレートの作成を行う場合に定義します。実験テンプレートの複数のアクションに対して同じターゲットを使用できます。

AWS FIS は、アクションセット内のアクションを開始する前に、実験の開始時にすべてのターゲットを識別します。 AWS FIS は、実験全体で選択したターゲットリソースを使用します。ターゲットが見つからない場合、実験は失敗します。

ターゲット構文

次に、 ターゲットの構文を示します。

{ "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" } } }

ターゲットを定義するときは、以下の情報を指定します。

target_name

ターゲットの名前。

resourceType

リソースタイプ

resourceArns

特定のリソースの Amazon リソースネーム (ARN)。

resourceTags

特定のリソースに適用するタグ。

parameters

特定の属性でターゲットを識別するパラメータ

filters

リソースフィルターは、特定の属性で識別されるターゲットリソースの範囲を設定します。

selectionMode

識別されたリソースの選択モード

例については、「ターゲットの例」を参照してください。

リソースタイプ

各 AWS FIS アクションは特定の で実行されます。 AWS リソースタイプ。ターゲットを定義する場合は、厳密に 1 つのリソースタイプを指定する必要があります。アクションのターゲットを指定する場合、ターゲットはアクションでサポートされているリソースタイプである必要があります。

次のリソースタイプは でサポートされています。 AWS FIS:

  • aws:dynamodb:global-table – Amazon DynamoDB グローバルテーブル

  • aws:ec2:autoscaling-group – Amazon EC2 Auto Scaling グループ

  • aws:ec2:ebs-volume – Amazon EBSボリューム

  • aws:ec2:instance – Amazon EC2インスタンス

  • aws:ec2:spot-instance – Amazon EC2 スポットインスタンス

  • aws:ec2:subnet – Amazon VPCサブネット

  • aws:ec2:transit-gateway – トランジットゲートウェイ

  • aws:ecs:cluster – Amazon ECSクラスター

  • aws:ecs:task – Amazon ECSタスク

  • aws:eks:cluster – Amazon EKSクラスター

  • aws:eks:nodegroup – Amazon EKSノードグループ

  • aws:eks:pod - Kubernetes ポッド

  • aws:elasticache:redis-replicationgroup – ElastiCache (Redis OSS) レプリケーショングループ

  • aws:iam:role – IAMロール

  • aws:rds:cluster — Amazon Aurora DB クラスター

  • aws:rds:db – Amazon RDS DB インスタンス

  • aws:s3:bucket – Amazon S3 バケット

ターゲットリソースを識別する

でターゲットを定義する場合 AWS FIS コンソールでは、特定の を選択できます。 AWS ターゲットにする (特定のリソースタイプの) リソース。または、 AWS FIS は、指定した基準に基づいてリソースのグループを識別します。

ターゲットリソースを識別するには、次の項目を指定できます。

  • リソース IDs — 特定の IDsのリソース AWS リソースの使用料金を見積もることができます。すべてのリソースは、同じタイプのリソースを表すIDs必要があります。

  • リソースタグ — 特定の に適用されるタグ AWS リソースの使用料金を見積もることができます。

  • リソースフィルター — 特定の属性を持つリソースを表すパスと値。詳細については、「リソースフィルター」を参照してください。

  • リソースパラメータ - 特定の基準を満たすリソースを表すパラメータ。詳細については、「リソースパラメータ」を参照してください。

考慮事項
  • 同一ターゲットのリソース ID とリソースタグの両方を指定することはできません。

  • 同一ターゲットのリソース ID とリソースフィルターの両方を指定することはできません。

  • タグ値が空のリソースタグを指定しても、ワイルドカードを指定することにはなりません。その場合、指定したタグキーと空のタグ値を持つタグがあるリソースが一対象になります。

リソースフィルター

リソースフィルターは、特定の属性に従ってターゲットリソースを識別するクエリです。 AWS FIS は、 の正規説明を含むAPIアクションの出力にクエリを適用します。 AWS 指定したリソースタイプに応じた リソース。クエリに一致する属性を持つリソースは、ターゲット定義に含まれます。

各フィルターは、属性パスと指定可能な値として表されます。パスは、ピリオドで区切られた一連の要素です。リソースの記述アクションの出力における属性までのパスを記述します。リソースの Describe アクションの出力がキャメルケースでも、各要素はパスカルケースで表現する必要があります。例えば、availablityZone ではなく、AvailabilityZone を属性要素として使用する必要があります。

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

次の表に、 APIアクションと アクションを示します。 AWS CLI 各リソースタイプの正規説明を取得するために使用できる コマンド。 AWS FIS は、ユーザーに代わってこれらのアクションを実行し、指定したフィルターを適用します。対応するドキュメントでは、デフォルトで結果に含まれるリソースについて説明します。例えば、DescribeInstances のドキュメントは、最近終了したインスタンスが結果に表示される可能性があると述べています。

リソースタイプ API アクション AWS CLI コマンド
aws:ec2:autoscaling-group DescribeAutoScalingGroups describe-auto-scaling-groups
aws:ec2:ebs-volume DescribeVolumes describe-volumes
aws:ec2:instance DescribeInstances describe-instances
aws:ec2:subnet DescribeSubnets describe-subnets
aws:ec2:transit-gateway DescribeTransitGateways describe-transit-gateways
aws:ecs:cluster DescribeClusters describe-clusters
aws:ecs:task DescribeTasks describe-tasks
aws:eks:cluster DescribeClusters describe-clusters
aws:eks:nodegroup DescribeNodegroup describe-nodegroup
aws:elasticache:redis-replicationgroup DescribeReplicationGroups describe-replication-groups
aws:iam:role ListRoles list-roles
aws:rds:cluster DescribeDBClusters describe-db-clusters
aws:rds:db DescribeDBInstances describe-db-instances
aws:s3:bucket ListBuckets list-buckets

次のロジックは、すべてのリソースフィルターに適用されます。

  • フィルター内の値 — OR

  • フィルター間の値 — AND

例については、「フィルターの例」を参照してください。

リソースパラメータ

リソースパラメータは、特定の基準に従ってターゲットリソースを識別します。

以下のリソースタイプはパラメータをサポートします。

aws:ec2:ebs-volume
  • availabilityZoneIdentifier - ターゲットボリュームがあるアベイラビリティーゾーンのコード (例えば、us-east-1a)。

aws:ec2:subnet
  • availabilityZoneIdentifier - ターゲットサブネットがあるアベイラビリティーゾーンのコード (us-east-1a など) または AZ ID (例えば、use1-az1)。

  • vpc – ターゲットサブネットVPCを含む 。アカウントVPCごとに複数の をサポートしていません。

aws:ecs:task
  • cluster - ターゲットタスクがあるクラスター。

  • service - ターゲットタスクがあるサービス。

aws:eks:pod
  • availabilityZoneIdentifier - オプション。ターゲットポッドがあるアベイラビリティーゾーン。例えば、us-east-1d と指定します。ポッドのアベイラビリティーゾーンは、その hostIP とクラスターサブネットCIDRの を比較して決定します。

  • clusterIdentifier – 必須。ターゲットEKSクラスターARNの名前または。

  • namespace – 必須。ターゲットポッドの Kubernetes 名前空間。

  • selectorType – 必須。セレクタータイプ。指定できる値は、labelSelectordeploymentName および podName です。

  • selectorValue – 必須。セレクター値。この値は、selectorType の値によって異なります。

  • targetContainerName - オプション。ポッド仕様で定義されたターゲットコンテナの名前。デフォルトは、各ターゲットポッド仕様で定義されている最初のコンテナです。

aws:rds:cluster
  • writerAvailabilityZoneIdentifiers - オプション。DB クラスターのライターのアベイラビリティーゾーン。使用できる値: アベイラビリティーゾーンの識別子のカンマ区切りリスト、all

aws:rds:db
  • availabilityZoneIdentifiers - オプション。影響を受ける DB インスタンスのアベイラビリティーゾーン。使用できる値: アベイラビリティーゾーンの識別子のカンマ区切りリスト、all

aws:elasticache:redis-replicationgroup
  • availabilityZoneIdentifier – 必須。ターゲットノードを含むアベイラビリティーゾーンのコード (us-east-1a など) または AZ ID (use1-az1 など)。

選択モード

選択モードを指定して、識別されたリソースの範囲を指定します。 AWS FIS では、次の選択モードがサポートされています。

  • ALL - すべてのターゲットに対してアクションを実行します。

  • COUNT(n) — 識別されたターゲットからランダムに選択された、指定された数のターゲットに対してアクションを実行します。例えば、 COUNT(1) は識別されたターゲットの 1 つを選択します。

  • PERCENT(n) — 識別されたターゲットからランダムに選択された、指定された割合のターゲットに対してアクションを実行します。例えば、 PERCENT(25) は識別されたターゲットの 25% を選択します。

リソースの数が奇数で、50% を指定した場合 AWS FIS は切り捨てられます。例えば、5 つの Amazon EC2インスタンスをターゲットとして追加し、スコープを 50% にするとします。 AWS FIS は 2 つのインスタンスに切り下げます。1 リソース未満のパーセンテージは指定できません。例えば、4 つの Amazon EC2インスタンスとスコープを 5% に追加すると、 AWS FIS はインスタンスを選択できません。

同じターゲットリソースタイプを使用して複数のターゲットを定義する場合、 AWS FIS は同じリソースを複数回選択できます。

使用する選択モードにかかわらず、指定したスコープでリソースが識別されない場合、実験は失敗します。

ターゲットの例

以下はターゲットの例です。

例: 指定されたタグVPCを持つ指定された のインスタンス

この例の可能なターゲットは、 タグVPCで指定された の Amazon EC2インスタンスです。env=prod。 選択モードでは、以下を指定します。 AWS FIS は、これらのターゲットの 1 つをランダムに選択します。

{ "targets": { "randomInstance": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "prod" }, "filters": [ { "path": "VpcId", "values": [ "vpc-aabbcc11223344556" ] } ], "selectionMode": "COUNT(1)" } } }
例: 指定されたパラメータのあるタスク

この例の可能なターゲットは、指定されたクラスターとサービスを持つ Amazon ECSタスクです。選択モードでは、以下を指定します。 AWS FIS これらのターゲットの 1 つをランダムに選択します。

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

フィルターの例

以下はフィルターの例です。

例: EC2インスタンス

aws:ec2:instance リソースタイプをサポートするアクションのフィルターを指定すると、 AWS FIS は Amazon EC2 describe-instances コマンドを使用し、フィルターを適用してターゲットを識別します。

describe-instances コマンドは、各インスタンスが の構造であるJSON出力を返しますInstances。以下は、 でマークされたフィールドを含む部分出力です。italics。 これらのフィールドを使用して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" }, ... ] }

リソースフィルターを使用して特定のアベイラビリティーゾーン内のインスタンスを選択するには、AvailabilityZone の属性パスを指定し、アベイラビリティーゾーンのコードを値として指定します。例:

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

リソースフィルターを使用して特定のサブネット内のインスタンスを選択するには、SubnetId の属性パスを指定し、値としてサブネットの ID を指定します。例:

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

特定のインスタンス状態にあるインスタンスを選択するには、Name の属性パスを指定します。値として、次のいずれかの状態名を指定します。pending | running | shutting-down | terminated | stopping | stopped。例:

"filters": [ { "path": "State.Name", "values": [ "running" ] } ],
例: Amazon RDSクラスター (DB クラスター)

aws:rds:cluster リソースタイプをサポートするアクションのフィルターを指定すると、 AWS FIS は Amazon RDS describe-db-clusters コマンドを実行し、フィルターを適用してターゲットを識別します。

describe-db-clusters コマンドは、各 DB クラスターについて次のようなJSON出力を返します。以下は、 でマークされたフィールドを含む部分出力です。italics。 これらのフィールドを使用して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", ... } ]

特定の DB エンジンを使用する DB クラスターのみを返すリソースフィルターを適用するには、次の例に示すように Engine として属性パス aurora-postgresql として値を指定します。

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

特定のアベイラビリティーゾーン内の DB クラスターのみを返すリソースフィルターを適用するには、次の例に示すように、属性のパスと値を指定します。

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