Package com.pulumi.aws.fis
Class ExperimentTemplate
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.fis.ExperimentTemplate
-
public class ExperimentTemplate extends com.pulumi.resources.CustomResourceProvides an FIS Experiment Template, which can be used to run an experiment. An experiment template contains one or more actions to run on specified targets during an experiment. It also contains the stop conditions that prevent the experiment from going out of bounds. See [Amazon Fault Injection Simulator](https://docs.aws.amazon.com/fis/index.html) for more information. ## Example Usage
### Example Usage with Report Configurationpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.fis.ExperimentTemplate; import com.pulumi.aws.fis.ExperimentTemplateArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateActionArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateActionTargetArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateStopConditionArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateTargetArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateTargetResourceTagArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var example = new ExperimentTemplate("example", ExperimentTemplateArgs.builder() .actions(ExperimentTemplateActionArgs.builder() .target(ExperimentTemplateActionTargetArgs.builder() .key("Instances") .value("example-target") .build()) .name("example-action") .actionId("aws:ec2:terminate-instances") .build()) .stopConditions(ExperimentTemplateStopConditionArgs.builder() .source("none") .build()) .targets(ExperimentTemplateTargetArgs.builder() .resourceTags(ExperimentTemplateTargetResourceTagArgs.builder() .key("env") .value("example") .build()) .name("example-target") .resourceType("aws:ec2:instance") .selectionMode("COUNT(1)") .build()) .description("example") .roleArn(exampleAwsIamRole.arn()) .build()); } }
## Import Using `pulumi import`, import FIS Experiment Templates using the `id`. For example: ```sh $ pulumi import aws:fis/experimentTemplate:ExperimentTemplate template EXT123AbCdEfGhIjK ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetPartitionArgs; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.Policy; import com.pulumi.aws.iam.PolicyArgs; import com.pulumi.aws.iam.RolePolicyAttachment; import com.pulumi.aws.iam.RolePolicyAttachmentArgs; import com.pulumi.aws.fis.ExperimentTemplate; import com.pulumi.aws.fis.ExperimentTemplateArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateExperimentReportConfigurationArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateExperimentReportConfigurationDataSourcesArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateExperimentReportConfigurationDataSourcesCloudwatchDashboardArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateExperimentReportConfigurationOutputsArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateExperimentReportConfigurationOutputsS3ConfigurationArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateActionArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateActionTargetArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateStopConditionArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateTargetArgs; import com.pulumi.aws.fis.inputs.ExperimentTemplateTargetResourceTagArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { final var current = AwsFunctions.getPartition(GetPartitionArgs.builder() .build()); var example = new Role("example", RoleArgs.builder() .name("example") .assumeRolePolicy(serializeJson( jsonObject( jsonProperty("Statement", jsonArray(jsonObject( jsonProperty("Action", "sts:AssumeRole"), jsonProperty("Effect", "Allow"), jsonProperty("Principal", jsonObject( jsonProperty("Service", jsonArray(String.format("fis.%s", current.dnsSuffix()))) )) ))), jsonProperty("Version", "2012-10-17") ))) .build()); final var reportAccess = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements( GetPolicyDocumentStatementArgs.builder() .sid("logsDelivery") .effect("Allow") .actions("logs:CreateLogDelivery") .resources("*") .build(), GetPolicyDocumentStatementArgs.builder() .sid("ReportsBucket") .effect("Allow") .actions( "s3:PutObject", "s3:GetObject") .resources("*") .build(), GetPolicyDocumentStatementArgs.builder() .sid("GetDashboard") .effect("Allow") .actions("cloudwatch:GetDashboard") .resources("*") .build(), GetPolicyDocumentStatementArgs.builder() .sid("GetDashboardData") .effect("Allow") .actions("cloudwatch:getMetricWidgetImage") .resources("*") .build()) .version("2012-10-17") .build()); var reportAccessPolicy = new Policy("reportAccessPolicy", PolicyArgs.builder() .name("report_access") .policy(reportAccess.json()) .build()); var reportAccessRolePolicyAttachment = new RolePolicyAttachment("reportAccessRolePolicyAttachment", RolePolicyAttachmentArgs.builder() .role(test.name()) .policyArn(reportAccessPolicy.arn()) .build()); var exampleExperimentTemplate = new ExperimentTemplate("exampleExperimentTemplate", ExperimentTemplateArgs.builder() .experimentReportConfiguration(ExperimentTemplateExperimentReportConfigurationArgs.builder() .dataSources(ExperimentTemplateExperimentReportConfigurationDataSourcesArgs.builder() .cloudwatchDashboards(ExperimentTemplateExperimentReportConfigurationDataSourcesCloudwatchDashboardArgs.builder() .dashboardArn(exampleAwsCloudwatchDashboard.dashboardArn()) .build()) .build()) .outputs(ExperimentTemplateExperimentReportConfigurationOutputsArgs.builder() .s3Configuration(ExperimentTemplateExperimentReportConfigurationOutputsS3ConfigurationArgs.builder() .bucketName(exampleAwsS3Bucket.bucket()) .prefix("fis-example-reports") .build()) .build()) .postExperimentDuration("PT10M") .preExperimentDuration("PT10M") .build()) .actions(ExperimentTemplateActionArgs.builder() .target(ExperimentTemplateActionTargetArgs.builder() .key("Instances") .value("example-target") .build()) .name("example-action") .actionId("aws:ec2:terminate-instances") .build()) .stopConditions(ExperimentTemplateStopConditionArgs.builder() .source("none") .build()) .targets(ExperimentTemplateTargetArgs.builder() .resourceTags(ExperimentTemplateTargetResourceTagArgs.builder() .key("env") .value("example") .build()) .name("example-target") .resourceType("aws:ec2:instance") .selectionMode("COUNT(1)") .build()) .description("example") .roleArn(example.arn()) .tags(Map.of("Name", "example")) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description ExperimentTemplate(java.lang.String name)ExperimentTemplate(java.lang.String name, ExperimentTemplateArgs args)ExperimentTemplate(java.lang.String name, ExperimentTemplateArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.util.List<ExperimentTemplateAction>>actions()com.pulumi.core.Output<java.lang.String>description()com.pulumi.core.Output<ExperimentTemplateExperimentOptions>experimentOptions()com.pulumi.core.Output<java.util.Optional<ExperimentTemplateExperimentReportConfiguration>>experimentReportConfiguration()static ExperimentTemplateget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, ExperimentTemplateState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.util.Optional<ExperimentTemplateLogConfiguration>>logConfiguration()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>roleArn()com.pulumi.core.Output<java.util.List<ExperimentTemplateStopCondition>>stopConditions()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.util.Optional<java.util.List<ExperimentTemplateTarget>>>targets()
-
-
-
Constructor Detail
-
ExperimentTemplate
public ExperimentTemplate(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
ExperimentTemplate
public ExperimentTemplate(java.lang.String name, ExperimentTemplateArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
ExperimentTemplate
public ExperimentTemplate(java.lang.String name, ExperimentTemplateArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
actions
public com.pulumi.core.Output<java.util.List<ExperimentTemplateAction>> actions()
- Returns:
- Action to be performed during an experiment. See below.
-
description
public com.pulumi.core.Output<java.lang.String> description()
- Returns:
- Description for the experiment template.
-
experimentOptions
public com.pulumi.core.Output<ExperimentTemplateExperimentOptions> experimentOptions()
- Returns:
- Experiment options for the experiment template. See experimentOptions below for more details!
-
experimentReportConfiguration
public com.pulumi.core.Output<java.util.Optional<ExperimentTemplateExperimentReportConfiguration>> experimentReportConfiguration()
- Returns:
- Configuration for [experiment reporting](https://docs.aws.amazon.com/fis/latest/userguide/experiment-report-configuration.html). See below.
-
logConfiguration
public com.pulumi.core.Output<java.util.Optional<ExperimentTemplateLogConfiguration>> logConfiguration()
- Returns:
- Configuration for experiment logging. See below.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
roleArn
public com.pulumi.core.Output<java.lang.String> roleArn()
- Returns:
- ARN of an IAM role that grants the AWS FIS service permission to perform service actions on your behalf.
-
stopConditions
public com.pulumi.core.Output<java.util.List<ExperimentTemplateStopCondition>> stopConditions()
- Returns:
- When an ongoing experiment should be stopped. See below. The following arguments are optional:
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Key-value mapping of tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
-
targets
public com.pulumi.core.Output<java.util.Optional<java.util.List<ExperimentTemplateTarget>>> targets()
- Returns:
- Target of an action. See below.
-
get
public static ExperimentTemplate get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable ExperimentTemplateState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-