Trabalhando com Amazon API Gateway
A função AWS Lambda pode ser invocada em HTTPSurl. Isso pode ser feito em GET, POST, PUT. Quando o url HTTPS é invocado, a função AWS Lambda também pode ser acionada e os dados passados para HTTPS usandoget/post pode ser disponibilizado dentro do AWS Lambda para ser usado para inserir no DynamoDB ou para enviar e-mail, etc.
Este capítulo discute em detalhes sobre vários processos envolvidos no trabalho com AWS lambda e API Gateway.
Processos envolvidos
A seguir estão os processos envolvidos no trabalho com AWS lambda e API Gateway -
- Criar papel IAM para permissão
- Criar função lambda da AWS
- Criar gateway de API
- Vincular função lambda ao gateway de API
- Passando dados para o gateway api
Um diagrama básico que explica o funcionamento do gateway de API e do AWS Lambda é fornecido aqui -
Esses processos são explicados em detalhes mais adiante neste capítulo, com capturas de tela relevantes.
Criar papel IAM para permissão
Nos serviços da Amazon, conforme mostrado abaixo, selecione IAM para criar funções a serem usadas pela função Lambda.
Vá para IAM e selecione Roles da seção do lado esquerdo, conforme mostrado abaixo -
Clique Create role para a função Lambda.
Selecione Lambda e clique em Permissionsno fundo. Selecione a permissão necessária para o API Gateway e Lambda.
Procure o gateway de API na pesquisa e ele listará todas as permissões relacionadas. Aqui, escolhemos o acesso total ao gateway de API, conforme mostrado abaixo -
Agora, procure o gateway de API e ele listará todas as permissões relacionadas. Aqui, escolhemos o acesso total ao gateway de API, conforme mostrado abaixo -
Você deve repetir o mesmo processo para as políticas também.
Quando terminar de escolher as políticas necessárias, clique em Reviewpara a próxima etapa. Insira o nome da função de acordo com sua escolha, conforme mostrado abaixo -
Ele exibe as políticas anexadas à função. CliqueCreate role e concluímos a criação da função e podemos prosseguir com a função lambda.
Criar função AWS Lambda
Vá para os serviços da AWS e clique em serviço lambda para criar uma função para conectá-lo ao gateway da API.
A tela da IU para a função Lambda é mostrada abaixo. CliqueCreate function botão para prosseguir com a criação da função Lambda.
Insira o nome da função e escolha a função existente que criamos acima.
Ele pisca uma mensagem que a função com o nome lambdawithapigateway foi criado com sucesso.
Observe que aqui vamos usar nodejstempo de execução para escrever o código. O código AWS comhelloworld mensagem é como mostrado abaixo -
O código AWS Lambda está presente em index.jsArquivo. A função chamada handler tem os parâmetros a saberevents, context e callback.
A função de retorno de chamada basicamente tem o erro e a mensagem de sucesso. Observe que aqui não temos nenhum código relacionado ao erro, então null é passado e a mensagem de sucesso éHelloWorld from lambda.
Por último, salve as alterações adicionadas e vamos prosseguir para adicionar a função Lambda ao gateway da API.
Criar gateway de API
Faça login em sua conta AWS e abra o API Gateway conforme mostrado abaixo -
Clique em API Gateway e isso o levará à tela onde um novo gateway API pode ser criado.
Clique Create API e adicione detalhes como mostrado abaixo -
Clique no Create APIbotão no lado direito da tela. Isso exibirá a API recém-criada no lado esquerdo da tela.
Clique no Actions menu suspenso para criar um novo recurso para a API.
Agora, crie um novo recurso conforme mostrado abaixo -
Introduzir o Resource Namecomo mostrado abaixo. Você verá o nome do recurso inserido na url criada ao final. CliqueCreate Resource e você verá na tela da seguinte maneira -
Adicionar GET/POSTmétodos para o recurso criado conforme mostrado abaixo. Selecione o método deActions suspenso.
Clique no GET método para adicionar o método à API.
O próximo passo é a integração que irá integrá-lo com a função Lambda. Agora adicione a função Lambda como mostrado abaixo -
Vincular Função Lambda ao Gateway API
Selecione a função lambda criada anteriormente.
Salve as alterações e você verá uma caixa de diálogo pedindo permissão, conforme mostrado abaixo -
Clique OKpara a permissão. Estes são os detalhes de execução entre a solicitação HTTP do gateway da API e a função Lambda -
Agora, vamos implantar as mudanças no gateway de API. Para isso, precisamos selecionar oDeploy API de Actions lista suspensa conforme mostrado abaixo -
Selecione Deploy API. Ele solicitará o estado de implantação. SelecioneNew Stage na lista suspensa do estágio de implantação e adicione o nome do estágio como Production.
Clique Deploy botão e ele irá redirecioná-lo para o url conforme mostrado abaixo -
Selecione os GETmétodo do lado esquerdo para obter o url. Abra a url em uma nova guia para ver a mensagem da função Lambda.
Este é um exemplo básico de trabalho com AWS Lambda e AWS API Gateway. No exemplo acima, codificamos a mensagem na função Lambda.
Agora, vamos pegar os detalhes da mensagem do API Gateway. Caso a chamada HTTPS deva ser chamada de um domínio diferente, por exemplo chamada AJAX para a API, precisamos habilitar o CORS para o gateway API criado.
Selecione o recurso criado para a API e clique em Actions dropdown -
Agora, Enable CORS irá abrir a seguinte tela -
Você pode usar alguns métodos para ATIVAR O CORS. Access-Control-Allow-Origin está marcado como *, o que significa que permitirá obter conteúdo do gateway de API de qualquer domínio.
Você também pode especificar o nome de domínio que deseja trabalhar com a API. CliqueEnable CORS and replace existing CORS headers botão e exibirá a mensagem de confirmação conforme mostrado abaixo -
Clique Yes, replace existing valuesbotão para ativá-lo. oEnable CORS a tela parece conforme mostrado abaixo -
Passando dados para o gateway de API
Abra a API criada no API Gateway displayhelloworld como mostrado abaixo -
Clique Integration Request para enviar dados conforme mostrado abaixo -
Escolher Body Mapping Templates e adicione o Content-Type para este exemplo como application/json. Clique no tipo de conteúdo adicionado e adicione os detalhes da seguinte forma -
Agora, adicione o modelo no formato JSON conforme mostrado abaixo -
Observe que tomamos a mensagem como parâmetro para obter dados do API Gateway e compartilhá-los com o AWS Lambda. A sintaxe para obter os detalhes é mostrada acima.
Agora, implemente a API para disponibilizar as alterações na URL do API Gateway. Para isso, precisamos alterar a função Lambda para exibir os dados com base na URL do API Gateway. O código para a função Lambda é fornecido abaixo. Observe que estamos pegando a mensagem do evento e passando para o callback.
exports.handler = (event, context, callback) => {
let message = event.message;
callback(null, message);
};
Agora, salve as alterações no Lambda e acesse a URL para ver as alterações. Observe a imagem abaixo -
Clique no URL conforme mostrado abaixo -
https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
Observe que aqui estamos passando a mensagem como string de consulta para a url GET. Então você pode observar a saída conforme mostrado abaixo -
Ele lê os detalhes enviados para a mensagem do URL e os exibe no navegador.