Conceitos básicos da AWS

Crie uma aplicação Web sem servidor

com o AWS Lambda, Amazon API Gateway, AWS Amplify, Amazon DynamoDB e Amazon Cognito

Crie uma aplicação Web sem servidor

Módulo 3: Serviço de backend sem servidor

Você usará o AWS Lambda e o Amazon DynamoDB para criar um processo de backend para processar solicitações de sua aplicação Web.

Visão geral

Neste módulo, você usará o AWS Lambda e o Amazon DynamoDB para criar um processo de backend para processar solicitações de sua aplicação Web. O aplicativo do navegador que você implantou no primeiro módulo permite que os usuários solicitem o envio de um unicórnio para um local escolhido por eles. Para processar essas solicitações, o JavaScript executado no navegador precisará invocar um serviço executado na nuvem.

Visão geral da arquitetura

Visão geral da arquitetura

Você implementará uma função do Lambda que será invocada sempre que um usuário solicitar um unicórnio. A função vai selecionar um unicórnio da frota, gravar a solicitação em uma tabela do DynamoDB e, então, responder ao aplicativo front-end com detalhes sobre o unicórnio que será despachado.

A função é invocada do navegador usando o Amazon API Gateway. Você implementará essa conexão no próximo módulo. Para este módulo, você apenas testará sua função em isolamento.

 Tempo para a conclusão

30 minutos

 Serviços usados

Implementação

  • Criar uma tabela do Amazon DynamoDB

    Use o console do Amazon DynamoDB para criar uma nova tabela do DynamoDB. Chame a sua tabela de Rides e dê a ela uma chave de partição chamada RideId com o tipo String. O nome da tabela e a chave de partição diferenciam letras maiúsculas de minúsculas. Certifique-se de usar os IDs exatos fornecidos. Use o padrão para todas as outras configurações.

    Após criar a tabela, anote o ARN para usar na próxima etapa.

    a. No Console de Gerenciamento da AWS, selecione Serviços e selecione DynamoDB em Bancos de dados.
    b. Selecione Criar tabela.
    c. Insira Rides como o Nome da tabela. Este campo diferencia letras maiúsculas de minúsculas.
    d. Insira RideId para a Chave de partição e selecione String para o tipo de chave. Este campo diferencia letras maiúsculas de minúsculas.
    e. Marque a caixa de seleção Usar configurações padrão e selecione Criar.
    f. Role até o final da seção Visão geral da nova tabela e anote o ARN. Ele será usado na próxima seção.

  • Crie uma função do IAM para a função do Lambda

    Cada função do Lambda tem uma função do IAM associada a ela. Essa função define com quais outros serviços da AWS a função tem permissão para interagir. Para os fins deste workshop, você precisará criar uma função do IAM que conceda permissão à função do Lambda para gravar logs no Amazon CloudWatch Logs e acesso para gravar itens na tabela do DynamoDB.

    Use o console do IAM para criar uma nova função. Nomeie-a como WildRydesLambda e selecione AWS Lambda para o tipo de função. Você precisará anexar políticas que concedam à sua função permissões para gravar no Amazon CloudWatch Logs e para inserir itens na tabela do DynamoDB.

    Anexe a política gerenciada chamada AWSLambdaBasicExecutionRole a essa função para conceder as permissões necessárias do CloudWatch Logs. Além disso, crie uma política em linha personalizada para sua função que permita a ação ddb:PutItem para a tabela criada na seção anterior.

    a. No Console de Gerenciamento da AWS, clique em Serviços e selecione IAM na seção Segurança, identidade e conformidade.

    b. Selecione Funções na barra de navegação à esquerda e, então, Criar nova função.

    c. Selecione Lambda como tipo de função no grupo de serviço da AWS e clique em Próximo: permissões.

    Observação: selecionar um tipo de função automaticamente cria uma política de confiança para a função que permite que os serviços da AWS assumam essa função em seu nome. Se estiver criando essa função a partir da CLI, do AWS CloudFormation ou de outro mecanismo, especifique diretamente uma política de confiança.

    d. Comece digitando AWSLambdaBasicExecutionRole na caixa de texto Filtro e marque a caixa ao lado da função.

    e. Selecione Próxima etapa.

    f. Insira WildRydesLambda para Nome da função.

    g. Selecione Criar função.

    h. Insira WildRydesLambda na caixa de filtros na página Funções e escolha a função que você acabou de criar.

    i. Na guia Permissões, selecione o link Adicionar política em linha no canto inferior direito para criar uma política em linha.

    j. Selecione Escolher um serviço.

    k. Comece digitando DynamoDB na caixa de busca com o rótulo Encontrar um serviço e selecione DynamoDB quando ele aparecer.

    l. Escolha Selecionar ações.

    m. Insira PutItem na caixa de busca com o rótulo Filtrar ações e marque a caixa ao lado de PutItem quando ela aparecer.

    n. Selecione a seção Recursos.

    o. Com a opção Específico  selecionada, selecione o link Adicionar ARN na seção tabela.

    p. Cole o ARN da tabela criada na seção anterior no campo Especificar ARN para a tabela e selecione Adicionar.

    q. Escolha Revisar política.

    r. Insira DynamoDBWriteAccess para o nome da política e selecione Criar política.

  • Selecionar uma função do lambda para processar solicitações

    O AWS Lambda executará seu código como resposta a eventos como uma solicitação HTTP. Nesta etapa, você criará a função básica que processará solicitações de API a partir do aplicativo web para despachar um unicórnio. No próximo módulo, você usará o Amazon API Gateway para criar uma API RESTful que vai expor um endpoint HTTP que pode ser invocado a partir dos navegadores dos usuários. Você se conectará a função do Lambda criada nesta etapa a essa API para criar um backend totalmente funcional para sua aplicação Web.

    Use o console do AWS Lambda para criar uma função do Lambda chamada RequestUnicorn, que processará as solicitações de API. Use a implantação de exemplo do requestUnicorn.js para o código da função. Basta copiar e colar daquele arquivo para o editor do console do AWS Lambda.

    Certifique-se de configurar sua função para usar a função do IAM WildRydesLambda criada na seção anterior.

    a. Selecione Serviços e selecione Lambda na seção Computação.
    b. Clique em Criar função
    c. Mantenha o cartão padrão Criar do zero selecionado.
    d. Insira RequestUnicorn no campo Nome.
    e. Selecione Node.js 6.10 para Tempo de execução.
    f. Certifique-se de que a opção Escolher uma função existente esteja selecionada na lista suspensa Função.
    g. Selecione WildRydesLambda na lista suspensa Função existente.
    h. Clique em Criar função.
    i. Role para baixo até a seção Código da função e substitua o código existente no editor de código index.js pelo conteúdo de requestUnicorn.js.
    j. Clique em “Salvar” no canto superior direito da página.

  • Validar sua implementação

    Para este módulo, você testará a função criada usando o console do AWS Lambda. No próximo módulo, você adicionará uma API REST com o API Gateway para poder invocar sua função a partir da aplicação baseada em navegador implantado no primeiro módulo.

    a. Na tela principal de edição da função, selecione Configurar evento de teste na lista suspensa Selecionar um evento de teste....
    b. Mantenha Criar evento de teste selecionado.
    c. Insira TestRequestEvent no campo Nome do evento
    d. Copie e cole o seguinte evento de teste no editor:

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }

    e. Clique em Criar.
    f. Na tela principal de edição de função, clique em Testar com TestRequestEvent selecionado na lista vertical.
    g. Role até a parte superior da página e expanda a seção Detalhes na seção Resultado da execução.
    h. Verifique se a execução foi bem-sucedida e se o resultado da função se parece com o seguinte:

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }

Este módulo foi útil?

Agradecemos a sua atenção
Gostaríamos de saber do que você gostou.
Fechar
Desculpe por ter desapontado
Encontrou algo desatualizado, confuso ou incorreto? Envie seus comentários para nos ajudar a melhorar este tutorial.
Fechar

Implantar uma API RESTful