colossal-camera-57941
05/11/2021, 2:39 PMbillowy-army-68599
05/11/2021, 2:47 PMcolossal-camera-57941
05/11/2021, 2:53 PMconst test = new aws.sfn.StateMachine('test', {
roleArn: sfnRole.arn,
definition: pulumi
.all([
fgTaskDefinition.taskDefinition.arn,
fgTaskDefinitionCluster.cluster.arn
])
.apply(([fgTaskDefinitionArn, fgClusterDefinitionArn]) =>
JSON.stringify({
Comment: 'Test',
StartAt: 'Test',
States: {
Test: {
Type: 'Task',
Resource: 'arn:aws:states:::<ecs:runTask.waitForTaskToken>',
Parameters: {
LaunchType: 'FARGATE',
Cluster: fgClusterDefinitionArn,
TaskDefinition: fgTaskDefinitionArn,
Overrides: {
ContainerOverrides: [
{
Name: 'test',
Environment: [
{
Name: 'TASK_TOKEN_ENV_VARIABLE',
'Value.$': '$$.Task.Token'
}
]
}
]
},
NetworkConfiguration: {
AwsvpcConfiguration: {
Subnets: [""], // Dynamically take the default subnet
AssignPublicIp: 'ENABLED'
}
}
},
End: true
}
}
})
)
})
billowy-army-68599
05/11/2021, 3:00 PMimport * as awsx from "@pulumi/awsx";
const vpc = awsx.ec2.Vpc.getDefault();
colossal-camera-57941
05/11/2021, 3:06 PMawsx.ec2.Vpc.getDefault()
return the Vpc.
If i try to get the subnet with vpc.publicSubnetIds
or vpc.getSubnetsIds()
return is a promise with an array of pulumi.output and it can't be used inside pulumi.allbillowy-army-68599
05/11/2021, 3:12 PMpulumi.all
? you should be able to use apply()
on it as normalcolossal-camera-57941
05/11/2021, 4:00 PMbillowy-army-68599
05/11/2021, 4:02 PMcolossal-camera-57941
05/11/2021, 4:10 PMall<T1,T2,T3,T4,T5,T6,T7,T8>
billowy-army-68599
05/11/2021, 4:15 PMfaint-table-42725
05/11/2021, 5:29 PMall
? In the above, I only saw usage with the array-form with 2 elements in the array.colossal-camera-57941
05/11/2021, 7:27 PMconst testSfn = new aws.sfn.StateMachine('testSfn', {
roleArn: sfnRole.arn,
definition: pulumi
.all([
awsx.ec2.Vpc.getDefault().publicSubnetIds,
bucket1.bucket,
bucket2.bucket,
queue1.name,
fgTaskDefinition.taskDefinition.arn,
fgTaskDefinitionCluster.cluster.arn,
lambda1.arn,
lambda2Fun.arn,
lambda3Fun.arn,
lambda4Fun.arn,
lambda5Fun.arn,
lambda6Fun.arn
])
.apply(
([
subnets,
bucket1Name,
bucket2BucketName,
queue1Name,
fgTaskDefinitionArn,
fgClusterDefinitionArn,
lambda1Arn,
lambda2Arn,
lambda3Arn,
lambda4Arn,
lambda5Arn,
lambda6Arn
]) =>
JSON.stringify({
Comment: 'Test',
StartAt: 'lambda1',
States: {
lambda1: {
Type: 'Task',
Resource: lambda1Arn,
Next: 'lambda2'
},
lambda2: {
Type: 'Task',
Resource: lambda2Arn,
Next: 'lambda3'
},
lambda3: {
Type: 'Task',
Resource: lambda3Arn,
Next: 'lambda4'
},
lambda4: {
Type: 'Task',
Resource: lambda4Arn,
Next: 'lambda5'
},
lambda5: {
Type: 'Task',
Resource: lambda5Arn,
Next: 'lambda6'
},
lambda6: {
Type: 'Task',
Resource: lambda6Arn,
Next: 'fgTask'
},
fgTask: {
Type: 'Task',
Resource: 'arn:aws:states:::ecs:runTask.waitForTaskToken',
Parameters: {
LaunchType: 'FARGATE',
Cluster: fgClusterDefinitionArn,
TaskDefinition: fgTaskDefinitionArn,
Overrides: {
ContainerOverrides: [
{
Name: 'fgTask',
Environment: [
{
Name: 'TASK_TOKEN_ENV_VARIABLE',
'Value.$': '$$.Task.Token'
},
{
Name: 'BUCKET1',
Value: bucket1
},
{
Name: 'BUCKET2',
Value: bucket2
},
{ Name: 'QUEUE1', Value: queue1 },
]
}
]
},
NetworkConfiguration: {
AwsvpcConfiguration: {
Subnets: [subnets],
AssignPublicIp: 'ENABLED'
}
}
},
End: true
}
}
})
)
})
faint-table-42725
05/11/2021, 9:33 PMall
colossal-camera-57941
05/12/2021, 7:56 AMThe last overload gave the following error.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'OutputInstance<Output<string>[]>'.
Types of property 'apply' are incompatible.
Type '{ <U>(func: (t: string) => Promise<U>): Output<U>; <U>(func: (t: string) => OutputInstance<U>): Output<U>; <U>(func: (t: string) => U): Output<U>; }' is not assignable to type '{ <U>(func: (t: Output<string>[]) => Promise<U>): Output<U>; <U>(func: (t: Output<string>[]) => OutputInstance<U>): Output<U>; <U>(func: (t: Output<string>[]) => U): Output<U>; }'.
Types of parameters 'func' and 'func' are incompatible.
Types of parameters 't' and 't' are incompatible.
Type 'string' is not assignable to type 'Output<string>[]'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Type 'Output<string>' is not assignable to type 'Input<Output<string>[]> | undefined'.
Did you try to define 8 pulumi.output and 1 pulumi.output[] into the all
? like that:
definition: pulumi
.all([
awsx.ec2.Vpc.getDefault().publicSubnetIds, // pulumi.Output<string>[]
bucket1.bucket, // pulumi.Output<string>
bucket2.bucket, // pulumi.Output<string>
queue1.name, // pulumi.Output<string>
fgTaskDefinition.taskDefinition.arn, // pulumi.Output<string>
fgTaskDefinitionCluster.cluster.arn, // pulumi.Output<string>
lambda1.arn, // pulumi.Output<string>
lambda2Fun.arn, // pulumi.Output<string>
lambda3Fun.arn, // pulumi.Output<string>
lambda4Fun.arn, // pulumi.Output<string>
lambda5Fun.arn, // pulumi.Output<string>
lambda6Fun.arn // pulumi.Output<string>
])
.apply(
([
subnets,
bucket1Name,
bucket2BucketName,
queue1Name,
fgTaskDefinitionArn,
fgClusterDefinitionArn,
lambda1Arn,
lambda2Arn,
lambda3Arn,
lambda4Arn,
lambda5Arn,
lambda6Arn
])