Projeto básico do AWS Lambda de criação de imagem do Docker - AWS Kit de ferramentas com Amazon Q

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

Projeto básico do AWS Lambda de criação de imagem do Docker

Você pode usar o Toolkit for Visual Studio para implantar AWS Lambda sua função como uma imagem do Docker. Usando o Docker, você tem mais controle sobre seu tempo de execução. Por exemplo, você pode escolher tempos de execução personalizados, como o.NET 8.0. A imagem do Docker é implantada da mesma forma que qualquer outra imagem de contêiner. Este tutorial é muito semelhante ao Tutorial: Projeto básico do Lambda, com duas diferenças:

  • Um Dockerfile está incluído no projeto.

  • Uma configuração de publicação alternativa é escolhida.

Para obter informações sobre imagens de contêiner do Lambda, consulte Pacotes de implantação do Lambda no Guia do desenvolvedor do AWS Lambda .

Para obter informações adicionais sobre como trabalhar com o Lambda AWS Toolkit for Visual Studio, consulte Usando os AWS Lambda modelos no AWS Toolkit for Visual Studio tópico deste Guia do usuário.

Criar um projeto do Lambda do Visual Studio .NET Core

Você pode usar modelos e esquemas do Lambda Visual Studio para ajudar a acelerar a inicialização do seu projeto. Os blueprints do Lambda contêm funções pré-escritas que simplificam a criação de uma base de projeto flexível.

Como criar um projeto do Lambda do Visual Studio .NET Core
  1. No Visual Studio, expanda o menu Arquivo, expanda Novo e escolha Projeto.

  2. Na caixa de diálogo Novo projeto, defina as caixas suspensas Idioma, Plataforma e Tipo de projeto como “Tudo” e digite aws lambda no campo Pesquisar. Escolha o modelo do Projeto AWS Lambda (.NET Core - C#).

  3. No campo Nome do projeto, insiraAWSLambdaDocker, especifique a localização do arquivo e escolha Criar.

  4. Na página Selecionar esquema, escolha o blueprint .NET 8 (imagem de contêiner) e, em seguida, escolha Concluir para criar o projeto do Visual Studio. Você já pode revisar a estrutura do projeto e o código.

Revisando arquivos de projeto

As seções a seguir examinam os três arquivos de projeto criados pelo blueprint do.NET 8 (Container Image):

  1. Dockerfile

  2. aws-lambda-tools-defaults.json

  3. Function.cs

1. Dockerfile

A Dockerfile executa três ações principais:

  • FROM: estabelece a imagem base a ser utilizada para essa imagem. Essa imagem base fornece o runtime do .NET, runtime do Lambda e um script de shell que oferece um ponto de entrada para o processo do .NET para Lambda.

  • WORKDIR: estabelece o diretório de trabalho interno da imagem como/var/task.

  • COPY: copiará os arquivos gerados pelo processo de construção de sua localização local para o diretório de trabalho da imagem.

A seguir estão as Dockerfile ações opcionais que você pode especificar:

  • ENTRYPOINT: a imagem base já inclui umENTRYPOINT, que é o processo de inicialização executado quando a imagem é iniciada. Se você desejar especificar o seu, essa ação substituirá esse ponto de entrada básico.

  • CMD: instrui AWS qual código personalizado você deseja executar. Ele espera um nome totalmente qualificado para seu método personalizado. Essa linha precisa ser incluída diretamente no Dockerfile ou pode ser especificada durante o processo de publicação.

    # Example of alternative way to specify the Lambda target method rather than during the publish process. CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]

Veja a seguir um exemplo de um Dockerfile criado pelo blueprint .NET 8 (Container Image).

FROM public.ecr.aws/lambda/dotnet:8 WORKDIR /var/task # This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. # The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built # with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project # will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir` # set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish". # # Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image. # For more information on this approach checkout the project's README.md file. COPY "bin/Release/lambda-publish" .

2. aws-lambda-tools-defaults.json

O aws-lambda-tools-defaults.json arquivo é usado para especificar valores padrão para o assistente de implantação do Toolkit for Visual Studio e a CLI do.NET Core. A lista a seguir descreve os campos que você pode definir no seu aws-lambda-tools-defaults.json arquivo.

  • profile: define seu AWS perfil.

  • region: define a AWS região em que seus recursos são armazenados.

  • configuration: define a configuração usada para publicar sua função.

  • package-type: define o tipo de pacote de implantação como uma imagem de contêiner ou arquivo de arquivo.zip.

  • function-memory-size: define a alocação de memória para sua função em MB.

  • function-timeout: o tempo limite é o tempo máximo em segundos que uma função Lambda pode ser executada. Você pode ajustar isso em incrementos de 1 segundo até um valor máximo de 15 minutos.

  • docker-host-build-output-dir: define o diretório de saída do processo de construção que se correlaciona com as instruções no. Dockerfile

  • image-command: é um nome totalmente qualificado para seu método, o código que você deseja que a função Lambda execute. A sintaxe é: {Assembly}::{Namespace}.{ClassName}::{MethodName}. Para obter mais informações, consulte Handler signatures. Aqui, a configuração image-command preenche automaticamente esse valor no assistente de publicação do Visual Studio em um momento posterior.

Veja a seguir um exemplo de um aws-lambda-tools-defaults .json criado pelo blueprint .NET 8 (Container Image).

{ "Information": [ "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.", "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.", "dotnet lambda help", "All the command line options for the Lambda command can be specified in this file." ], "profile": "default", "region": "us-west-2", "configuration": "Release", "package-type": "image", "function-memory-size": 512, "function-timeout": 30, "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler", "docker-host-build-output-dir": "./bin/Release/lambda-publish" }

3. Function.cs

O Function.cs arquivo define as funções c# a serem expostas como funções Lambda. Esse FunctionHandler é a funcionalidade do Lambda que é executada quando a função do Lambda é executada. Neste projeto, FunctionHandler chama ToUpper() o texto de entrada.

Publicar no Lambda

As imagens do Docker que são geradas pelo processo de compilação são carregadas no Amazon Elastic Container Registry (Amazon ECR). O Amazon ECR é um registro de contêiner do Docker totalmente gerenciado que facilita o armazenamento, o gerenciamento e a implantação de imagens de contêiner do Docker. O Amazon ECR hospeda a imagem, à qual o Lambda então se refere para fornecer a funcionalidade programada do Lambda quando invocada.

Como publicar uma função no Lambda
  1. No Solution Explorer, abra o menu de contexto do projeto (clique com o botão direito do mouse) e escolha Publish to AWS Lambda para abrir a janela Carregar função Lambda.

  2. Na página Carregar função Lambda, faça o seguinte:

    Tela de upload para publicação da função Lambda baseada em imagem em AWS
    1. Em Tipo de pacote, Image foi selecionado automaticamente como seu Tipo de pacote porque o assistente de publicação detectou um Dockerfile em seu projeto.

    2. Em Nome da função, insira um nome de exibição para sua instância do Lambda. Esse nome é o nome de referência exibido no AWS Explorer no Visual Studio e no AWS Management Console.

    3. Em Descrição, insira o texto a ser exibido com sua instância no AWS Management Console.

    4. Em Comando de imagem, insira um caminho totalmente qualificado para o método que você deseja que a função do Lambda execute: AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler.

      nota

      Qualquer nome de método inserido aqui substituirá qualquer instrução CMD no Dockerfile. A inserção do comando de imagem é opcional somente se o Dockerfile incluir uma CMD para instruir como iniciar a função do Lambda.

    5. Em Repositório de imagens, insira o nome de um Amazon Elastic Container Registry novo ou existente. A imagem do Docker que o processo de compilação cria é carregada nesse registro. A definição do Lambda que está sendo publicada fará referência a essa imagem do Amazon ECR.

    6. Em Tag da imagem, insira uma tag do Docker para associá-la à sua imagem no repositório.

    7. Escolha Próximo.

  3. Na página Detalhes avançados da função, em Nome da função, escolha uma função associada à sua conta. A função é usada para fornecer credenciais para todas as chamadas à Amazon Web Services feitas pelo código na função. Se você não tiver uma função, escolha Nova função com base na política AWS gerenciada e, em seguida, escolha AWSLambdaBasicExecutionRole.

    nota

    Sua conta precisa ter permissão para executar a ListPolicies ação do IAM, ou a lista de nomes da função ficará vazia.

  4. Escolha Carregar para iniciar os processos de upload e publicação.

    nota

    A página Carregando a função é exibida enquanto a função está sendo carregada. Em seguida, o processo de publicação cria a imagem com base nos parâmetros de configuração, cria o repositório do Amazon ECR, se necessário, carrega a imagem no repositório e cria o Lambda faz referência a esse repositório com essa imagem.

    Depois que a função é carregada, a página Função é aberta e exibe a configuração da nova função do Lambda.

  5. Para invocar manualmente a função do Lambda, na guia Função de teste, insira hello image based lambda no campo de entrada de texto livre da solicitação e escolha Invocar. Seu texto, convertido em maiúsculas, aparecerá em Resposta.

    A guia Função de teste da página de visualização da função publicada tem um botão para invocar manualmente o método do Lambda.
  6. Para visualizar o repositório, no AWS Explorer, em Amazon Elastic Container Service, escolha Repositórios.

    Você pode reabrir a visualização Função: a qualquer momento clicando duas vezes na instância implantada, localizada no AWS Explorer abaixo do nó AWS Lambda.

    nota

    Se a janela do AWS Explorer não estiver aberta, você pode encaixá-la via Exibir -> AWS Explorer

  7. Observe as opções adicionais de configuração específicas da imagem na guia Configuração. Essa guia possibilita substituir o ENTRYPOINT, CMD e WORKDIR que podem ter sido especificados no Dockerfile. Descrição é a descrição que você inseriu (se for o caso) durante o upload/publicação.

Limpeza

Se você não quiser continuar desenvolvendo com este exemplo, lembre-se de excluir a função e a imagem do ECR que foram implantadas para que você não receba cobranças por recursos não utilizados em sua conta.

  • As funções podem ser excluídas clicando com o botão direito na instância implantada, localizada no AWS Explorer abaixo do nó AWS Lambda.

  • Os repositórios podem ser excluídos no AWS Explorer em Amazon Elastic Container Service -> Repositórios.

Próximos Passos

Para obter informações sobre como criar e testar imagens do Lambda, consulte Trabalhar com imagens de contêiner do Lambda.

Para obter informações sobre implantação, permissões e substituição de configurações de imagens de contêiner, consulte Configurar funções.