Quick Start: Publishing Applications - AWS Serverless Application Repository

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

Quick Start: Publishing Applications

Este guia orienta você pelas etapas de download, criação, teste e publicação de um aplicativo de exemplo sem servidor no AWS Serverless Application Repository usando a CLI do AWS SAM. É possível usar esse aplicativo de exemplo como ponto inicial para desenvolver e publicar o seu próprio aplicativo sem servidor.

Visão geral

As etapas a seguir definem como baixar, criar e publicar um exemplo de aplicativo sem servidor:

  1. Inicializar. Faça download de um exemplo de aplicativo a partir do modelo usando sam init.

  2. Testar localmente. Teste o aplicativo localmente usando sam local invoke e/ou sam local start-api. Observe que, com esses comandos, mesmo que sua função Lambda seja invocada localmente, ela lê e grava emAWS recursos naAWS nuvem.

  3. Pacote. Quando estiver satisfeito com sua função do Lambda, agrupe a função, oAWS SAM modelo e quaisquer dependências do Lambda em um pacote deAWS CloudFormation implantação usandosam package. Nesta etapa você também incluirá as informações sobre o aplicativo que será carregado no AWS Serverless Application Repository.

  4. Publicar. Publique o aplicativo no AWS Serverless Application Repository usando sam publish. Ao final desta etapa, você poderá visualizar seu aplicativoAWS Serverless Application Repository e implantá-lo naAWS nuvem usandoAWS Serverless Application Repository.

O exemplo Aplicativo Hello World na seção a seguir guia você por essas etapas na criação e publicação de um aplicativo sem servidor.

Aplicativo Hello World

Neste exercício, baixe e teste um aplicativo Hello World sem servidor que representa um simples back-end da API. Consiste em um endpoint do Amazon API Gateway que suporta uma operação GET e uma função Lambda. Quando uma solicitação GET é enviada ao endpoint, o API Gateway invoca a função do Lambda. Depois, o AWS Lambda executará a função, que basicamente retornará uma mensagem hello world.

O aplicativo tem os seguintes componentes:

  • UmAWS SAM modelo que define doisAWS recursos para o aplicativo Hello World: um serviço de API Gateway com uma operação GET e uma função Lambda. O modelo também define o mapeamento entre a operação GET do API Gateway e a função Lambda.

  • Código do aplicativo gravado em Python.

Antes de começar

Certifique-se de que tenha a configuração necessária para este exercício:

Etapa 1: Inicializar o aplicativo

Nesta seção, baixe o exemplo de aplicativo, que consiste em um modelo do AWS SAM e no código do aplicativo.

Como inicializar o aplicativo
  1. Execute o seguinte comando em um prompt de comando da CLI do AWS SAM.

    sam init --runtime python3.6
  2. Revise o conteúdo do diretório criado pelo comando (sam-app/):

    • template.yaml— Define doisAWS recursos que o aplicativo Hello World precisa: uma função Lambda e um endpoint do API Gateway que suporte uma operação GET. O modelo também define o mapeamento entre os dois recursos.

    • Conteúdo relacionado ao código do aplicativo Hello World:

      • hello_world/diretório — Contém o código do aplicativo, que retornahello world quando você o executa.

    nota

    Para este exercício, o código do aplicativo está gravado em Python e você especifica o tempo de execução no comando init. O AWS Lambda oferece suporte a idiomas adicionais para criar o código do aplicativo. Se você especificar outro tempo de execução compatível, o comando init oferecerá o código Hello World no idioma especificado e um arquivo README.md que você poderá seguir no idioma correspondente. Para obter informações sobre tempos de execução compatíveis, consulte Ambiente de execução do Lambda e bibliotecas disponíveis.

Etapa 2: Testar o aplicativo localmente

Agora que você tem o aplicativo do AWS SAM na máquina local, siga as etapas abaixo para testá-la localmente.

Como testar o aplicativo localmente
  1. Inicie o endpoint do gateway da API localmente. É necessário executar o comando a seguir a partir do diretório que contém o arquivo template.yaml.

    sam-app> sam local start-api --region us-east-1

    O comando retorna um endpoint do API Gateway, para o qual você pode enviar solicitações para testes locais.

  2. Testar o aplicativo Copie o URL do endpoint do API Gateway, cole-o no navegador e escolha Enter. Um exemplo de URL de endpoint do API Gateway éhttp://127.0.0.1:3000/hello.

    O API Gateway invoca localmente a função Lambda para a qual o endpoint está mapeado. A função Lambda é executada no contêiner local do Docker e retornahello world. O API Gateway retorna uma resposta ao navegador que contém o texto.

Exercício: alterar a string da mensagem.

Depois de testar o exemplo de aplicativo com êxito, é possível testar fazendo uma simples modificação: alterar a string da mensagem retornada.

  1. Edite o arquivo /hello_world/app.py para alterar a string da mensagem de 'hello world' para 'Hello World!'.

  2. Recarregue o URL de teste no navegador e observe a nova string.

Você notará que o novo código será carregado de forma dinâmica, sem precisar reiniciar o processo do sam local.

Etapa 3: Empacotar o aplicativo

Depois de testar o aplicativo localmente, use a CLI do AWS SAM para criar um pacote de implantação e um modelo do AWS SAM empacotado.

nota

Nas etapas a seguir, crie um arquivo .zip para o conteúdo do diretório hello_world/, que contém o código do aplicativo. Este arquivo .zip é o pacote de implantação para o seu aplicativo sem servidor. Para obter mais informações, consulte Criando um Package de implantação (Python) no Guia doAWS Lambda desenvolvedor.

Como Como Como Como Como Como Como Lambda Como Como Como Como
  1. Adicione uma seção de Metadata ao arquivo do modelo do AWS SAM fornecendo as informações necessárias do aplicativo. Para obter mais informações sobre a seção Metadata dos modelos do AWS SAM, consulte Propriedades da seção dos metadados do modelo do AWS SAM no Guia do desenvolvedor do AWS Serverless Application Model.

    Veja um exemplo da seção Metadata:

    Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project

    ReadmeUrlAs propriedadesLicenseUrl and podem ser referências a arquivos locais (como no exemplo acima) ou podem ser links para buckets do Amazon S3 que já hospedam esses artefatos.

  2. Crie um bucket do S3 no local onde deseja salvar o código empacotado. Se você quiser usar um bucket do S3 existente, ignore esta etapa.

    sam-app> aws s3 mb s3://bucketname
  3. Crie o pacote de implantação da função Lambda executando o seguinte comando dapackageAWS SAM CLI.

    sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    O comando faz o seguinte:

    • Compacta o conteúdo doaws-sam/hello_world/ diretório e faz o upload para o Amazon S3.

    • Carrega o pacote de implantação, o arquivo README e o arquivo LICENSE para o bucket do Amazon S3 especificado pela--s3-bucket opção.

    • Gera um novo arquivo de modelo, chamado packaged.yaml, que será usado na próxima etapa para publicar o aplicativo no AWS Serverless Application Repository. O arquivo depackaged.yaml modelo é semelhante ao arquivo de modelo original (template.yaml), mas tem uma diferença fundamental: asReadmeUrl propriedadesCodeUriLicenseUrl, e apontam para o bucket do Amazon S3 e para os objetos que contêm os respectivos artefatos. O seguinte trecho de um arquivo de modelo de exemplo packaged.yaml mostra a propriedade CodeUri:

      HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

Etapa 4: publicar o aplicativo

Agora que você criou o pacote de implantação, use-o para publicar o aplicativo no AWS Serverless Application Repository.

Como publicar o aplicativo sem servidor no AWS Serverless Application Repository
  • Execute o comando a seguir para publicar o novo aplicativo no AWS Serverless Application Repository com a primeira versão criada como 0.0.1.

    sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
nota

O aplicativo será criado como privado por padrão. Você deve compartilhar o aplicativo antes que outrasAWS contas possam visualizar e implantar seu aplicativo. Consulte Next Steps (Próximas etapas) abaixo para obter mais detalhes sobre como compartilhar o aplicativo.

Próximas etapas

Agora que você publicou o exemplo de aplicativo, veja algumas coisas que poderá fazer com ele.

  • Exibir seu aplicativo emAWS Serverless Application Repository — A saída dosam publish comando incluirá um linkAWS Serverless Application Repository diretamente para a página de detalhes do seu aplicativo. Também é possível ir para a página inicial do AWS Serverless Application Repository e pesquisar o aplicativo.

  • Compartilhe seu aplicativo — Como seu aplicativo está definido como privado por padrão, ele não é visível para outrasAWS contas. Para compartilhar sua inscrição com outras pessoas, você deve torná-la pública ou conceder permissão a uma lista específica deAWS contas. Para obter informações sobre como compartilhar o aplicativo usando a AWS CLI, consulte AWS Serverless Application RepositoryExemplos de políticas de aplicativos. Para obter informações sobre como compartilhar o aplicativo usando o console, consulte Compartilhar um aplicativo.

Mais informações

Para obter mais informações sobre a seção Metadata dos modelos do AWS SAM, sobre os comandos sam package e sam publish da CLI do AWS SAM, consulte Publicar aplicativos usando a CLI do AWS SAM no Guia do desenvolvedor do AWS Serverless Application Model.