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
-
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: