Как интегрировать с помощью CloudFormation Api Gateway с пошаговыми функциями

Я создаю шаблон CloudFormation для платформы, над которой работаю. Мне нужно интегрировать Api Gateway и пошаговые функции, чтобы одна из моих пошаговых функций выполнялась вызовом метода Api Gateway.

Я не нахожу никакой документации по этому поводу. Я изо всех сил пытался найти Integration/Uri, который должен быть

arn:aws:apigateway:${region}:states:action/StartExecution

но теперь я не уверен, что писать в моих RequestTemplates. Я полагаю, что на самом деле я мог бы оставить его пустым, чтобы он действовал как прокси, но я был бы очень признателен, если бы вы могли дать мне какую-либо дополнительную информацию.

Спасибо




Ответы (1)


Очевидно, я не мог оставить RequestTemplates пустым, потому что он содержит информацию о том, какой StateMachine должен вызываться. Сам URI не содержит этой информации, а просто указывает на точку входа API конечного автомата.

Правильный путь указан на странице этой документации.

API конечного автомата предоставляют различные методы. Тот, кто выполняет пошаговую функцию, называется «StartExecution». К этой точке входа должно быть передано тело, сформированное таким образом.

{
"input": "string",
"name": "string",
"stateMachineArn": "string"
}

Итак, в Cloud Formation:

"Integration": {
    "Type": "AWS",
    "IntegrationHttpMethod": "POST",
    "Uri": {
        "Fn::Join": ["",
            ["arn:aws:apigateway:",
            {
            "Ref": "AWS::Region"
            },
            ":states:action/StartExecution"]]
        },
    "RequestTemplates": {
        "application/json": {
            "Fn::Sub": ["{\"input\": \"$util.escapeJavaScript($input.json('$'))\",\"stateMachineArn\": \"${arn}\"}",
            {
            "arn": {
                "Ref": "[StepMachineResourceName]"
                }
            }]
        }
    }
}
person balsick    schedule 17.03.2018
comment
Работает ли это также с преобразованием serverless cloudformation? - person Kwhitejr; 18.12.2018
comment
Кроме того, к какому типу/свойству ресурса относится конфигурация Integration? - person Kwhitejr; 18.12.2018
comment
@Kwhitejr, вы можете определить API в чванстве и перенести его в CFN. Интеграция осуществляется в разделе AWS::ApiGateway::Method. - person samtoddler; 03.01.2021