Skip to content
v2.276.0

Experimental

@aws-cdk/aws-imagebuilder-alpha is an experimental (alpha) package: its API may change in any release, without a major version bump.

WorkflowData Class ​

Helper class for referencing and uploading workflow data.

Example ​

ts
const workflow = new imagebuilder.Workflow(this, 'EncryptedWorkflow', {
  workflowType: imagebuilder.WorkflowType.BUILD,
  kmsKey: new kms.Key(this, 'WorkflowKey'),
  data: imagebuilder.WorkflowData.fromJsonObject({
    schemaVersion: imagebuilder.WorkflowSchemaVersion.V1_0,
    steps: [
      {
        name: 'LaunchBuildInstance',
        action: imagebuilder.WorkflowAction.LAUNCH_INSTANCE,
        onFailure: imagebuilder.WorkflowOnFailure.ABORT,
        inputs: {
          waitFor: 'ssmAgent',
        },
      },
      {
        name: 'CreateImage',
        action: imagebuilder.WorkflowAction.CREATE_IMAGE,
        onFailure: imagebuilder.WorkflowOnFailure.ABORT,
        inputs: {
          'instanceId': 'i-123',
        },
      },
      {
        name: 'TerminateInstance',
        action: imagebuilder.WorkflowAction.TERMINATE_INSTANCE,
        onFailure: imagebuilder.WorkflowOnFailure.CONTINUE,
        inputs: {
          'instanceId': 'i-123',
        },
      },
    ],
    outputs: [
      {
        name: 'ImageId',
        value: '$.stepOutputs.CreateImage.imageId',
      },
    ],
  }),
});
python
workflow = imagebuilder.Workflow(self, "EncryptedWorkflow",
    workflow_type=imagebuilder.WorkflowType.BUILD,
    kms_key=kms.Key(self, "WorkflowKey"),
    data=imagebuilder.WorkflowData.from_json_object({
        "schema_version": imagebuilder.WorkflowSchemaVersion.V1_0,
        "steps": [{
            "name": "LaunchBuildInstance",
            "action": imagebuilder.WorkflowAction.LAUNCH_INSTANCE,
            "on_failure": imagebuilder.WorkflowOnFailure.ABORT,
            "inputs": {
                "wait_for": "ssmAgent"
            }
        }, {
            "name": "CreateImage",
            "action": imagebuilder.WorkflowAction.CREATE_IMAGE,
            "on_failure": imagebuilder.WorkflowOnFailure.ABORT,
            "inputs": {
                "instance_id": "i-123"
            }
        }, {
            "name": "TerminateInstance",
            "action": imagebuilder.WorkflowAction.TERMINATE_INSTANCE,
            "on_failure": imagebuilder.WorkflowOnFailure.CONTINUE,
            "inputs": {
                "instance_id": "i-123"
            }
        }
        ],
        "outputs": [{
            "name": "ImageId",
            "value": "$.stepOutputs.CreateImage.imageId"
        }
        ]
    })
)
java
Workflow workflow = Workflow.Builder.create(this, "EncryptedWorkflow")
        .workflowType(WorkflowType.BUILD)
        .kmsKey(new Key(this, "WorkflowKey"))
        .data(WorkflowData.fromJsonObject(Map.of(
                "schemaVersion", WorkflowSchemaVersion.V1_0,
                "steps", List.of(Map.of(
                        "name", "LaunchBuildInstance",
                        "action", WorkflowAction.LAUNCH_INSTANCE,
                        "onFailure", WorkflowOnFailure.ABORT,
                        "inputs", Map.of(
                                "waitFor", "ssmAgent")), Map.of(
                        "name", "CreateImage",
                        "action", WorkflowAction.CREATE_IMAGE,
                        "onFailure", WorkflowOnFailure.ABORT,
                        "inputs", Map.of(
                                "instanceId", "i-123")), Map.of(
                        "name", "TerminateInstance",
                        "action", WorkflowAction.TERMINATE_INSTANCE,
                        "onFailure", WorkflowOnFailure.CONTINUE,
                        "inputs", Map.of(
                                "instanceId", "i-123"))),
                "outputs", List.of(Map.of(
                        "name", "ImageId",
                        "value", "$.stepOutputs.CreateImage.imageId")))))
        .build();
csharp
// Install: dotnet add package Amazon.CDK.AWS.ImageBuilder.Alpha
var workflow = new Workflow(this, "EncryptedWorkflow", new WorkflowProps {
    WorkflowType = WorkflowType.BUILD,
    KmsKey = new Key(this, "WorkflowKey"),
    Data = WorkflowData.FromJsonObject(new Dictionary<string, object> {
        { "schemaVersion", WorkflowSchemaVersion.V1_0 },
        { "steps", new [] { new Dictionary<string, object> {
            { "name", "LaunchBuildInstance" },
            { "action", WorkflowAction.LAUNCH_INSTANCE },
            { "onFailure", WorkflowOnFailure.ABORT },
            { "inputs", new Struct {
                WaitFor = "ssmAgent"
            } }
        }, new Dictionary<string, object> {
            { "name", "CreateImage" },
            { "action", WorkflowAction.CREATE_IMAGE },
            { "onFailure", WorkflowOnFailure.ABORT },
            { "inputs", new Struct {
                InstanceId = "i-123"
            } }
        }, new Dictionary<string, object> {
            { "name", "TerminateInstance" },
            { "action", WorkflowAction.TERMINATE_INSTANCE },
            { "onFailure", WorkflowOnFailure.CONTINUE },
            { "inputs", new Struct {
                InstanceId = "i-123"
            } }
        } } },
        { "outputs", new [] { new Dictionary<string, string> {
            { "name", "ImageId" },
            { "value", "$.stepOutputs.CreateImage.imageId" }
        } } }
    })
});
go
// Install: go get github.com/aws/aws-cdk-go/awsimagebuilderalpha/v2
workflow := imagebuilder.NewWorkflow(this, jsii.String("EncryptedWorkflow"), &WorkflowProps{
	WorkflowType: imagebuilder.WorkflowType_BUILD,
	KmsKey: kms.NewKey(this, jsii.String("WorkflowKey")),
	Data: imagebuilder.WorkflowData_FromJsonObject(map[string]interface{}{
		"schemaVersion": imagebuilder.WorkflowSchemaVersion_V1_0,
		"steps": []interface{}{
			map[string]interface{}{
				"name": jsii.String("LaunchBuildInstance"),
				"action": imagebuilder.WorkflowAction_LAUNCH_INSTANCE,
				"onFailure": imagebuilder.WorkflowOnFailure_ABORT,
				"inputs": map[string]*string{
					"waitFor": jsii.String("ssmAgent"),
				},
			},
			map[string]interface{}{
				"name": jsii.String("CreateImage"),
				"action": imagebuilder.WorkflowAction_CREATE_IMAGE,
				"onFailure": imagebuilder.WorkflowOnFailure_ABORT,
				"inputs": map[string]*string{
					"instanceId": jsii.String("i-123"),
				},
			},
			map[string]interface{}{
				"name": jsii.String("TerminateInstance"),
				"action": imagebuilder.WorkflowAction_TERMINATE_INSTANCE,
				"onFailure": imagebuilder.WorkflowOnFailure_CONTINUE,
				"inputs": map[string]*string{
					"instanceId": jsii.String("i-123"),
				},
			},
		},
		"outputs": []interface{}{
			map[string]*string{
				"name": jsii.String("ImageId"),
				"value": jsii.String("$.stepOutputs.CreateImage.imageId"),
			},
		},
	}),
})

Initializer ​

ts
new WorkflowData()
python
WorkflowData()
java
new WorkflowData()
csharp
new WorkflowData()
go
NewWorkflowData()

Methods ​

fromAsset(scope: Construct, id: string, path: string, options?: AssetOptions): S3WorkflowData@staticmethod def from_asset(scope: Construct, id: str, path: str, options: typing.Optional[AssetOptions] = None) -> S3WorkflowDatapublic static S3WorkflowData fromAsset(Construct scope, String id, String path, AssetOptions options)public static S3WorkflowData FromAsset(Construct scope, string id, string path, AssetOptions? options = null)func FromAsset(Scope Construct, Id *string, Path *string, Options AssetOptions) S3WorkflowDatastatic#
Uploads workflow data from a local file to S3 to use as the workflow data.
4 parameters

Parameters

  • scopescopescopescopeScope — The construct scope.
  • ididididId — Identifier of the construct.
  • pathpathpathpathPath — The local path to the workflow data file.
  • optionsoptionsoptionsoptionsOptions — S3 asset upload options.
fromInline(data: string): WorkflowData // chainable@staticmethod def from_inline(data: str) -> WorkflowDatapublic static WorkflowData fromInline(String data)public static WorkflowData FromInline(string data)func FromInline(Data *string) WorkflowDatastatic#
Uses an inline JSON or YAML string as the workflow data.
1 parameter

Parameters

  • datadatadatadataData — An inline JSON or YAML string representing the workflow data.
fromJsonObject(data: { [key: string]: any }): WorkflowData // chainable@staticmethod def from_json_object(data: typing.Mapping[str, Any]) -> WorkflowDatapublic static WorkflowData fromJsonObject(Map<String, Object> data)public static WorkflowData FromJsonObject(IDictionary<string, object> data)func FromJsonObject(Data *map[string]interface{}) WorkflowDatastatic#
Uses an inline JSON object as the workflow data.
1 parameter

Parameters

  • datadatadatadataData — An inline JSON object representing the workflow data.
fromS3(bucket: IBucket, key: string): S3WorkflowData@staticmethod def from_s3(bucket: IBucket, key: str) -> S3WorkflowDatapublic static S3WorkflowData fromS3(IBucket bucket, String key)public static S3WorkflowData FromS3(IBucket bucket, string key)func FromS3(Bucket IBucket, Key *string) S3WorkflowDatastatic#
References workflow data from a pre-existing S3 object.
2 parameters

Parameters

  • bucketbucketbucketbucketBucket — The S3 bucket where the workflow data is stored.
  • keykeykeykeyKey — The S3 key of the workflow data file.
render(): WorkflowDataConfigdef render(self, ) -> WorkflowDataConfigpublic WorkflowDataConfig render()public WorkflowDataConfig Render()func Render() WorkflowDataConfig#
The rendered workflow data value, for use in CloudFormation.
  • For inline workflows, data is the workflow text
  • For S3-backed workflows, uri is the S3 URL