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