Требуется помощь с типографским обещанием

Я новичок в машинописном тексте и nodejs, но мне нужно кое-что исправить в машинописном коде.

Мне нужно выполнить одноразовую задачу ECS с помощью Pulumi, и у меня есть документация о том, как запускать задачу из 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-Forgot-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

person Dmitriy Konstantinov    schedule 18.07.2020    source источник
comment
Просто чтобы понять, в чем может быть проблема. Вас устраивают обещания или они для вас новичок?   -  person Richard Dunn    schedule 18.07.2020
comment
Кроме того, это новое определение задачи или вы просто хотите запустить заранее определенную задачу ECS? Последний вариант более простой.   -  person Richard Dunn    schedule 18.07.2020
comment
@RichardDunn Я обновил описание, добавив больше деталей. Обещания - это новая концепция для меня, я добавил исключение, которое у меня есть, к деталям   -  person Dmitriy Konstantinov    schedule 18.07.2020
comment
Я думаю, вам нужно создать службу, прежде чем вы сможете запустить задачу, см. createService. Вы также можете создать службу отдельно и передайте определение задачи в качестве параметра. В любом случае, они оба должны быть определены и ссылаться друг на друга. Я создал контейнеры ECS только на серверах EC2, где вы можете запускать задачу без службы, но я думаю, что вам необходимо создать службу для Fargate.   -  person Richard Dunn    schedule 18.07.2020


Ответы (1)


Я не совсем уверен, где у вас проблема, но согласно этим документам вам нужно создать экземпляр EC2TaskDefinition, поэтому вам понадобится что-то вроде:

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

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

Очевидно, что отсутствуют некоторые параметры, но я даже не уверен, что вы создали экземпляр класса из своего вопроса, если это параметры, которые являются проблемой, прокомментируйте, и я могу попытаться немного расширить их.

person Richard Dunn    schedule 18.07.2020