В этой статье основное внимание будет уделено запуску пошаговой функции AWS с помощью API Gateway.
Для начала выполните шаги, которые я создал в статье здесь https://aws.plainenglish.io/aws-typescript-cdk-and-step-functions-bbc173333aed, где мы настраиваем пошаговые функции с помощью AWS Typescript CDK . Опять же, этот код не готов к работе и доступен только как краткое руководство.
Примечание. Не выполняйте шаг 13 в предыдущем руководстве, чтобы разрушить инфраструктуру, как это требуется для этого руководства
Шаг 1. Установите необходимые конструкции
Чтобы вызвать пошаговую функцию с помощью шлюза API, нам необходимо установить конструкцию шлюза api.
Нам также нужно создать роль, поэтому требуется конструкция iam
import * as apigateway from '@aws-cdk/aws-apigateway'; import * as iam from '@aws-cdk/aws-iam';
Шаг 2. Настройте роль для API Gateway
Настроив роль учетных данных и подключив встроенную политику, которая разрешает StartExection для stateMachineARN, он позволяет шлюзу API запускать лямбда-выражение.
// Grab the state machine arn
const stateMachineArn = this.Machine.stateMachineArn;
// Grab the role for the api gateway
const credentialsRole = new iam.Role(this, "getRole", {
assumedBy: new iam.ServicePrincipal("apigateway.amazonaws.com"),
});
// Attach an inline policy for the statemachine arn to the credentials role
credentialsRole.attachInlinePolicy(
new iam.Policy(this, "getPolicy", {
statements: [
new iam.PolicyStatement({
actions: ["states:StartExecution"],
effect: iam.Effect.ALLOW,
resources: [stateMachineArn],
}),
],
})
);
Шаг 3. Настройте API-шлюз
Следующая строка создаст шлюз API как часть нашей инфраструктуры.
// Create an api gateway rest api const api = new apigateway.RestApi(this, “endpoint”);
Следующие строки настраивают API-шлюз с демонстрационным шаблоном запроса для целей тестирования.
// Create a method for invoking the step function via the api gateway
api.root.addMethod(“GET”,
new apigateway.AwsIntegration({
service: “states”,
action: “StartExecution”,
integrationHttpMethod: “POST”,
options: {
credentialsRole,
integrationResponses: [
{
statusCode: “200”,
responseTemplates: {
“application/json”: `{“done”: true}`,
},
},
],
requestTemplates: {
“application/json”: `{
“input”: “{\\”maxNumber\\”:\\”15\\”, \\”numberToCheck\\”:\\”7\\”}”, “stateMachineArn”: “${stateMachineArn}”
}`,
},
},
}),
{
methodResponses: [{ statusCode: “200” }],
}
);
Шаг 4. Разверните обновленную среду
Выполните следующую команду, чтобы развернуть изменения в своей учетной записи AWS.
cdk deploy
Когда будет предложено принять изменения - введите y
Сгенерированный вывод предоставит конечную точку для доступа к API, как показано ниже.
Outputs: CdkStatemachineStack.endpointEndpoint5E1E9134 = https://63n2cskxb1.execute-api.us-east-1.amazonaws.com/prod/
Шаг 5. Протестируйте интеграцию шлюза API и пошаговой функции
Откройте свой любимый браузер и перейдите к конечной точке, которая была выведена на предыдущем шаге.
Вы должны увидеть в своем браузере результаты, подобные приведенным ниже

В консоли Step Function на AWS вы должны увидеть вывод, аналогичный приведенному ниже, при выполнении

Наконец, если вы нажмете на выполнение, инспектор графов должен быть похож на следующий

Шаг 6. Удалите ресурсы AWS
Теперь, когда это руководство завершено, вы можете удалить ресурсы, чтобы поддерживать порядок в своей учетной записи AWS.
Чтобы удалить все сгенерированные ресурсы AWS из вашей учетной записи, выполните следующую команду
cdk destroy
Когда будет предложено подтвердить, что вы хотите удалить ресурсы, введите y
Заключение
В этом руководстве показано, как запустить функцию AWS Step с помощью API Gateway в AWS. Теперь вы можете запускать рабочий процесс с помощью запроса GET из вашего приложения или из любого другого места, где это может иметь смысл.
Этот код не готов к работе и представляет собой всего лишь вводное руководство.
Если вы хотите просмотреть код этого руководства, он доступен здесь:
Больше контента на plainenglish.io