Execute localmente o API Gateway com AWS SAM - AWS Serverless Application Model

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á.

Execute localmente o API Gateway com AWS SAM

A execução local do Amazon API Gateway pode ter vários benefícios. Por exemplo, executar o API Gateway localmente permite testar API endpoints localmente antes da implantação na AWS nuvem. Se você testar primeiro no local, muitas vezes poderá reduzir os testes e o desenvolvimento na nuvem, o que pode ajudar a reduzir os custos. Além disso, a execução no local facilita a depuração.

Para iniciar uma instância local do API Gateway que você pode usar para testar a funcionalidade de HTTP solicitação/resposta, use o sam local start-api AWS SAM CLI comando. Essa funcionalidade apresenta recarregamento a quente para que você possa desenvolver e iterar rapidamente suas funções.

nota

O recarregamento a quente ocorre quando somente os arquivos alterados são atualizados e o estado do aplicativo permanece o mesmo. Por outro lado, o recarregamento dinâmico ocorre quando todo o aplicativo é atualizado e o estado do aplicativo é perdido.

Para obter instruções sobre como usar o comando sam local start-api, consulte Introdução aos testes com sam local start-api.

Por padrão, AWS SAM usa integrações de AWS Lambda proxy e oferece suporte a ambos HttpApi e aos tipos de Api recursos. Para obter mais informações sobre integrações de proxy para tipos de HttpApi recursos, consulte Como trabalhar com integrações de AWS Lambda proxy HTTP APIs no Guia do desenvolvedor do API Gateway. Para obter mais informações sobre integrações de proxy com tipos de Api recursos, consulte Compreender a integração do proxy Lambda do API Gateway no Guia do desenvolvedor APIdo Gateway.

Exemplo:

$ sam local start-api

AWS SAM encontra automaticamente todas as funções em seu AWS SAM modelo que tenham fontes HttpApi de Api eventos definidas. Em seguida, ele monta a função nos HTTP caminhos definidos.

No exemplo de Api abaixo, a função Ratings pode montar ratings.py:handler() em /ratings para solicitações GET.

Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.9 Events: Api: Type: Api Properties: Path: /ratings Method: get

Este é um exemplo de resposta Api:

// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }

Se você modificar o código da sua função, execute o comando sam build para sam local start-api detectar suas alterações.

Arquivo de variável de ambiente

Para declarar localmente variáveis de ambiente que substituem os valores definidos em seus modelos, faça o seguinte:

  1. Crie um JSON arquivo que contenha as variáveis de ambiente a serem substituídas.

  2. Use o argumento --env-vars para substituir os valores definidos em seus modelos.

Declarar variáveis de ambiente

Para declarar variáveis de ambiente que se aplicam globalmente a todos os recursos, especifique um objeto Parameters como o seguinte:

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }

Para declarar variáveis de ambiente diferentes para cada recurso, especifique objetos para cada recurso da seguinte forma:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

Ao especificar objetos para cada recurso, você pode usar os seguintes identificadores, listados na ordem da maior para a menor precedência:

  1. logical_id

  2. function_id

  3. function_name

  4. Identificador de caminho completo

Você pode usar os dois métodos anteriores para declarar variáveis de ambiente juntos em um único arquivo. Ao fazer isso, as variáveis de ambiente que você forneceu para recursos específicos têm precedência sobre as variáveis de ambiente globais.

Salve suas variáveis de ambiente em um JSON arquivo, comoenv.json.

Substituindo valores de variáveis de ambiente

Para substituir as variáveis de ambiente pelas definidas em seu JSON arquivo, use o --env-vars argumento com os start-api comandos invoke ou. Por exemplo:

$ sam local start-api --env-vars env.json

Camadas

Se seu aplicativo incluir camadas, para obter informações sobre como depurar problemas com camadas em seu host local, consulte Aumentar a eficiência usando camadas do Lambda com o AWS SAM.