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 que você teste os endpoints da API localmente antes da implantação na AWS nuvem. Se você testar localmente primeiro, geralmente poderá reduzir os testes e o desenvolvimento na nuvem, o que pode ajudar a reduzir os custos. Além disso, a execução local facilita a depuração.

Para iniciar uma instância local do API Gateway que você pode usar para testar a funcionalidade de solicitação/resposta HTTP, use o comando. sam local start-api AWS SAMCLI 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 para APIs HTTP no Guia do desenvolvedor do API Gateway. Para obter mais informações sobre integrações de proxy com tipos de recursos Api, consulte Compreender a integração de proxy do Lambda do API Gateway no Guia do desenvolvedor do API 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 caminhos HTTP 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 arquivo JSON 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": "testBucket", "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": "testBucket", }, "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 arquivo JSON, como env.json.

Substituindo valores de variáveis de ambiente

Para substituir as variáveis de ambiente pelas definidas em seu arquivo JSON, use o argumento --env-vars com os comandos invoke ou start-api. 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 Aumente a eficiência usando camadas Lambda com AWS SAM.