的動作 AWS FIS - AWS 故障注入服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

的動作 AWS FIS

若要建立實驗範本,您必須定義一或多個動作。如需 提供的預先定義動作清單 AWS FIS,請參閱 動作參考

您只能在實驗期間執行動作一次。若要在相同的 AWS FIS實驗中多次執行相同的動作,請使用不同的名稱多次將其新增至範本。

動作語法

以下是 動作的語法。

{ "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動作具有特定於動作的其他參數。這些參數用於在執行動作時將資訊傳遞至 AWS FIS 。

AWS FIS 支援使用 aws:ssm:send-command動作的自訂錯誤類型,該動作使用 SSM 代理程式和 SSM命令文件來建立目標執行個體上的錯誤條件。aws:ssm:send-command 動作包含一個 documentArn 參數,以SSM文件的 Amazon Resource Name (ARN) 做為值。當您將動作新增至實驗範本時,您可以指定參數的值。

如需指定 aws:ssm:send-command動作參數的詳細資訊,請參閱 使用 aws:ssm:send-command 動作

在可能的情況下,您可以在動作參數中輸入回復組態 (也稱為後置動作)。後置動作會將目標回復為動作執行前原有的狀態。後置動作會在動作持續時間中指定的時間之後執行。並非所有動作都可以支援貼文動作。例如,如果動作終止 Amazon EC2執行個體,則您無法在執行個體終止後復原執行個體。

動作目標

動作會在您指定的目標資源上執行。定義目標之後,您可以在定義動作時指定其名稱。

"targets": { "ResourceType": "resource_name" }

AWS FIS 動作支援動作目標的下列資源類型:

  • AutoScalingGroups – Amazon EC2 Auto Scaling 群組

  • 儲存貯體 – Amazon S3 儲存貯體

  • 叢集 – Amazon EKS叢集

  • 叢集 – Amazon ECS叢集或 Amazon Aurora 資料庫叢集

  • DBInstances – Amazon RDS 資料庫執行個體

  • 資料表 – Amazon DynamoDB 全域資料表

  • 執行個體 – Amazon EC2執行個體

  • 節點群組 – Amazon EKS節點群組

  • Pod:Amazon 上的 Kubernetes Pod EKS

  • ReplicationGroups – ElastiCache Redis 複寫群組

  • 角色 – IAM角色

  • SpotInstances – Amazon EC2 Spot 執行個體

  • 子網路 – VPC子網路

  • 任務 – Amazon ECS任務

  • TransitGateways – 傳輸閘道

  • 磁碟區 – Amazon EBS磁碟區

如需範例,請參閱 動作範例

動作持續時間

如果動作包含參數,您可以用來指定動作的持續時間,則根據預設,該動作僅在經過指定的持續時間後才會視為完成。如果您已將emptyTargetResolutionMode實驗選項設定為 skip,則動作會在未解析目標時立即完成狀態為「略過」。例如,如果您指定 5 分鐘的持續時間, AWS FIS 會將動作視為在 5 分鐘後完成。然後,它會開始下一個動作,直到所有動作完成為止。

持續時間可以是維持動作條件的時間長度,或監控指標的時間長度。例如,延遲會在指定的時間內注入。對於近乎瞬間的動作類型,例如終止執行個體,會在指定的持續時間內監控停止條件。

如果動作在動作參數中包含後置動作,則後置動作會在動作完成後執行。完成後置動作所需的時間可能會導致指定動作持續時間與下一個動作開始 (或實驗結束,如果所有其他動作都完成) 之間的延遲。

動作範例

以下是範例動作。

範例:停止EC2執行個體

下列動作會停止使用名為 的目標所識別的EC2執行個體targetInstances。兩分鐘後,它會重新啟動目標執行個體。

"actions": { "stopInstances": { "actionId": "aws:ec2:stop-instances", "parameters": { "startInstancesAfterDuration": "PT2M" }, "targets": { "Instances": "targetInstances" } } }
範例:中斷 Spot 執行個體

下列動作會停止使用名為 的目標識別 Spot 執行個體targetSpotInstances。它會等待兩分鐘,再中斷 Spot 執行個體。

"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工作者

下列動作會終止EKS叢集中 50% 使用名為 的目標所識別的EC2執行個體targetNodeGroups

"actions": { "terminateWorkers": { "actionId": "aws:eks:terminate-nodegroup-instances", "parameters": { "instanceTerminationPercentage": "50" }, "targets": { "Nodegroups": "targetNodeGroups" } } }