AWS AZ
recover_az
Rolls back the subnet(s) and/or EC2 instances that were affected by the fail_az action
Below are the details and signature of the activity Python module.
Type | action |
Module | azchaosaws.ec2.actions |
Name | fail_az |
Return | mapping |
This function simulates the lost of an AZ in an AWS Region for EC2. For network failure type, it uses a blackhole network ACL with deny all traffic. For instance failure type, it stops normal instances with force; stops persistent spot instances; cancels spot requests and terminates one-time spot instances. Ensure your subnets are tagged if failure_type = “network” and ensure your instances are tagged if failure_type = “instance”. Instances that are not in pending or running state will still be captured and stopped.
Usage
JSON
{
"name": "fail_az",
"type": "action",
"provider": {
"type": "python",
"module": "azchaosaws.ec2.actions",
"func": "fail_az",
"arguments": {
"az": "",
"dry_run": true
}
}
}
YAML
name: fail_az
provider:
arguments:
az: ""
dry_run: true
func: fail_az
module: azchaosaws.ec2.actions
type: python
type: action
Arguments
Name | Type | Default | Required | Title | Description |
---|---|---|---|---|---|
az | string | Yes | Availability Zone | AZ to target | |
tags | List[Dict[str, str]] | [{"Key": "AZ_FAILURE", "Value": "True"}] | No | Tags | Match only resources with these tags |
failure_type | str | network | No | Failure Type | Type of failure to apply: network, instance |
dry_run | bool | false | No | Dry Run | Only perform a dry run for it |
Required:
At least one of:
Optional:
Return structure
{
"AvailabilityZone": str,
"DryRun": bool,
"Subnets":
[
{
"SubnetId": str,
"VpcId": str,
"Before": {
"NetworkAclId": str,
"NetworkAclAssociationId": str
},
"After": {
"NetworkAclId": str,
"NetworkAclAssociationId": str
}
},
...
],
"Instances":
[
{
"InstanceId": str,
"Before": {
"State": 'pending'|'running'
}
"After": {
"State": 'stopping'|'stopped'
}
},
...
]
}
Signature
def fail_az(
az: str = None,
dry_run: bool = None,
failure_type: str = "network",
filters: List[Dict[str, Any]] = None,
state_path: str = "fail_az.{}.json".format(__package__.split(".", 1)[1]),
configuration: Configuration = None,
) -> Dict[str, Any]:
pass