Trabalhando com aplicativos AWS sem servidor usando o Toolkit AWS - AWS Cloud9

AWS Cloud9 não está mais disponível para novos clientes. Os clientes atuais do AWS Cloud9 podem continuar usando o serviço normalmente. Saiba mais

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

Trabalhando com aplicativos AWS sem servidor usando o Toolkit AWS

O AWS kit de ferramentas fornece suporte para aplicativos sem servidor. Usando o AWS Toolkit, você pode criar aplicativos sem servidor que contêm AWS Lambdafunções e, em seguida, implantá-los em uma pilha. AWS CloudFormation

Criar uma aplicação sem servidor

Este exemplo mostra como usar o AWS Toolkit para criar um aplicativo sem servidor. Para obter informações sobre como executar e depurar aplicações com tecnologia sem servidor, consulte Executar e depurar aplicações sem servidor.

Os pré-requisitos necessários para criar um aplicativo sem servidor incluem o. AWS SAM CLIAWS CLI Eles estão incluídos com AWS Cloud9. Se não AWS SAM CLI estiver instalado ou estiver desatualizado, talvez seja necessário executar uma instalação ou atualização. Para obter instruções sobre como instalar AWS SAM CLI, consulte Instalando o AWS SAM CLI e para obter instruções sobre como atualizar o AWS SAM CLI, consulte Atualizando o. AWS SAM CLI

Crie uma aplicação sem servidor com o AWS Toolkit

Este exemplo mostra como criar um aplicativo sem servidor com o AWS Toolkit usando o AWS Serverless Application Model ().AWS SAM

  1. No AWS Explorer, abra o menu de contexto (clique com o botão direito do mouse) do nó Lambda e escolha Criar aplicativo SAM Lambda.

    nota

    Como alternativa, você pode selecionar o ícone do menu em frente ao título AWS: Explorer e escolher Criar aplicativo Lambda SAM.

  2. Escolha o tempo de execução do seu SAM aplicativo. Para este exemplo, escolha nodejs12.x.

    nota

    Se você selecionar um dos ambientes de tempo de execução com “(Image)”, sua aplicação será o tipo de pacote Image. Se você selecionar um dos ambientes de tempo de execução sem “(Image)”, sua aplicação será o tipo Zip. Para obter mais informações sobre a diferença entre o Image e os tipos de pacote de Zip, consulte Pacotes de implantação do Lambda no Manual do desenvolvedor do AWS Lambda .

  3. Selecione um dos seguintes modelos para a aplicação com tecnologia sem servidor:

    • AWS SAM Hello World: um modelo básico com uma função Lambda que retorna a mensagem clássica “Hello World”.

    • AWS Step Functions Sample App: Um aplicativo de amostra que executa um fluxo de trabalho de negociação de ações. As funções da etapa orquestram as interações das funções do Lambda envolvidas.

  4. Escolha um local para o seu novo projeto. Se houver uma disponível, você poderá selecionar uma pasta do espaço de trabalho existente. Caso contrário, procure uma pasta diferente. Se você selecionar Select a different folder (Selecionar uma pasta diferente), uma caixa de diálogo será exibida onde você poderá selecionar um local para a pasta.

  5. Insira um nome para a nova aplicação. Neste exemplo, use my-sam-app-nodejs. Depois de pressionar Enter, o AWS kit de ferramentas leva alguns minutos para criar o projeto.

Quando o projeto for criado, você pode visualizar os arquivos da aplicação na janela Environment (Ambiente). Encontre-o listado na janela do Explorer.

Captura de tela mostrando os tempos de execução disponíveis para SAM aplicativos.

Executar e depurar aplicações sem servidor

Você pode usar o AWS Toolkit para configurar como depurar aplicativos sem servidor e executá-los localmente em seu ambiente de desenvolvimento. Você pode depurar um aplicativo sem servidor definido por um modelo AWS Serverless Application Model ()AWS SAM. Esse modelo usa uma YAML sintaxe simples para descrever recursos como funçõesAPIs, bancos de dados e mapeamentos de origem de eventos que compõem um aplicativo sem servidor.

Para ver mais de perto o AWS SAM modelo, consulte a anatomia do AWS SAM modelo no Guia do AWS Serverless Application Model desenvolvedor.

Como alternativa, você pode depurar rapidamente aplicativos sem servidor que não foram comprometidos com um modelo. SAM

Você começa a configurar o comportamento de depuração usando ações embutidas para identificar uma função elegível AWS Lambda . Para usar a infraestrutura definida pelo SAM modelo, use a ação embutida no arquivo YAML formatado relevante. Para testar a função diretamente sem o modelo, use o link sensível ao contexto para o manipulador do Lambda no arquivo da aplicação.

nota

Neste exemplo, estamos depurando um aplicativo que usa. JavaScript Mas você pode usar os recursos de depuração disponíveis no AWS Toolkit com os seguintes idiomas e tempos de execução:

  • JavaScript — Node.js 10. x, 12. x, 14. x

  • Python — 3.7, 3.8, 3.9, 3.10 (os aplicativos sem servidor Python 2.7 e 3.6 podem ser executados, mas não depurados pelo Toolkit.) AWS

Sua escolha de idioma também afeta como os links sensíveis ao contexto indicam manipuladores Lambda qualificados. Para ter mais informações, consulte Executar e depurar funções sem servidor diretamente do código.

Usando SAM modelos para executar e depurar aplicativos sem servidor

Para aplicativos que são executados e depurados usando um SAM modelo, um arquivo YAML formatado descreve o comportamento do aplicativo e os recursos que ele usa. Se você criar um aplicativo sem servidor usando o AWS Toolkit, um arquivo chamado será template.yaml gerado automaticamente para o seu projeto.

Neste procedimento, use a aplicação de exemplo criada no Criar uma aplicação sem servidor.

Para usar um SAM modelo para executar e depurar um aplicativo sem servidor

  1. Para exibir os arquivos da aplicação que compõem a aplicação sem servidor, acesse a janela Environment (Ambiente).

  2. Na pasta do aplicativo (por exemplo, my-sample-app), abra o template.yaml arquivo.

  3. Em template.yaml, selecione Edit Launch Configuration (Editar configuração de execução).

    Um novo editor exibe o arquivo launch.json que fornece uma configuração de depuração com atributos padrão.

  4. Edite ou confirme valores para as seguintes propriedades de configuração:

    • "name": insira um nome de leitura fácil para aparecer no campo suspenso Configuration (Configuração) na exibição Run (Executar).

    • "target": verifique se o valor é "template". Dessa forma, o SAM modelo é o ponto de entrada para a sessão de depuração.

    • "templatePath" – Insira um caminho relativo ou absoluto para o arquivo template.yaml.

    • "logicalId"— Certifique-se de que o nome corresponda ao especificado na seção Recursos do SAM modelo. Neste caso, é o HelloWorldFunction do tipo AWS::Serverless::Function.

    Para obter mais informações sobre essas e outras entradas no arquivo launch.json, consulte Opções de configuração para depurar aplicações sem servidor.

  5. Se você estiver satisfeito com sua configuração de depuração, salve launch.json. Em seguida, escolha o botão verde “play” ao lado RUNpara iniciar a depuração.

    nota

    Se o SAM aplicativo falhar na execução, verifique a janela Saída para ver se o erro foi causado pela não compilação de uma imagem do Docker. Talvez seja necessário liberar espaço em disco em seu ambiente.

    Para ter mais informações, consulte Erro ao executar aplicativos SAM localmente no AWS Toolkit porque o AWS Cloud9 ambiente não tem espaço em disco suficiente.

    Quando as sessões de depuração começam, o DEBUGCONSOLEpainel mostra a saída da depuração e exibe todos os valores retornados pela função Lambda. Ao depurar SAM aplicativos, o AWS Toolkit é selecionado como o canal de saída no painel Saída.

    nota

    Para usuários do Windows, se você encontrar um erro de montagem do Docker durante esse processo, talvez seja necessário atualizar as credenciais das unidades compartilhadas em Docker Settings (Configurações do Docker). Um erro de montagem do Docker terá uma aparência semelhante à seguinte.

    Fetching lambci/lambda:nodejs10.x Docker container image...... 2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container Traceback (most recent call last): ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...

Executar e depurar funções sem servidor diretamente do código

Ao testar o AWS SAM aplicativo, você pode optar por executar e depurar somente a função Lambda. Exclua outros recursos definidos pelo SAM modelo. Essa abordagem envolve o uso de uma ação integrada para identificar manipuladores de função do Lambda no código-fonte que podem ser diretamente invocados.

Os manipuladores do Lambda que são detectados por links sensíveis ao contexto dependem do idioma e do tempo de execução que você estiver usando para a aplicação.

Idioma/tempo de execução Condições para que as funções do Lambda sejam identificadas por links sensíveis ao contexto

JavaScript (Node.js 10.x, 12.x e 14.x)

A função de pesquisa também tem os seguintes recursos:
  • É uma função exportada com até três parâmetros.

  • Um arquivo package.json está em sua pasta pai, na pasta do espaço de trabalho.

Python (3.7, 3.8, 3.9 d 3.10)

A função de pesquisa também tem os seguintes recursos:
  • É uma função de nível superior.

  • Um arquivo requirements.txt está em sua pasta pai, na pasta do espaço de trabalho.

Para executar e depurar uma aplicação sem servidor diretamente do código da aplicação

  1. Para exibir os arquivos da aplicação com tecnologia sem servidor, navegue até a pasta da aplicação selecionando o ícone de pasta ao lado do editor.

  2. Na pasta do aplicativo (por exemplo, my-sample-app), expanda a pasta de funções (neste exemplo, hello-world) e abra o app.js arquivo.

  3. Na ação integrada que identifica uma função de manipulador do Lambda elegível, escolha Add Debug Configuration. Se a opção de adicionar configuração de depuração não for exibida, você deverá ativar as lentes de código. Para habilitar as lentes de código, consulte Ativando AWS lentes de código do Toolkit .

    Acesse a opção Add Debug Configuration (Adicionar configuração de depuração) na ação integrada para um manipulador de função do Lambda.
  4. Selecione o tempo de execução em que seu SAM aplicativo é executado.

  5. No editor para o arquivo launch.json, edite ou confirme valores para as seguintes propriedades de configuração:

    • "name" – Insira um nome de leitura fácil.

    • "target" – Verifique se o valor é "code" para que um manipulador de função do Lambda seja diretamente chamado.

    • "lambdaHandler" –Insira nome do método no código que o Lambda chama para executar a função. Por exemplo, para aplicativos em JavaScript, o padrão éapp.lambdaHandler.

    • "projectRoot" – Insira o caminho para o arquivo da aplicação que contém a função do Lambda.

    • "runtime": insira ou confirme um ambiente de tempo de execução válido para o ambiente de execução do Lambda, (por exemplo, "nodejs.12x").

    • "payload" – Escolha uma das seguintes opções para definir a carga útil do evento que você quer fornecer para a função Lambda como entrada:

      • "json": pares JSON de valores-chave formatados que definem a carga útil do evento.

      • "path": Um caminho para o arquivo que é usado como a carga útil do evento.

  6. Se você estiver satisfeito com a configuração de depuração, escolha a seta de reprodução verde ao lado para iniciar RUNa depuração.

    Quando as sessões de depuração começam, o DEBUGCONSOLEpainel mostra a saída da depuração e exibe todos os valores retornados pela função Lambda. Ao depurar SAM aplicativos, o AWS Toolkit é selecionado como o canal de saída no painel Saída.

    nota

    Se você vir o Docker mencionado nas mensagens de erro, consulte esta anotação.

Execução e depuração de recursos locais do Amazon Gateway API

Você pode executar ou depurar os recursos locais do AWS SAM API Gateway que estão especificados emtemplate.yaml. Faça isso executando uma configuração de AWS Cloud9 lançamento do type=aws-sam com invokeTarget.target=api o.

nota

APIO Gateway suporta dois tipos deAPIs. Eles são REST HTTP APIs e. No entanto, o recurso API Gateway com o AWS Toolkit oferece suporte REST APIs apenas. Às vezes HTTP APIs são chamados de "APIGateway V2"APIs.

Para executar e depurar recursos locais do API Gateway
  1. Escolha uma das seguintes abordagens para criar uma configuração de inicialização para um recurso do AWS SAM API Gateway:

    • Opção 1: acesse o código-fonte do manipulador (especificamente, um arquivo .js, .cs ou .py) no projeto do AWS SAM , passe o mouse sobre o manipulador do Lambda e selecione Add Debug Configuration (Adicionar uma configuração de depuração). Se a opção de adicionar configuração de depuração não for exibida, ative as lentes de código. Para habilitar as lentes de código, consulte Ativando AWS lentes de código do Toolkit ). Em seguida, no menu, escolha o item marcado como API Evento.

    • Opção 2: Edite launch.json e crie uma nova configuração de execução usando a sintaxe a seguir.

      { "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
  2. No menu suspenso ao lado do botão Run (Executar), selecione a configuração de execução (chamada myConfig no exemplo acima).

  3. (Opcional) Adicione pontos de interrupção ao código do projeto do Lambda.

  4. Selecione o Run (Executar) ao lado do botão verde Play.

  5. No painel de saída, exiba os resultados.

Configuração

Quando você usa o Valor da propriedade do invokeTarget.target, api, o Toolkit altera a validação da configuração de execução e o comportamento para suportar um campo da api.

{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }

Substitua os valores no exemplo da seguinte forma:

invokeTarget.logicalId

Um API recurso.

caminho

O API caminho que a configuração de lançamento solicita (por exemplo,"path": "/hello").

Deve ser um API caminho válido resolvido a partir do template.yaml que foi especificado porinvokeTarget.templatePath.

httpMethod

Utilize um dos seguintes verbos: “delete”, “get”, “head”, “options”, “path”, “post”, “put”.

payload

A JSON carga útil (HTTPcorpo) a ser enviada na solicitação com a mesma estrutura e regras do campo lambda.payload.

payload.pathaponta para um arquivo que contém a JSON carga útil.

payload.jsonespecifica uma JSON carga em linha.

headers

Mapa opcional de pares de nome/valor. Use-o para especificar HTTP cabeçalhos a serem incluídos na solicitação.

"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
querystring

(Opcional) Use essa string que define a querystring da solicitação, por exemplo, "querystring": "abc=def&ghi=jkl".

aws

Como as informações de AWS conexão são fornecidas. Para obter mais informações, consulte a tabela Propriedades (aws) da conexão com a AWS no Opções de configuração para depurar aplicações sem servidor.

sam

Como eles AWS SAM CLI criam o aplicativo. Para obter mais informações, consulte as propriedades AWS SAM CLI (” sam “) emOpções de configuração para depurar aplicações sem servidor.

Sincronizar uma aplicação sem servidor

Este exemplo mostra como sincronizar a aplicação sem servidor criada no tópico anterior (Criar uma aplicação sem servidor) na AWS usando o AWS Toolkit for Visual Studio Code.

Pré-requisitos

  • Selecione um nome globalmente exclusivo do bucket do Amazon S3.

  • Certifique-se de que as credenciais nas quais você configurou incluam o acesso apropriado de leitura/gravação aos seguintes serviços: Amazon S3, AWS CloudFormation, AWS Lambda e Amazon Gateway. API

  • Para aplicativos com tipo de implantaçãoImage, certifique-se de ter um nome de bucket Amazon S3 globalmente exclusivo e um ECR repositório Amazon URI para usar na implantação.

Sincronizar uma aplicação sem servidor

  1. Na janela do AWS Explorer, abra o menu de contexto (clique com o botão direito do mouse) do nó Lambda e selecione SAM Sincronizar aplicativo.

  2. Escolha o Região da AWS para implantar.

  3. Escolha o arquivo template.yaml a ser usado para a implantação.

  4. Insira o nome de um bucket do Amazon S3 a ser utilizado nessa implantação. O bucket deve estar na região na qual você estiver implantando.

    Atenção

    Esse nome de bucket do Amazon S3 deve ser exclusivo globalmente com relação a todos os nomes de buckets existentes no Amazon S3. Adicione um identificador exclusivo ao nome fornecido no exemplo a seguir ou selecione outro nome.

  5. Se seu aplicativo sem servidor incluir uma função com o tipo de pacoteImage, insira o nome de um ECR repositório da Amazon que essa implantação possa usar. O repositório deve estar na região na qual você estiver implantando.

  6. Insira um nome, novo ou existente, para a pilha implantada.

  7. Verifique o êxito da implantação na guia AWS Toolkit do Console.

    Se ocorrer um erro, uma mensagem será exibida na parte inferior direita.

    Se isso acontecer, verifique o texto na guia AWS Toolkit para obter detalhes. Veja a seguir um exemplo de detalhes de erro.

    Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket aws s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.

    Neste exemplo, o erro ocorreu porque o bucket do Amazon S3 não existia.

Depois de concluir a implantação, seu aplicativo será listado na janela do AWS Explorer. Para saber como invocar a função do Lambda criada como parte da aplicação, consulte Invocar funções do Lambda remotas.

Ativando AWS lentes de código do Toolkit

  1. Na barra de menu, escolha AWS Cloud9 e Preferences (Preferências).

  2. Na guia Preferences (Preferências), na barra lateral, escolha AWS Toolkit.

  3. Para habilitar lentes de código, escolha Enable Code Lenses (Habilitar lentes de código).

Excluir uma aplicação sem servidor da Nuvem AWS

A exclusão de um aplicativo sem servidor envolve a exclusão da AWS CloudFormation pilha que você implantou anteriormente na nuvem. AWS Observe que esse procedimento não exclui o diretório da aplicação do host local.

  1. Abra o AWS Explorer.

  2. Na janela do AWS Explorer, expanda a região que contém a aplicação implantada que você deseja excluir e, em seguida, expanda o AWS CloudFormation.

  3. Abra o menu de contexto (clique com o botão direito do mouse) do nome da AWS CloudFormation pilha que corresponde ao aplicativo sem servidor que você deseja excluir. Em seguida, escolha Excluir CloudFormation pilha.

  4. Para confirmar que deseja excluir a pilha selecionada, escolha Delete (Excluir).

Se a exclusão da pilha for bem-sucedida, o AWS Toolkit removerá o nome da pilha da lista no Explorer. AWS CloudFormation AWS