Workflow

class Workflow : KotlinCustomResource

Resource for managing an AWS EC2 Image Builder Workflow.

Image Builder manages the workflows for the distribution stage. Therefore, using the DISTRIBUTION workflow type results in an error.

Example Usage

Basic Usage

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.imagebuilder.Workflow("example", {
name: "example",
version: "1.0.0",
type: "TEST",
data: `name: example
description: Workflow to test an image
schemaVersion: 1.0
parameters:
- name: waitForActionAtEnd
type: boolean
steps:
- name: LaunchTestInstance
action: LaunchInstance
onFailure: Abort
inputs:
waitFor: "ssmAgent"
- name: TerminateTestInstance
action: TerminateInstance
onFailure: Continue
inputs:
instanceId.: ".stepOutputs.LaunchTestInstance.instanceId"
- name: WaitForActionAtEnd
action: WaitForAction
if:
booleanEquals: true
value: ".parameters.waitForActionAtEnd"
`,
});
import pulumi
import pulumi_aws as aws
example = aws.imagebuilder.Workflow("example",
name="example",
version="1.0.0",
type="TEST",
data="""name: example
description: Workflow to test an image
schemaVersion: 1.0
parameters:
- name: waitForActionAtEnd
type: boolean
steps:
- name: LaunchTestInstance
action: LaunchInstance
onFailure: Abort
inputs:
waitFor: "ssmAgent"
- name: TerminateTestInstance
action: TerminateInstance
onFailure: Continue
inputs:
instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"
- name: WaitForActionAtEnd
action: WaitForAction
if:
booleanEquals: true
value: "$.parameters.waitForActionAtEnd"
""")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.ImageBuilder.Workflow("example", new()
{
Name = "example",
Version = "1.0.0",
Type = "TEST",
Data = @"name: example
description: Workflow to test an image
schemaVersion: 1.0
parameters:
- name: waitForActionAtEnd
type: boolean
steps:
- name: LaunchTestInstance
action: LaunchInstance
onFailure: Abort
inputs:
waitFor: ""ssmAgent""
- name: TerminateTestInstance
action: TerminateInstance
onFailure: Continue
inputs:
instanceId.$: ""$.stepOutputs.LaunchTestInstance.instanceId""
- name: WaitForActionAtEnd
action: WaitForAction
if:
booleanEquals: true
value: ""$.parameters.waitForActionAtEnd""
",
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/imagebuilder"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := imagebuilder.NewWorkflow(ctx, "example", &imagebuilder.WorkflowArgs{
Name: pulumi.String("example"),
Version: pulumi.String("1.0.0"),
Type: pulumi.String("TEST"),
Data: pulumi.String(`name: example
description: Workflow to test an image
schemaVersion: 1.0
parameters:
- name: waitForActionAtEnd
type: boolean
steps:
- name: LaunchTestInstance
action: LaunchInstance
onFailure: Abort
inputs:
waitFor: "ssmAgent"
- name: TerminateTestInstance
action: TerminateInstance
onFailure: Continue
inputs:
instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"
- name: WaitForActionAtEnd
action: WaitForAction
if:
booleanEquals: true
value: "$.parameters.waitForActionAtEnd"
`),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.imagebuilder.Workflow;
import com.pulumi.aws.imagebuilder.WorkflowArgs;
import java.util.List;
import java.util.ArrayList;
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 Workflow("example", WorkflowArgs.builder()
.name("example")
.version("1.0.0")
.type("TEST")
.data("""
name: example
description: Workflow to test an image
schemaVersion: 1.0
parameters:
- name: waitForActionAtEnd
type: boolean
steps:
- name: LaunchTestInstance
action: LaunchInstance
onFailure: Abort
inputs:
waitFor: "ssmAgent"
- name: TerminateTestInstance
action: TerminateInstance
onFailure: Continue
inputs:
instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"
- name: WaitForActionAtEnd
action: WaitForAction
if:
booleanEquals: true
value: "$.parameters.waitForActionAtEnd"
""")
.build());
}
}
resources:
example:
type: aws:imagebuilder:Workflow
properties:
name: example
version: 1.0.0
type: TEST
data: |
name: example
description: Workflow to test an image
schemaVersion: 1.0
parameters:
- name: waitForActionAtEnd
type: boolean
steps:
- name: LaunchTestInstance
action: LaunchInstance
onFailure: Abort
inputs:
waitFor: "ssmAgent"
- name: TerminateTestInstance
action: TerminateInstance
onFailure: Continue
inputs:
instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"
- name: WaitForActionAtEnd
action: WaitForAction
if:
booleanEquals: true
value: "$.parameters.waitForActionAtEnd"

Import

Using pulumi import, import EC2 Image Builder Workflow using the example_id_arg. For example:

$ pulumi import aws:imagebuilder/workflow:Workflow example arn:aws:imagebuilder:us-east-1:aws:workflow/test/example/1.0.1/1

Certain resource arguments, such as uri, cannot be read via the API and imported into Terraform. Terraform will display a difference for these arguments the first run after import if declared in the Terraform configuration for an imported resource.

Properties

Link copied to clipboard
val arn: Output<String>

Amazon Resource Name (ARN) of the workflow.

Link copied to clipboard

Change description of the workflow.

Link copied to clipboard
val data: Output<String>

Inline YAML string with data of the workflow. Exactly one of data and uri can be specified.

Link copied to clipboard
val dateCreated: Output<String>

Date the workflow was created.

Link copied to clipboard
val description: Output<String>?

Description of the workflow.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val kmsKeyId: Output<String>?

Amazon Resource Name (ARN) of the Key Management Service (KMS) Key used to encrypt the workflow.

Link copied to clipboard
val name: Output<String>

Name of the workflow.

Link copied to clipboard
val owner: Output<String>

Owner of the workflow.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val tags: Output<Map<String, String>>?

Key-value map of resource tags for the workflow. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

Link copied to clipboard
val tagsAll: Output<Map<String, String>>
Link copied to clipboard
val type: Output<String>

Type of the workflow. Valid values: BUILD, TEST.

Link copied to clipboard
val uri: Output<String>?

S3 URI with data of the workflow. Exactly one of data and uri can be specified.

Link copied to clipboard
val urn: Output<String>
Link copied to clipboard
val version: Output<String>

Version of the workflow. The following arguments are optional: