翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
実験テンプレートを作成するには、1 つ以上のアクションを定義する必要があります。FIS が提供する事前定義されたアクションのリストについては、 AWS 「」を参照してくださいアクションリファレンス。
アクションは、実験中に 1 回だけ実行できます。同じ実験で同じ FIS AWS アクションを複数回実行するには、異なる名前を使用してテンプレートに複数回追加します。
アクションの構文
次にアクションの構文を示します。
{
"actions": {
"action_name
": {
"actionId": "aws:service
:action-type
",
"description": "string
",
"parameters": {
"name
": "value
"
},
"startAfter": ["action_name
", ...],
"targets": {
"ResourceType
": "target_name
"
}
}
}
}
アクションを定義する場合は、以下を指定します。
action_name
-
アクションの名前。
- actionId
- description
-
オプションの説明。
- parameters
-
任意のアクションパラメータ。
- startAfter
-
このアクションを開始する前に完了する必要があるアクション。それ以外の場合、アクションは実験の開始時に実行されます。
- targets
-
すべてのアクションターゲット。
例については、「アクションの例」を参照してください。
アクション識別子
各 AWS FIS アクションには、次の形式の識別子があります。
aws:service-name
:action-type
例えば、以下のアクションは、ターゲットの Amazon EC2 インスタンスを停止します。
aws:ec2:stop-instances
アクションの完全なリストについては、AWS FIS アクションリファレンス を参照してください。
アクションパラメータ
一部の AWS FIS アクションには、アクションに固有の追加のパラメータがあります。これらのパラメータは、アクションの実行時に FIS AWS に情報を渡すために使用されます。
AWS FIS は、 aws:ssm:send-command
アクションを使用してカスタム障害タイプをサポートします。このアクションは、SSM エージェントと SSM コマンドドキュメントを使用して、ターゲットインスタンスに障害条件を作成します。aws:ssm:send-command
アクションには、SSM ドキュメントの Amazon リソースネーム (ARN) を値として取る documentArn
パラメータが含まれています。実験テンプレートにアクションを追加するときに、パラメータの値を指定します。
aws:ssm:send-command
アクションのパラメータを指定する方法の詳細については、「aws:ssm:send-command アクションを使用します」を参照してください。
可能な場合は、アクションパラメータ内のロールバック設定を入力できます (ポストアクションともよばれます) 。ポストアクションは、ターゲットをアクションが実行される前の状態に戻します。ポストアクションは、アクション期間に指定された時間後に実行されます。すべてのアクションがポストアクションをサポートできるわけではありません。例えば、アクションによって Amazon EC2 インスタンスが終了した場合、インスタンス終了後にこのインスタンスを回復することはできません。
アクションターゲット
アクションは、指定したターゲットリソースで実行されます。ターゲットを定義したら、アクションを定義するときにその名前を指定できます。
"targets": {
"ResourceType
": "resource_name
"
}
AWS FIS アクションは、アクションターゲットに対して次のリソースタイプをサポートします。
-
AutoScalingGroups – Amazon EC2 Auto Scaling グループ
-
Buckets - Amazon S3 バケット
-
Cluster - Amazon EKS クラスター
-
Clusters - Amazon ECS クラスターまたは Amazon Aurora DB クラスター
-
DBInstances - Amazon RDS DB インスタンス
-
テーブル – Amazon DynamoDB グローバルテーブル
-
Instances - Amazon EC2 インスタンス
-
Nodegroups – Amazon EKS のノードグループ
-
Pods - Amazon EKS の Kubernetes ポッド
-
ReplicationGroups – ElastiCache レプリケーショングループ
-
Roles – IAM ロール
-
SpotInstances – Amazon EC2 スポットインスタンス
-
Subnets - VPC サブネット
-
Tasks - Amazon ECS タスク
-
TransitGateways - トランジットゲートウェイ
-
Volumes - Amazon EBS ボリューム
例については、「アクションの例」を参照してください。
アクション期間
アクションにアクションの継続時間を指定するために使用できるパラメータが含まれている場合、デフォルトでは、このアクションは指定した期間が経過した後にのみ完了とみなされます。emptyTargetResolutionMode
実験オプションを skip
に設定した場合、ターゲットが解決されなかったとき、アクションは「スキップ」ステータスですぐに完了します。例えば、5 分の期間を指定すると、 AWS FIS は 5 分後にアクションが完了したと見なします。その後、すべてのアクションが完了するまで、次のアクションが開始されます。
期間は、アクション条件が維持される時間、またはメトリクスが監視される時間の長さのいずれかです。例えば、指定した時間の間、レイテンシーが注入されます。インスタンスの終了など、ほぼ瞬時のアクションタイプの場合、停止条件は指定された期間監視されます。
アクションがアクションパラメータ内にポストアクションを含んでいる場合、そのアクションが完了した後にポストアクションが実行されます。ポストアクションを完了するのにかかる時間によって、指定されたアクション期間から次のアクションの開始までの間に遅延が発生することがあります(または、他のすべてのアクションが完了した場合は実験を終了します)。
アクションの例
アクションの例は次のとおりです。
例: EC2インスタンスを停止する
次のアクションは、targetInstances
という名前のターゲットで識別された EC2 インスタンスを停止します。2 分後にターゲットのインスタンスが再起動されます。
"actions": {
"stopInstances
": {
"actionId": "aws:ec2:stop-instances",
"parameters": {
"startInstancesAfterDuration": "PT2M
"
},
"targets": {
"Instances": "targetInstances
"
}
}
}
例: スポットインスタンスの中断
次のアクションは、targetSpotInstances
という名前のターゲットで識別されたスポットインスタンスを停止します。2 分間待ってから、スポットインスタンスが中断されます。
"actions": {
"interruptSpotInstances
": {
"actionId": "aws:ec2:send-spot-instance-interruptions",
"parameters": {
"durationBeforeInterruption": "PT2M
"
},
"targets": {
"SpotInstances": "targetSpotInstances
"
}
}
}
例: ネットワークトラフィックの中断
次のアクションは、ターゲットサブネットと他のアベイラビリティーゾーン内のサブネット間のトラフィックを拒否します。
"actions": {
"disruptAZConnectivity
": {
"actionId": "aws:network:disrupt-connectivity",
"parameters": {
"scope": "availability-zone",
"duration": "PT5M
"
},
"targets": {
"Subnets": "targetSubnets
"
}
}
}
例: EKS ワーカーの終了
次のアクションは、targetNodeGroups
という名前のターゲットを使用して特定された EKS クラスター内の EC2 インスタンスの 50% を終了します。
"actions": {
"terminateWorkers
": {
"actionId": "aws:eks:terminate-nodegroup-instances",
"parameters": {
"instanceTerminationPercentage": "50
"
},
"targets": {
"Nodegroups": "targetNodeGroups
"
}
}
}