Tutorial: Criação e gerenciamento de um projeto com tecnologia sem servidor no AWS CodeStar - AWS CodeStar

Em 31 de julho de 2024, a Amazon Web Services (AWS) interromperá o suporte para criação e visualização AWS CodeStar de projetos. Depois de 31 de julho de 2024, você não poderá mais acessar o AWS CodeStar console nem criar novos projetos. No entanto, os AWS recursos criados por AWS CodeStar, incluindo seus repositórios de origem, pipelines e compilações, não serão afetados por essa alteração e continuarão funcionando. AWS CodeStar As conexões e AWS CodeStar notificações não serão afetadas por essa descontinuação.

 

Se você deseja monitorar o trabalho, desenvolver código e criar, testar e implantar seus aplicativos, a Amazon CodeCatalyst fornece um processo de introdução simplificado e funcionalidades adicionais para gerenciar seus projetos de software. Saiba mais sobre a funcionalidade e os preços da Amazon CodeCatalyst.

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

Tutorial: Criação e gerenciamento de um projeto com tecnologia sem servidor no AWS CodeStar

Nesse tutorial, você usa o AWS CodeStar para criar um projeto que use o AWS Serverless Application Model (AWS SAM) para criar e gerenciar recursos da AWS para um serviço da Web hospedado no AWS Lambda.

O AWS CodeStar usa o AWS SAM, que conta com o AWS CloudFormation, para oferecer uma maneira simplificada de criar e gerenciar os recursos suportados da AWS, incluindo as APIs do Amazon API Gateway, as funções do AWS Lambda e as tabelas do Amazon DynamoDB. (Esse projeto não usa nenhuma tabela do Amazon DynamoDB.)

Para obter mais informações, consulte Modelo de aplicação de tecnologia sem servidor do AWS (AWS SAM) no GitHub.

Pré-requisito: concluir as etapas em Configuração AWS CodeStar.

nota

A conta da AWS pode ser cobrada pelos custos relacionados a este tutorial, inclusive os custos dos serviços da AWS usados pelo AWS CodeStar. Para obter mais informações, consulte Preços do AWS CodeStar.

Visão geral

Neste tutorial, você:

  1. Usa o AWS CodeStar para criar um projeto que use o AWS SAM para criar e implantar um serviço Web baseado em Python. Esse serviço da Web está hospedado no AWS Lambda e pode ser acessado por meio do Amazon API Gateway.

  2. Explore os recursos principais do projeto, que incluem:

    • O repositório do AWS CodeCommit no qual o código-fonte do projeto está armazenado. Esse código-fonte inclui a lógica do serviço Web e define os recursos relacionados da AWS.

    • O pipeline do AWS CodePipeline que automatiza a criação do código-fonte. Esse pipeline usa o AWS SAM para criar e implantar uma função no AWS Lambda, criar uma API relacionada no Amazon API Gateway e conectar a API à função.

    • A função que é implantada no AWS Lambda.

    • A API criada no Amazon API Gateway.

  3. Teste o serviço Web para confirmar que o AWS CodeStar criou e implantou o serviço Web conforme o esperado.

  4. Configure sua estação de trabalho local para trabalhar com o código-fonte do projeto.

  5. Altere o código-fonte do projeto usando sua estação de trabalho local. Quando você adiciona uma função ao projeto e, em seguida, envia as suas alterações para o código-fonte, o AWS CodeStar recompila e reimplanta o serviço da web.

  6. Teste o serviço da web novamente para confirmar que o AWS CodeStar o recriou e o reimplantou conforme o esperado.

  7. Escreva um teste de unidade usando sua estação de trabalho local para substituir alguns de seus testes manuais por um teste automatizado. Quando você envia o teste de unidade, o AWS CodeStar recompila e reimplanta o serviço da web e executa o teste de unidade.

  8. Visualize os resultados dos testes de unidade.

  9. Limpe o projeto. Essa etapa ajuda a evitar cobranças da conta da AWS os custos relacionados a esse tutorial.

Etapa 1: Criar o projeto

Nesta etapa, use o console do AWS CodeStar para criar um projeto.

  1. Faça login no AWS Management Console e então abra o console do AWS CodeStar em https://console.aws.amazon.com/codestar/.

    nota

    Você deve fazer login no AWS Management Console usando as credenciais associadas ao usuário do IAM criado ou identificado em Configuração AWS CodeStar. Esse usuário deve ter a política gerenciada AWSCodeStarFullAccess anexada.

  2. Escolha a região da AWS onde você deseja criar o projeto e seus recursos.

    Para obter informações sobre as regiões da AWS onde o AWS CodeStar está disponível, consulte Regiões e endpoints na Referência geral da AWS.

  3. Escolha Create project (Criar projeto).

  4. Na página Choose a project template (Escolher um modelo de projeto):

    • Em Tipo de aplicação, selecione Serviço de web.

    • Em Linguagem de programação, selecione Python.

    • Em Serviço do AWS, selecione AWS Lambda.

  5. Escolha a caixa que contém suas seleções. Escolha Next (Próximo).

  6. Em Project name (Nome do projeto), digite o nome do projeto (por exemplo, My SAM Project). Se você usar um nome diferente do exemplo, certifique-se de usá-lo ao longo de todo este tutorial.

    Em Project ID (ID do projeto), o AWS CodeStar escolhe um identificador relacionado para esse projeto (por exemplo, my-sam-project). Se vir outro ID de projeto, certifique-se de usá-lo durante todo este tutorial.

    Deixe AWS CodeCommit selecionado e não altere o valor Repository name (Nome do repositório).

  7. Escolha Next (Próximo).

  8. Revise suas configurações e escolha Criar projeto.

    Se essa for a primeira vez que você usa o AWS CodeStar nessa região do AWS, em Nome de exibição e E-mail, digite o nome de exibição e o endereço de e-mail que o AWS CodeStar deverá usar para o usuário do IAM. Escolha Next (Próximo).

  9. Aguarde enquanto o AWS CodeStar cria o projeto. Isso pode demorar vários minutos. Não continue até ver o banner provisionado do projeto ao atualizar.

Etapa 2: Explorar os recursos do projeto

Nesta etapa, você explora quatro dos recursos da AWS para entender como o projeto funciona:

  • O repositório do AWS CodeCommit no qual o código-fonte do projeto está armazenado. O AWS CodeStar dá ao repositório o nome my-sam-project, em que my-sam-project é o nome do projeto.

  • O pipeline do AWS CodePipeline que usa o CodeBuild e o AWS SAM para automatizar a criação e a implantação da função do Lambda do serviço da web e a API no API Gateway. O AWS CodeStar dá ao pipeline o nome my-sam-project--Pipeline, onde my-sam-project é o ID do projeto.

  • A função do Lambda que contém a lógica do serviço da web. O AWS CodeStar dá à função o nome awscodestar-my-sam-project-lambda-HelloWorld-RANDOM_ID, onde:

    • my-sam-project é o ID do projeto.

    • HelloWorld é o ID da função conforme especificado no arquivo template.yaml no repositório do AWS CodeCommit. Você explorará esse arquivo mais tarde.

    • RANDOM_ID é um ID aleatório que o SAM da AWS atribui à função para ajudar a garantir a exclusividade.

  • A API no API Gateway que facilita chamar a função do Lambda. O AWS CodeStar dá à API o nome awscodestar-my-sam-project--lambda, onde my-sam-project é o ID do projeto.

Para explorar o repositório de código-fonte no CodeCommit
  1. Com seu projeto aberto no console do AWS CodeStar, na barra de navegação, selecione Repositório.

  2. Escolha o link para seu repositório do CodeCommit (My-SAM-Project) em Detalhes do repositório.

  3. No console do CodeCommit, na página Código, os arquivos de código-fonte para o projeto são exibidos:

    • buildspec.yml, que o CodePipeline instrui o CodeBuild a ser usado durante a fase de construção, para empacotar o serviço da web usando o AWS SAM.

    • index.py, que contém a lógica para a função do Lambda Essa função simplesmente gera a string Hello World e um carimbo de data e hora no formato ISO.

    • README.md, que contém informações gerais sobre o repositório.

    • template-configuration.json, que contém o ARN do projeto com espaços reservados usados para marcar recursos com o ID do projeto.

    • template.yml, que o AWS SAM usa para empacotar o serviço da web e criar a API no API Gateway.

    Os arquivos de código-fonte do projeto no CodeCommit

    Para visualizar o conteúdo de um arquivo, escolha-o na lista.

    Para obter mais informações sobre o uso do console CodeCommit, consulte o Guia do usuário do AWS CodeCommit.

Para explorar o pipeline no CodePipeline
  1. Para exibir informações sobre o pipeline, com seu projeto aberto no console do AWS CodeStar na barra de navegação lateral, selecione Pipeline e verá que o pipeline contém:

    • Uma fase Origem para obter o código-fonte do CodeCommit.

    • O estágio Criar para compilar o código-fonte com o CodeBuild.

    • Uma fase Deploy (Implantar) para implantar o código-fonte e os recursos da AWS com o AWS SAM.

  2. Para ver mais informações sobre o pipeline, em Detalhes do pipeline, escolha seu pipeline para abri-lo no console do CodePipeline.

Para obter informações sobre o uso do console CodePipeline, consulte o Guia do usuário do AWS CodePipeline.

Para explorar a atividade do projeto e os recursos de serviço do AWS na página Visão geral
  1. Abra o projeto no console do AWS CodeStar e, na barra de navegação, escolha Visão geral.

  2. Analise as listas Atividade do projeto e Recursos do projeto.

Para explorar a função no Lambda
  1. Com seu projeto aberto no console do AWS CodeStar, na barra de navegação lateral, selecione Visão geral.

  2. Em Recursos do projeto, na coluna ARN, escolha o link da função do Lambda.

    O código da função é exibido no console do Lambda.

Para obter informações sobre o uso do console Lambda, consulte o Manual do desenvolvedor do AWS Lambda.

Para explorar o API no API Gateway
  1. Com seu projeto aberto no console do AWS CodeStar, na barra de navegação lateral, selecione Visão geral.

  2. Em Recursos do projeto, na coluna ARN, escolha o link da API do Amazon API Gateway.

    Os recursos da API são exibidos no console do API Gateway.

Para obter informações sobre o uso do console API Gateway, consulte o Guia do desenvolvedor.

Etapa 3: Testar o serviço da web

Nesta etapa, você testará o serviço da web que o AWS CodeStar acabou de criar e implantar.

  1. Com o seu projeto ainda aberto da etapa anterior, na barra de navegação, selecione Pipeline.

  2. No bloco Implantação contínua, verifique se Bem-sucedido é exibido para as fases Origem, Criar e Implantar antes de continuar. Isso pode demorar vários minutos.

    nota

    Se Failed (Com falha) for exibido para qualquer uma das fases, consulte o seguinte para obter ajuda na solução do problema:

  3. Escolha Novo aplicativo

Na nova guia que é aberta no navegador da web, o serviço da web exibe a seguinte saída de resposta:

{"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}

Etapa 4: Configurar sua estação de trabalho local para editar o código do projeto

Nesta etapa, você configura a estação de trabalho local para editar o código-fonte no projeto do AWS CodeStar. Sua estação de trabalho local pode ser um computador físico ou virtual que execute macOS, Windows ou Linux.

  1. Com o projeto ainda aberto da etapa anterior:

    • Na barra de navegação, escolha IDE e, em seguida, expanda Acesse o código do seu projeto.

    • Escolha Exibir instruções abaixo da interface da linha de comando.

      Se você tiver o Visual Studio ou o Eclipse instalado, escolha Exibir as instruções sob Visual Studio, ou Eclipse, siga as instruções e, em seguida, vá para Etapa 5: Adicionar lógica ao serviço da web.

  2. Siga as instruções para concluir as tarefas a seguir:

    1. Configure o Git na sua estação de trabalho local.

    2. Use o console do IAM para gerar credenciais do Git para o seu usuário do IAM.

    3. Clone o repositório do CodeCommit do projeto em sua estação de trabalho local.

  3. No painel de navegação esquerdo, escolha Projeto para retornar à visão geral do projeto.

Etapa 5: Adicionar lógica ao serviço da web

Nesta etapa, você usa a estação de trabalho local para adicionar lógica ao serviço da web. Especificamente, você adiciona uma função do Lambda e, em seguida, a conecta à API no API Gateway.

  1. Na estação de trabalho local, vá até o diretório que contém o repositório de código-fonte clonado.

  2. Nesse diretório, crie um arquivo chamado hello.py. Adicione o seguinte código e salve-o em seguida:

    import json def handler(event, context): data = { 'output': 'Hello ' + event["pathParameters"]["name"] } return { 'statusCode': 200, 'body': json.dumps(data), 'headers': {'Content-Type': 'application/json'} }

    O código anterior gera a string Hello e a string que o chamador enviar para a função

  3. No mesmo diretório, abra o arquivo template.yml. Adicione o seguinte código ao final do arquivo e salve-o em seguida:

    Hello: Type: AWS::Serverless::Function Properties: FunctionName: !Sub 'awscodestar-${ProjectId}-lambda-Hello' Handler: hello.handler Runtime: python3.7 Role: Fn::GetAtt: - LambdaExecutionRole - Arn Events: GetEvent: Type: Api Properties: Path: /hello/{name} Method: get

    O AWS SAM usa esse código anterior para criar uma função no Lambda, adicionar um novo método e o caminho à API no API Gateway e, em seguida, conectar esse método e o caminho à nova função.

    nota

    O recuo do código anterior é importante. Se você não adicionar o código exatamente como for mostrado, o projeto poderá não ser criado corretamente.

  4. Execute git add . para adicionar as alterações do arquivo à área de preparação do repositório clonado. Não se esqueça do ponto (.), que adiciona todos os arquivos alterados.

    nota

    Se você estiver usando o Visual Studio ou o Eclipse em vez da linha de comando, as instruções para o uso do Git podem ser diferentes. Consulte a documentação do Eclipse ou do Visual Studio.

  5. Executar git commit -m "Added hello.py and updated template.yaml." para confirmar os arquivos preparados no repositório clonado

  6. Execute git push para enviar a confirmação para o repositório remoto por push.

    nota

    Você pode ser solicitado a fornecer as credenciais de login geradas anteriormente. Para que não sejam solicitados toda vez que você interagir com o repositório remoto, considere instalar e configurar um gerenciador de credenciais do Git. Por exemplo, no macOS ou no Linux, você pode executar git config credential.helper 'cache --timeout 900' no terminal para serem solicitados a cada 15 minutos. Ou você pode executar git config credential.helper 'store --file ~/.git-credentials' para nunca serem solicitados novamente. O Git armazena suas credenciais em texto nítido em um arquivo sem formatação em seu diretório inicial. Para obter mais informações, consulte Ferramentas do GiT – armazenamento de credenciais no site do Git.

Depois que o AWS CodeStar detectar o push, ele instruirá o CodePipeline a usar o CodeBuild e o AWS SAM para reconstruir e reimplantar o serviço da web. Você pode acompanhar o progresso da implantação na página Pipeline.

O AWS SAM fornece à nova função o nome awscodestar-my-sam-project-lambda-Hello-RANDOM_ID, em que:

  • my-sam-project é o ID do projeto.

  • Hello é o ID da função conforme especificado no arquivo template.yaml.

  • RANDOM_ID é um ID aleatório que o AWS SAM atribui à função para fins de exclusividade.

Etapa 6: Testar o serviço da web aprimorado

Nesta etapa, você testará o serviço da web aprimorado que o AWS CodeStar criou e implantou com base na lógica que você adicionou na etapa anterior.

  1. Com seu projeto ainda aberto no console do AWS CodeStar, na barra de navegação, selecione Pipeline.

  2. Assegure-se de ter executado o pipeline novamente e de que Bem-sucedido apareça nos estágios de Origem, Criação, e Implantação antes de continuar. Isso pode demorar vários minutos.

    nota

    Se Failed (Com falha) for exibido para qualquer uma das fases, consulte o seguinte para obter ajuda na solução do problema:

  3. Escolha Novo aplicativo

    Na nova guia que é aberta no navegador da web, o serviço da web exibe a seguinte saída de resposta:

    {"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}
  4. Na caixa de endereço da guia, adicione o caminho /hello/ e o nome ao final do URL (por exemplo, https://API_ID.execute-api.REGION_ID.amazonaws.com/Prod/hello/YOUR_FIRST_NAME) e pressione Enter.

Se o seu nome for Mary, o serviço da web exibirá a saída de resposta a seguir:

{"output": "Hello Mary"}

Etapa 7: Adicionar um teste de unidade ao serviço da web

Nesta etapa, você usa a estação de trabalho local para adicionar um teste que o AWS CodeStar executa no serviço da web. Esse teste substitui os testes manuais que você fez anteriormente.

  1. Na estação de trabalho local, vá até o diretório que contém o repositório de código-fonte clonado.

  2. Nesse diretório, crie um arquivo chamado hello_test.py. Adicione o seguinte código e salve-o em seguida.

    from hello import handler def test_hello_handler(): event = { 'pathParameters': { 'name': 'testname' } } context = {} expected = { 'body': '{"output": "Hello testname"}', 'headers': { 'Content-Type': 'application/json' }, 'statusCode': 200 } assert handler(event, context) == expected

    Esse teste verifica se o resultado da função do Lambda está no formato esperado. Se a resposta for sim, o teste será bem-sucedido. Caso contrário, o teste falhará.

  3. No mesmo diretório, abra o arquivo buildspec.yml. Substitua o conteúdo do arquivo pelo seguinte código e, em seguida, salve o arquivo.

    version: 0.2 phases: install: runtime-versions: python: 3.7 commands: - pip install pytest # Upgrade AWS CLI to the latest version - pip install --upgrade awscli pre_build: commands: - pytest build: commands: # Use AWS SAM to package the application by using AWS CloudFormation - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml # Do not remove this statement. This command is required for AWS CodeStar projects. # Update the AWS Partition, AWS Region, account ID and project ID in the project ARN on template-configuration.json file so AWS CloudFormation can tag project resources. - sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json artifacts: type: zip files: - template-export.yml - template-configuration.json

    Essa especificação de criação instrui o CodeBuild a instalar o pytest, a estrutura de teste do Python, em seu ambiente de produção. O CodeBuild usa o pytest para executar o teste de unidade. O resto da especificação de criação é o mesmo de antes.

  4. Use o Git para enviar essas alterações para o repositório remoto.

    git add . git commit -m "Added hello_test.py and updated buildspec.yml." git push

Etapa 8: Visualizar os resultados do teste de unidade

Nesta etapa, você verá se o teste de unidade foi bem-sucedido ou não.

  1. Com seu projeto ainda aberto no console do AWS CodeStar, na barra de navegação, selecione Pipeline.

  2. Certifique-se de que o pipeline tenha funcionado novamente antes de continuar. Isso pode demorar vários minutos.

    Se o teste de unidade foi bem-sucedido, Succeeded (Bem-sucedido) será exibido para a fase Build (Criar).

  3. Para visualizar os detalhes do resultado de teste de unidade, no estágio Criar, escolha o link CodeBuild.

  4. No console do CodeBuild, na página Criar projeto: my-sam-project, em Histórico de criação, escolha o link na coluna Execução da criação da tabela.

  5. Na página my-sam-project:BUILD_ID, em Build logs (Criar logs), escolha o link View entire log (Exibir todo o log).

  6. No console do Amazon CloudWatch Logs, procure um resultado de teste semelhante ao seguinte na saída do log. No resultado do teste a seguir, o teste foi bem-sucedido:

    ... ============================= test session starts ============================== platform linux2 -- Python 2.7.12, pytest-3.2.1, py-1.4.34, pluggy-0.4.0 rootdir: /codebuild/output/src123456789/src, inifile: collected 1 item hello_test.py . =========================== 1 passed in 0.01 seconds =========================== ...

    Se o teste falhou, deve haver detalhes na saída do log para ajudá-lo a solucionar a falha.

Etapa 9: Limpeza

Nesta etapa, você limpa o projeto para evitar custos contínuos desse projeto.

Se você deseja continuar a usar esse projeto, pode ignorar essa etapa, mas sua conta da AWS poderá continuar a ser cobrada.

  1. Com seu projeto ainda aberto no console do AWS CodeStar, na barra de navegação, selecione Configurações.

  2. Em Detalhes do projeto, Selecione Excluir projeto.

  3. Insira delete, mantenha a caixa Excluir recursos selecionada e escolha Excluir.

    Importante

    Se você desmarcar essa caixa, o registro do projeto será excluído do AWS CodeStar, mas muitos dos recursos da AWS do projeto serão mantidos. A conta da AWS pode continuar sendo cobrada.

Se ainda houver um bucket do Amazon S3 criado pelo AWS CodeStar para esse projeto, siga estas etapas para excluí-lo:

  1. Abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Na lista de buckets, escolha o ícone ao lado de aws-codestar-REGION_IDACCOUNT_ID-my-sam-project--pipe, em que:

    • REGION_ID é o ID da região da AWS do projeto recém-excluído.

    • ACCOUNT_ID é o ID da conta da AWS.

    • my-sam-project é o ID do projeto que você acabou de excluir.

  3. Escolha Empty Bucket (Esvaziar bucket). Digite o nome do bucket e escolha Confirm (Confirmar).

  4. Escolha Excluir bucket. Digite o nome do bucket e escolha Confirm (Confirmar).

Próximas etapas

Agora que você concluiu este tutorial, sugerimos analisar os seguintes recursos: