actionAZ:EC2

fail_az

Simulates the loss of an AZ in an AWS Region for EC2

Activity as code

Below are the details and signature of the activity Python module.

Typeaction
Moduleazchaosaws.ec2.actions
Namefail_az
Returnmapping

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

NameTypeDefaultRequiredTitleDescription
azstringYesAvailability ZoneAZ to target
tagsList[Dict[str, str]][{"Key": "AZ_FAILURE", "Value": "True"}]NoTagsMatch only resources with these tags
failure_typestrnetworkNoFailure TypeType of failure to apply: network, instance
dry_runboolfalseNoDry RunOnly 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