CreateExperimentTemplate - AWS Fault Injection Service

CreateExperimentTemplate

Creates an experiment template.

An experiment template includes the following components:

  • Targets: A target can be a specific resource in your AWS environment, or one or more resources that match criteria that you specify, for example, resources that have specific tags.

  • Actions: The actions to carry out on the target. You can specify multiple actions, the duration of each action, and when to start each action during an experiment.

  • Stop conditions: If a stop condition is triggered while an experiment is running, the experiment is automatically stopped. You can define a stop condition as a CloudWatch alarm.

For more information, see experiment templates in the AWS Fault Injection Service User Guide.

Request Syntax

POST /experimentTemplates HTTP/1.1 Content-type: application/json { "actions": { "string" : { "actionId": "string", "description": "string", "parameters": { "string" : "string" }, "startAfter": [ "string" ], "targets": { "string" : "string" } } }, "clientToken": "string", "description": "string", "experimentOptions": { "accountTargeting": "string", "emptyTargetResolutionMode": "string" }, "experimentReportConfiguration": { "dataSources": { "cloudWatchDashboards": [ { "dashboardIdentifier": "string" } ] }, "outputs": { "s3Configuration": { "bucketName": "string", "prefix": "string" } }, "postExperimentDuration": "string", "preExperimentDuration": "string" }, "logConfiguration": { "cloudWatchLogsConfiguration": { "logGroupArn": "string" }, "logSchemaVersion": number, "s3Configuration": { "bucketName": "string", "prefix": "string" } }, "roleArn": "string", "stopConditions": [ { "source": "string", "value": "string" } ], "tags": { "string" : "string" }, "targets": { "string" : { "filters": [ { "path": "string", "values": [ "string" ] } ], "parameters": { "string" : "string" }, "resourceArns": [ "string" ], "resourceTags": { "string" : "string" }, "resourceType": "string", "selectionMode": "string" } } }

URI Request Parameters

The request does not use any URI parameters.

Request Body

The request accepts the following data in JSON format.

actions

The actions for the experiment.

Type: String to CreateExperimentTemplateActionInput object map

Key Length Constraints: Maximum length of 64.

Key Pattern: [\S]+

Required: Yes

clientToken

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 1024.

Pattern: [\S]+

Required: Yes

description

A description for the experiment template.

Type: String

Length Constraints: Maximum length of 512.

Pattern: [\s\S]+

Required: Yes

experimentOptions

The experiment options for the experiment template.

Type: CreateExperimentTemplateExperimentOptionsInput object

Required: No

experimentReportConfiguration

The experiment report configuration for the experiment template.

Type: CreateExperimentTemplateReportConfigurationInput object

Required: No

logConfiguration

The configuration for experiment logging.

Type: CreateExperimentTemplateLogConfigurationInput object

Required: No

roleArn

The Amazon Resource Name (ARN) of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf.

Type: String

Length Constraints: Minimum length of 20. Maximum length of 2048.

Pattern: [\S]+

Required: Yes

stopConditions

The stop conditions.

Type: Array of CreateExperimentTemplateStopConditionInput objects

Required: Yes

tags

The tags to apply to the experiment template.

Type: String to string map

Map Entries: Maximum number of 50 items.

Key Length Constraints: Maximum length of 128.

Key Pattern: [\s\S]+

Value Length Constraints: Maximum length of 256.

Value Pattern: [\s\S]*

Required: No

targets

The targets for the experiment.

Type: String to CreateExperimentTemplateTargetInput object map

Key Length Constraints: Maximum length of 64.

Key Pattern: [\S]+

Required: No

Response Syntax

HTTP/1.1 200 Content-type: application/json { "experimentTemplate": { "actions": { "string" : { "actionId": "string", "description": "string", "parameters": { "string" : "string" }, "startAfter": [ "string" ], "targets": { "string" : "string" } } }, "arn": "string", "creationTime": number, "description": "string", "experimentOptions": { "accountTargeting": "string", "emptyTargetResolutionMode": "string" }, "experimentReportConfiguration": { "dataSources": { "cloudWatchDashboards": [ { "dashboardIdentifier": "string" } ] }, "outputs": { "s3Configuration": { "bucketName": "string", "prefix": "string" } }, "postExperimentDuration": "string", "preExperimentDuration": "string" }, "id": "string", "lastUpdateTime": number, "logConfiguration": { "cloudWatchLogsConfiguration": { "logGroupArn": "string" }, "logSchemaVersion": number, "s3Configuration": { "bucketName": "string", "prefix": "string" } }, "roleArn": "string", "stopConditions": [ { "source": "string", "value": "string" } ], "tags": { "string" : "string" }, "targetAccountConfigurationsCount": number, "targets": { "string" : { "filters": [ { "path": "string", "values": [ "string" ] } ], "parameters": { "string" : "string" }, "resourceArns": [ "string" ], "resourceTags": { "string" : "string" }, "resourceType": "string", "selectionMode": "string" } } } }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

experimentTemplate

Information about the experiment template.

Type: ExperimentTemplate object

Errors

For information about the errors that are common to all actions, see Common Errors.

ConflictException

The request could not be processed because of a conflict.

HTTP Status Code: 409

ResourceNotFoundException

The specified resource cannot be found.

HTTP Status Code: 404

ServiceQuotaExceededException

You have exceeded your service quota.

HTTP Status Code: 402

ValidationException

The specified input is not valid, or fails to satisfy the constraints for the request.

HTTP Status Code: 400

Examples

Terminate EC2 instances

The following example terminates three instances in the specified VPC with the tag env=test.

Sample Request

{ "description": "Test instance termination", "targets": { "to-terminate": { "resourceType": "aws:ec2:instance", "resourceTags": { "env": "test" }, "filters": [ "path": "VpcId", "values": [ "vpc-1234567890abcdef0" ] ], "selectionMode": "COUNT(3)" } }, "actions": { "TerminateInstances": { "actionId": "aws:ec2-terminate-instances", "description": "terminate instances", "targets": { "Instances": "to-terminate" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam:123456789012:role/ExperimentRole", }

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: