打字稿承诺需要帮助

时间:2020-07-18 11:41:18

标签: typescript promise amazon-ecs pulumi

我是打字稿和Node.js的新手,但需要对打字稿代码进行一些修复。

我需要使用Pulumi运行一次ECS一次性任务,并且我有关于如何从taskDefinition运行任务的文档 https://www.pulumi.com/docs/reference/pkg/nodejs/pulumi/awsx/ecs/#EC2TaskDefinition-run

但是如果没有文字描述,我无法理解应该如何称呼此run动作

public run: (params: RunTaskRequest) => Promise<awssdk.ECS.Types.RunTaskResponse>;

有一个关于如何使用api-gateway运行此示例的示例,但我尚不清楚如何将此run称为独立操作https://www.pulumi.com/docs/guides/crosswalk/aws/ecs/#running-fire-and-forget-tasks

对此有任何建议!

UPD: 我拥有的更详细的代码块:

const kafkaTask = new awsx.ecs.FargateTaskDefinition("kafka1-task-efs", {
    vpc: vpcSelected,
    containers: {
        kafkaTask: {
            image: imageKafkaTaskEfs,
            logConfiguration: {
                logDriver: "awslogs",
                options: {
                    "awslogs-group": "ecs-kafka1",
                    "awslogs-region": "eu-central-1",
                    "awslogs-stream-prefix": "kafka1-task-efs"
                }
            },
            mountPoints: [
                {containerPath: "/mnt/kafka/data", sourceVolume: "kafka-data"},
                {containerPath: "/mnt/kafka/secrets", sourceVolume: "kafka-secrets"},
                {containerPath: "/mnt/zookeeper/log", sourceVolume: "zookeeper-log"},
                {containerPath: "/mnt/zookeeper/data", sourceVolume: "zookeeper-data"}
            ]
        }
    },
    volumes: [
        {name: "kafka-data", efsVolumeConfiguration: {rootDirectory: "/kafka-data", fileSystemId: fsKafka.id}},
        {
            name: "kafka-secrets",
            efsVolumeConfiguration: {rootDirectory: "/kafka-secrets", fileSystemId: fsKafka.id}
        },
        {
            name: "zookeeper-log",
            efsVolumeConfiguration: {rootDirectory: "/zookeeper-log", fileSystemId: fsKafka.id}
        },
        {
            name: "zookeeper-data",
            efsVolumeConfiguration: {rootDirectory: "/zookeeper-data", fileSystemId: fsKafka.id}
        }
    ]
});

kafkaTask.run({ cluster }).then(res => console.log(res)); 

UPD2:这是我最终遇到的错误:,但不确定它是否有用:

error: Running program '/pulumi/main-infrastructure' failed with an unhandled exception:
Error: Cannot call '.get' during update or preview.
To manipulate the value of this Output, use '.apply' instead.
    at Proxy.get (/pulumi/node_modules/@pulumi/pulumi/output.js:172:15)
    at FargateTaskDefinition.run (/pulumi/node_modules/@pulumi/ecs/taskDefinition.ts:226:39)
    at /pulumi/main-infrastructure/index.ts:127:15
    at Generator.next (<anonymous>)
    at fulfilled (/pulumi/main-infrastructure/index.ts:5:58)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
error: update failed

1 个答案:

答案 0 :(得分:0)

我不太确定问题出在哪里,但是根据这些文档,您需要创建EC2TaskDefinition的实例,因此您将需要以下内容:

const task_def = new EC2TaskDefinition('', {}, {})

task_def.run({})
.then(res => console.log(res))

显然缺少一些参数,但是我什至不确定您是否从问题中创建了一个类实例,如果是问题所在,那么请进行注释,我可以尝试对它们进行一些扩展。