AWS Lambda
Guia do desenvolvedor

Uso do AWS Lambda com o Amazon API Gateway

Você pode invocar funções do AWS Lambda por HTTPS. Você pode fazer isso definindo uma API REST e endpoint personalizados usando o Amazon API Gateway e, em seguida, mapeando métodos individuais, como GET e PUT, para funções do Lambda específicas. Como alternativa, você pode adicionar um método especial chamado ANY para mapear todos os métodos suportados (GET, POST, PATCH, DELETE) para sua função do Lambda. Quando você envia uma solicitação HTTPS ao endpoint da API, o serviço do Amazon API Gateway invoca a função do Lambda correspondente.

O Amazon API Gateway invoca a função de forma síncrona com um evento que contém detalhes sobre a solicitação HTTP que ele recebeu.

exemplo Evento de mensagem do Amazon API Gateway

{ "path": "/test/hello", "headers": { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Encoding": "gzip, deflate, lzma, sdch, br", "Accept-Language": "en-US,en;q=0.8", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Desktop-Viewer": "true", "CloudFront-Is-Mobile-Viewer": "false", "CloudFront-Is-SmartTV-Viewer": "false", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-Country": "US", "Host": "wt6mne2s9k.execute-api.us-west-2.amazonaws.com", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48", "Via": "1.1 fb7cca60f0ecd82ce07790c9c5eef16c.cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "nBsWBOrSHMgnaROZJK1wGCZ9PcRcSpq_oSXZNQwQ10OTZL4cimZo3g==", "X-Forwarded-For": "192.168.100.1, 192.168.1.1", "X-Forwarded-Port": "443", "X-Forwarded-Proto": "https" }, "pathParameters": { "proxy": "hello" }, "requestContext": { "accountId": "123456789012", "resourceId": "us4z18", "stage": "test", "requestId": "41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9", "identity": { "cognitoIdentityPoolId": "", "accountId": "", "cognitoIdentityId": "", "caller": "", "apiKey": "", "sourceIp": "192.168.100.1", "cognitoAuthenticationType": "", "cognitoAuthenticationProvider": "", "userArn": "", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48", "user": "" }, "resourcePath": "/{proxy+}", "httpMethod": "GET", "apiId": "wt6mne2s9k" }, "resource": "/{proxy+}", "httpMethod": "GET", "queryStringParameters": { "name": "me" }, "stageVariables": { "stageVarName": "stageVarValue" } }

O Amazon API Gateway também adiciona uma camada entre os usuários de seu aplicativo e sua lógica de aplicativo que permite o seguinte:

  • Capacidade de controlar usuários ou solicitações individuais.

  • Proteger contra ataques distribuídos de negação de serviço.

  • Fornecer uma camada de cache para armazenar em cache a resposta do sua função do Lambda.

Observe que há dois tipos de políticas de permissões com as quais você trabalha ao configurar a experiência completa:

  • Permissões para sua função do Lambda– Independentemente do que invoca uma função do Lambda, o AWS Lambda executa a função assumindo a função do IAM (função de execução) especificada quando a função do Lambda foi criada. O uso da política de permissões associada à essa função concede as permissões necessárias para sua função do Lambda. Por exemplo, se sua função do Lambda precisa ler um objeto, você concede permissões para as ações do Amazon S3 relevantes na política de permissões. Para obter mais informações, consulte Função de execução do AWS Lambda.

  • Permissão para o Amazon API Gateway invocar sua função do Lambda – O Amazon API Gateway não pode invocar a função do Lambda sem sua permissão. Você concede essa permissão através da política de permissão associada à função do Lambda.