Crie um API gateway REST APIs com Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie um API gateway REST APIs com Step Functions

Aprenda a usar o Amazon API Gateway para criar, publicar, manter e monitorar HTTP e REST APIs com o Step Functions. Para integrar com o API Gateway, você define um Task estado em Step Functions que chama diretamente um API API Gateway HTTP ou REST endpoint do Gateway, sem escrever código ou depender de outra infraestrutura. Uma definição de Task estado inclui todas as informações necessárias para a API chamada. Também é possível selecionar métodos de autorização diferentes.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte Integração de produtos da e. Passando parâmetros para um serviço API em Step Functions

Principais recursos da integração do Optimized API Gateway
  • apigateway:invoke:não tem equivalente na integração AWS SDK de serviços. Em vez disso, o serviço Optimized API Gateway liga diretamente para o endpoint do API Gateway.

APISuporte ao recurso Gateway

A integração do Step Functions API Gateway suporta alguns, mas não todos os recursos do API Gateway. Para obter uma lista mais detalhada dos recursos compatíveis, consulte o seguinte:

  • Compatível com as HTTP API integrações Step Functions API API Gateway REST API e Gateway:

    • Autorizadores: IAM (usando Signature versão 4), No Auth, Lambda Authorizers (baseados em parâmetros de solicitação e baseados em tokens com cabeçalho personalizado)

    • APItipos: Regional

    • APIgerenciamento: nomes de API domínio do API gateway, API estágio, caminho, parâmetros de consulta, corpo da solicitação

  • Compatível com a HTTP API integração do Step Functions API Gateway. A REST API integração do Step Functions API Gateway, que fornece a opção otimizada para o Edge, não APIs é suportada.

  • Não suportado pela integração do Step Functions API Gateway:

    • Autorizadores: Amazon Cognito, Native Open ID ConnectOAuth/2.0, cabeçalho de autorização para autorizadores Lambda baseados em tokens

    • APItipos: Privado

    • APIgerenciamento: nomes de domínio personalizados

Para obter mais informações sobre o API Gateway HTTP e seu e RESTAPIs, consulte o seguinte.

Formato de solicitação

Quando você cria sua definição de Task estado, o Step Functions valida os parâmetros, cria o necessário URL para realizar a chamada e, em seguida, chama o. API A resposta inclui o código de HTTP status, os cabeçalhos e o corpo da resposta. O formato da solicitação tem parâmetros obrigatórios e opcionais.

Parâmetros de solicitação obrigatórios

  • ApiEndpoint

    • Tipo: String

    • O nome do host de um API GatewayURL. O formato é <API ID>.execute-api.<region>.amazonaws.com.

      O API ID só pode conter uma combinação dos seguintes caracteres alfanuméricos: 0123456789abcdefghijklmnopqrstuvwxyz

  • Method

    • Tipo: Enum

    • O HTTP método, que deve ser um dos seguintes:

      • GET

      • POST

      • PUT

      • DELETE

      • PATCH

      • HEAD

      • OPTIONS

Parâmetros de solicitação opcionais

  • Headers

    • Tipo: JSON

    • HTTPcabeçalhos permitem uma lista de valores associados à mesma chave.

  • Stage

    • Tipo: String

    • O nome do estágio em que o API é implantado no API Gateway. É opcional para qualquer pessoa HTTP API que use o $default palco.

  • Path

    • Tipo: String

    • Parâmetros de caminho que são anexados após o API endpoint.

  • QueryParameters

    • Tipo: JSON

    • As strings de consulta só permitem uma lista de valores associados à mesma chave.

  • RequestBody

    • Tipo: JSON ou String

    • O corpo da HTTP solicitação. Seu tipo pode ser um JSON objeto ouString. RequestBodysó é compatível com os PUT HTTP métodos PATCHPOST, e.

  • AllowNullValues

    • Tipo: BOOLEAN: valor padrão: false

    • Com a configuração padrão, quaisquer valores nulos no estado de entrada da solicitação não serão enviados para o seuAPI. No exemplo a seguir, o campo category não será incluído na solicitação, a menos que AllowNullValues esteja definido como true na definição da máquina de estado.

      { "NewPet": { "type": "turtle", "price": 123, "category": null } }
      nota

      Por padrão, os campos com valores nulos no estado de entrada da solicitação não serão enviados para o seuAPI. Você pode forçar o envio de valores nulos para você API AllowNullValues configurando como true na definição da sua máquina de estado.

  • AuthType

    • Tipo: JSON

    • O método de autenticação. O método padrão é NO_AUTH. Os valores permitidos são:

      • NO_AUTH

      • IAM_ROLE

      • RESOURCE_POLICY

      Consulte Autenticação e autorização para obter mais informações.

nota

Por questões de segurança, as seguintes chaves de HTTP cabeçalho não são permitidas atualmente:

  • Qualquer coisa prefixada com X-Forwarded, X-Amz ou X-Amzn.

  • Authorization

  • Connection

  • Content-md5

  • Expect

  • Host

  • Max-Forwards

  • Proxy-Authenticate

  • Server

  • TE

  • Transfer-Encoding

  • Trailer

  • Upgrade

  • Via

  • Www-Authenticate

O exemplo de código a seguir mostra como invocar o API Gateway usando Step Functions.

{ "Type": "Task", "Resource":"arn:aws:states:::apigateway:invoke", "Parameters": { "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com", "Method": "GET", "Headers": { "key": ["value1", "value2"] }, "Stage": "prod", "Path": "bills", "QueryParameters": { "billId": ["123456"] }, "RequestBody": {}, "AuthType": "NO_AUTH" } }

Autenticação e autorização

Você pode usar os seguintes métodos de autenticação:

  • Sem autorização: ligue API diretamente para o site sem nenhum método de autorização.

  • IAMrole: Com esse método, o Step Functions assume a função de máquina de estado, assina a solicitação com Signature Version 4 (SigV4) e, em seguida, chama o. API

  • Política de recursos: Step Functions autentica a solicitação e, em seguida, chama o. API Você deve anexar uma política de recursos à API que especifique o seguinte:

    1. A máquina de estado que invocará o API Gateway.

      Importante

      Você deve especificar a máquina de estado para limitar o acesso a ela. Caso contrário, qualquer máquina de estado que autentique sua solicitação de API Gateway com a autenticação da política de recursos na sua API terá acesso concedido.

    2. That Step Functions é o serviço que chama API Gateway:"Service": "states.amazonaws.com".

    3. O recurso que você deseja acessar, incluindo:

      • O region.

      • O account-id na região especificada.

      • O api-id.

      • O stage-name.

      • O HTTP-VERB (método).

      • O resource-path-specifier.

    Para obter um exemplo de política de recursos, consulte IAMas políticas de Step Functions e API Gateway.

    Para obter mais informações sobre o formato do recurso, consulte Formato do recurso de permissões para execução API no API Gateway no Guia do desenvolvedor do API Gateway.

    nota

    As políticas de recursos são suportadas somente para REST API o.

Padrões de integração de serviço

A integração do API Gateway oferece suporte a dois padrões de integração de serviços:

  • Resposta de solicitação, que é o padrão de integração padrão. Ele permite que o Step Functions avance para a próxima etapa imediatamente após receber uma HTTP resposta.

  • Aguardar um retorno de chamada com um token de tarefa (.waitForTaskToken), que espera até que um token de tarefa seja retornado com uma carga útil. Para usar o .waitForTaskToken padrão, anexe. waitForTaskToken no final do campo Recurso da definição de sua tarefa, conforme mostrado no exemplo a seguir:

    { "Type": "Task", "Resource":"arn:aws:states:::apigateway:invoke.waitForTaskToken", "Parameters": { "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com", "Method": "POST", "Headers": { "TaskToken.$": "States.Array($$.Task.Token)" }, "Stage": "prod", "Path": "bills/add", "QueryParameters": {}, "RequestBody": { "billId": "my-new-bill" }, "AuthType": "IAM_ROLE" } }

Formato de saída

Os seguintes parâmetros de saída são fornecidos:

Name Tipo Description
ResponseBody JSON ou String O corpo da resposta da API chamada.
Headers JSON Os cabeçalhos de resposta.
StatusCode Integer O código de HTTP status da resposta.
StatusText String O texto do status da resposta.

Um exemplo de resposta:

{ "ResponseBody": { "myBills": [] }, "Headers": { "key": ["value1", "value2"] }, "StatusCode": 200, "StatusText": "OK" }

Gerenciamento de erros

Quando ocorre um erro, error e cause são retornados da seguinte forma:

  • Se o código de HTTP status estiver disponível, o erro será retornado no formatoApiGateway.<HTTP Status Code>.

  • Se o código de HTTP status não estiver disponível, o erro será retornado no formatoApiGateway.<Exception>.

Em ambos os casos, cause é retornado como uma string.

O seguinte exemplo mostra uma resposta em que ocorreu um erro:

{ "error": "ApiGateway.403", "cause": "{\"message\":\"Missing Authentication Token\"}" }
nota

Um código de status 2XX indica sucesso e nenhum erro será retornado. Todos os outros códigos de status ou exceções lançadas resultarão em um erro.

IAMpolíticas para chamadas para o Amazon API Gateway

Os modelos de exemplo a seguir mostram como AWS Step Functions gera IAM políticas com base nos recursos em sua definição de máquina de estado. Para ter mais informações, consulte Como o Step Functions gera políticas do IAM para serviços integrados e Descobrir padrões de integração de serviços no Step Functions.

Recursos:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:[[region]]:[[accountId]]:*" ] } ] }

O exemplo de código a seguir mostra uma política de recursos para chamar o API Gateway.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "states.amazonaws.com" }, "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:<region>:<account-id>:<api-id>/<stage-name>/<HTTP-VERB>/<resource-path-specifier>", "Condition": { "StringEquals": { "aws:SourceArn": [ "<SourceStateMachineArn>" ] } } } ] }