Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Implantar funções do Lambda em Ruby com arquivos .zip

Modo de foco
Implantar funções do Lambda em Ruby com arquivos .zip - AWS Lambda

O código de sua função do AWS Lambda compreende um arquivo .rb contendo o código do manipulador da função, em conjunto com quaisquer dependências adicionais (gems) das quais o código depende. Para implantar o código dessa função no Lambda, você usa um pacote de implantação. Esse pacote pode ser um arquivo .zip ou uma imagem de contêiner. Para obter mais informações sobre como usar imagens de contêiner com o Ruby, consulte Implantar funções do Lambda em Ruby com imagens de contêiner.

Para criar um pacote de implantação como arquivo .zip, você pode usar um utilitário de arquivo .zip integrado da ferramenta da linha de comando ou qualquer outro utilitário de arquivo .zip, como o 7zip. Os exemplos mostrados nas seções a seguir pressupõem que você esteja usando uma ferramenta zip da linha de comando em um ambiente Linux ou MacOS. Para usar os mesmos comandos no Windows, você pode instalar o Subsistema Windows para Linux para obter uma versão do Ubuntu e do Bash integrada ao Windows.

Observe que o Lambda usa permissões de arquivo POSIX, então pode ser necessário definir permissões para a pasta do pacote de implantação antes da criação do arquivo .zip.

Os comandos de exemplo nas seções a seguir usam o utilitário Bundler para adicionar dependências ao pacote de implantação. Para instalar o Bundler, execute o comando a seguir.

gem install bundler

Dependências em Ruby

Para as funções do Lambda que usam o runtime do Ruby, uma dependência pode ser qualquer gem do Ruby. Ao implantar a função usando um arquivo .zip, você pode adicionar essas dependências ao arquivo .zip com o código da função ou usar uma camada do Lambda. Uma camada é um arquivo .zip que pode conter código adicional e outro conteúdo. Para saber mais sobre como usar as camadas do Lambda, consulte Gerenciar dependências do Lambda com camadas.

O runtime do Ruby inclui o AWS SDK para Ruby. Caso a função use o SDK, você não precisa empacotá-lo com o código. No entanto, para manter o controle total das dependências ou para usar uma versão específica do SDK, você pode adicioná-lo ao pacote de implantação da função. É possível incluir o SDK em seu arquivo .zip ou adicioná-lo usando uma camada do Lambda. As dependências em seu arquivo .zip ou em camadas do Lambda têm precedência sobre as versões inclusas no runtime. Para descobrir qual versão do SDK para Ruby está incluída em sua versão de runtime, consulte Versões do SDK incluídas no runtime.

No modelo de responsabilidade compartilhada da AWS, você é responsável pelo gerenciamento de todas as dependências dos pacotes de implantação das suas funções. Isso inclui a aplicação de atualizações e patches de segurança. Para atualizar as dependências no pacote de implantação da função, primeiro crie um novo arquivo .zip e depois carregue esse arquivo no Lambda. Consulte Criar um pacote de implantação .zip com dependências e Criação e atualização de funções do Lambda em Ruby usando arquivos .zip para obter mais informações.

Criar um pacote de implantação .zip sem dependências

Se o código de função não tiver dependências, o arquivo .zip conterá somente o arquivo .rb com o código do manipulador da função. Use seu utilitário zip preferencial para criar um arquivo .zip com o arquivo .rb na raiz. Se o arquivo .rb não estiver na raiz do arquivo .zip, o Lambda não poderá executar seu código.

Para saber como implantar o arquivo .zip para criar uma função do Lambda ou atualizar uma já existente, consulte Criação e atualização de funções do Lambda em Ruby usando arquivos .zip.

Criar um pacote de implantação .zip com dependências

Caso o código de função dependa de gems do Ruby adicionais, você pode adicionar essas dependências ao arquivo .zip com o código de função ou usar uma camada do Lambda. As instruções nesta seção mostram como incluir as dependências no pacote de implantação .zip. Para obter instruções sobre como incluir suas dependências em uma camada, consulte Criar uma camada Ruby para suas dependências.

Suponha que o código de função esteja salvo em um arquivo denominado lambda_function.rb no diretório do seu projeto. Os exemplos de comandos da CLI a seguir criam um arquivo .zip denominado my_deployment_package.zip que contém o código da função e suas dependências.

Para criar o pacote de implantação
  1. No diretório do seu projeto, crie um Gemfile para especificar as dependências.

    bundle init
  2. Usando o editor de texto preferencial, edite o Gemfile para especificar as dependências da função. Por exemplo, para usar a gem TZInfo, edite o Gemfile para que se assemelhe ao apresentado a seguir.

    source "https://rubygems.org" gem "tzinfo"
  3. Execute o comando a seguir para instalar as gems especificadas no Gemfile no diretório do seu projeto. Este comando define vendor/bundle como o caminho padrão para instalações de gem.

    bundle config set --local path 'vendor/bundle' && bundle install

    Você deve ver saída semelhante ao seguinte:

    Fetching gem metadata from https://rubygems.org/........... Resolving dependencies... Using bundler 2.4.13 Fetching tzinfo 2.0.6 Installing tzinfo 2.0.6 ...
    nota

    Para instalar gems de forma global novamente em outro momento, execute o comando a seguir.

    bundle config set --local system 'true'
  4. Crie um arquivo .zip compactado contendo o arquivo lambda_function.rb com o código do manipulador da função e as dependências instaladas na etapa anterior.

    zip -r my_deployment_package.zip lambda_function.rb vendor

    Você deve ver saída semelhante ao seguinte:

    adding: lambda_function.rb (deflated 37%) adding: vendor/ (stored 0%) adding: vendor/bundle/ (stored 0%) adding: vendor/bundle/ruby/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/build_info/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/cache/ (stored 0%) adding: vendor/bundle/ruby/3.2.0/cache/aws-eventstream-1.0.1.gem (deflated 36%) ...

Criar uma camada Ruby para suas dependências

Para saber mais como empacotar dependências do Ruby em uma camada do Lambda, consulte Como trabalhar com camadas em Ruby para funções do Lambda.

Criar pacotes de implantação .zip com bibliotecas nativas

Muitas gems conhecidas do Ruby, como nokogiri, nio4r e mysql, contêm extensões nativas gravadas em C. Ao adicionar bibliotecas contendo código C ao pacote de implantação, é necessário compilar o pacote corretamente para garantir que seja compatível com o ambiente de execução do Lambda.

Para aplicações de produção, recomendamos desenvolver e implantar o código usando o AWS Serverless Application Model (AWS SAM). No AWS SAM, use a opção sam build --use-container para desenvolver a função dentro de um contêiner do Docker semelhante ao Lambda. Para saber mais sobre como usar o AWS SAM para implantar o código de função, consulte Building applications no Guia do desenvolvedor do AWS SAM.

Para criar um pacote de implantação .zip contendo gems com extensões nativas sem usar o AWS SAM, como alternativa, você pode usar um contêiner para empacotar suas dependências em um ambiente igual ao ambiente de runtime do Ruby no Lambda. Para concluir essas etapas, você deve ter o Docker instalado em sua máquina de compilação. Para saber mais sobre a instalação do Docker, consulte Install Docker Engine.

Criar um pacote de implantação .zip em um contêiner do Docker
  1. Crie uma pasta em sua máquina de compilação local para salvar o contêiner. Dentro dessa pasta, crie um arquivo chamado dockerfile e cole o código a seguir nele.

    FROM public.ecr.aws/sam/build-ruby3.2:latest-x86_64 RUN gem update bundler CMD "/bin/bash"
  2. Dentro da pasta em que você criou o dockerfile, execute o comando a seguir para criar o contêiner do Docker.

    docker build -t awsruby32 .
  3. Navegue até o diretório do projeto que contém o arquivo .rb com o código do manipulador da função e o Gemfile especificando as dependências da função. De dentro desse diretório, execute o comando a seguir para iniciar o contêiner do Ruby no Lambda.

    Linux/MacOS
    docker run --rm -it -v $PWD:/var/task -w /var/task awsruby32
    nota

    No MacOS, você pode visualizar um aviso informando que a plataforma da imagem solicitada não corresponde à plataforma de host detectada. Ignore esse aviso.

    Windows PowerShell
    docker run --rm -it -v ${pwd}:var/task -w /var/task awsruby32
    docker run --rm -it -v $PWD:/var/task -w /var/task awsruby32
    nota

    No MacOS, você pode visualizar um aviso informando que a plataforma da imagem solicitada não corresponde à plataforma de host detectada. Ignore esse aviso.

    Quando o contêiner for iniciado, você deverá ver um prompt de bash.

    bash-4.2#
  4. Configure o utilitário empacotado para instalar as gems especificadas no Gemfile em um diretório local de vendor/bundle e instale as dependências.

    bash-4.2# bundle config set --local path 'vendor/bundle' && bundle install
  5. Crie o pacote de implantação .zip com o código de função e as dependências. Neste exemplo, o arquivo que contém o código do manipulador da função é denominado lambda_function.rb.

    bash-4.2# zip -r my_deployment_package.zip lambda_function.rb vendor
  6. Saia do contêiner e retorne ao diretório local do projeto.

    bash-4.2# exit

    Agora é possível usar o pacote de implantação de arquivo .zip para criar ou atualizar sua função do Lambda. Consulte Criação e atualização de funções do Lambda em Ruby usando arquivos .zip

Criação e atualização de funções do Lambda em Ruby usando arquivos .zip

Depois de criar o pacote de implantação .zip, você poderá usá-lo para criar uma função do Lambda ou atualizar uma existente. É possível implantar o pacote .zip usando o console do Lambda, a AWS Command Line Interface e a API do Lambda. Você também pode criar e atualizar funções do Lambda usando o AWS Serverless Application Model (AWS SAM) e o AWS CloudFormation.

O tamanho máximo de um pacote de implantação .zip para o Lambda é 250 MB (descompactado). Esse limite se aplica ao tamanho combinado de todos os arquivos que você carrega, inclusive qualquer camada do Lambda.

O runtime do Lambda precisa de permissão para ler os arquivos no pacote de implantação. Na notação octal de permissões do Linux, o Lambda precisa de 644 permissões para arquivos não executáveis (rw-r--r--) e 755 permissões (rwxr-xr-x) para diretórios e arquivos executáveis.

No Linux e no MacOS, use o comando chmod para alterar as permissões de arquivo em arquivos e diretórios do seu pacote de implantação. Por exemplo, para dar a um arquivo não executável as permissões corretas, execute o comando a seguir.

chmod 644 <filepath>

Para alterar as permissões de arquivo no Windows, consulte Set, View, Change, or Remove Permissions on an Object na documentação do Microsoft Windows.

nota

Se você não conceder ao Lambda as permissões necessárias para acessar diretórios no seu pacote de implantação, o Lambda definirá as permissões desses diretórios como 755 (rwxr-xr-x).

Criar e atualizar funções com arquivos .zip usando o console

Para criar uma nova função, você deve primeiro criar a função no console e depois carregar o arquivo .zip. Para atualizar uma função existente, abra a página da função e siga o mesmo procedimento para adicionar o arquivo .zip atualizado.

Se o arquivo .zip for menor que 50 MB, você poderá criar ou atualizar uma função carregando o arquivo diretamente da máquina local. Para arquivos .zip maiores que 50 MB, você deve primeiro carregar o pacote para um bucket do Amazon S3. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando o AWS Management Console, consulte Conceitos básicos do Amazon S3. Para carregar arquivos usando a AWS CLI, consulte Mover objetos no Guia do usuário da AWS CLI.

nota

Você não pode alterar o tipo de pacote de implantação (.zip ou imagem de contêiner) de uma função existente. Por exemplo, você não pode converter uma função de imagem de contêiner para usar um arquivo compactado .zip. É necessário criar uma nova função.

Para criar uma função (console)
  1. Abra a página Funções do console do Lambda e escolha Criar função.

  2. Escolha Author from scratch (Criar do zero).

  3. Em Basic information (Informações básicas), faça o seguinte:

    1. Em Nome da função, insira o nome da função.

    2. Em Runtime, selecione o runtime que você deseja usar.

    3. (Opcional) Em Arquitetura, escolha a arquitetura do conjunto de instruções para a função. O valor da arquitetura padrão é X86_64. Certifique-se de que o pacote de implantação .zip da função seja compatível com a arquitetura do conjunto de instruções que você escolheu.

  4. (Opcional) Em Permissões, expanda Alterar função de execução padrão. Crie uma função de execução ou use uma existente.

  5. Escolha a opção Criar função. O Lambda cria uma função básica “Hello world” usando o runtime escolhido.

Você pode carregar o arquivo .zip da máquina local (console)
  1. Na página Funções do console Lambda, escolha a função para a qual você deseja carregar o arquivo .zip.

  2. Selecione a guia Código.

  3. No painel do Código-fonte, escolha Carregar de.

  4. Escolha o arquivo .zip.

  5. Para carregar o arquivo .zip, faça o seguinte:

    1. Selecione Carregar e, em seguida, selecione o arquivo .zip no seletor de arquivos.

    2. Escolha Open (Abrir).

    3. Escolha Salvar.

Para carregar um arquivo .zip de um bucket do Amazon S3 (console)
  1. Na página Funções do console do Lambda, escolha a função para a qual você deseja carregar um novo arquivo .zip.

  2. Selecione a guia Código.

  3. No painel do Código-fonte, escolha Carregar de.

  4. Escolha Local do Amazon S3.

  5. Cole o URL do link do Amazon S3 do arquivo .zip e escolha Salvar.

Atualizar funções do arquivo .zip usando o editor de código do console

Para algumas funções com pacotes de implantação .zip, você pode usar o editor de código integrado do console do Lambda para atualizar o código da função diretamente. Para usar esse recurso, a função deve atender aos seguintes critérios:

  • A função deve usar um dos runtimes da linguagem interpretada (Python, Node.js ou Ruby)

  • O pacote de implantação da função precisa ter menos de 50 MB (sem compactação).

O código das funções com pacotes de implantação de imagens de contêiner não pode ser editado diretamente no console.

Para atualizar o código da função usando o editor de código do console
  1. Abra a página Funções do console do Lambda e selecione a função.

  2. Selecione a guia Código.

  3. No painel Código-fonte, selecione o arquivo de código-fonte e edite-o no editor de código integrado.

  4. Na seção DEPLOY, escolha Implantar para atualizar o código da função:

    Botão de implantação no editor de código do console do Lambda

Criar e atualizar funções com arquivos .zip usando a AWS CLI

Você pode usar a AWS CLI para criar uma função ou atualizar uma existente usando um arquivo .zip. Use os comandos create-function e update-function-code para implantar o pacote .zip. Se o arquivo .zip for menor que 50 MB, você poderá carregar o pacote .zip de um local do arquivo na máquina de compilação local. Para arquivos .zip maiores, você deve carregar o pacote .zip de um bucket do Amazon S3. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando a AWS CLI, consulte Mover objetos no Guia do usuário da AWS CLI.

nota

Se você carregar o arquivo .zip de um bucket do Amazon S3 usando a AWS CLI, o bucket deverá estar na mesma Região da AWS que sua função.

Para criar uma função usando um arquivo .zip com a AWS CLI, você deve especificar o seguinte:

  • O nome da função (--function-name)

  • O runtime da função (--runtime)

  • O nome do recurso da Amazon (ARN) da função de execução da função (--role)

  • O nome do método do manipulador no código da função (--handler)

Você também deve especificar a local do arquivo .zip. Se o arquivo .zip estiver localizado em uma pasta da máquina de compilação local, use a opção --zip-file para especificar o caminho do arquivo, conforme mostrado no comando do exemplo a seguir.

aws lambda create-function --function-name myFunction \ --runtime ruby3.2 --handler lambda_function.lambda_handler \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --zip-file fileb://myFunction.zip

Para especificar o local do arquivo .zip em um bucket do Amazon S3, use a opção --code conforme mostrado no comando do exemplo a seguir. Você só precisa usar o parâmetro S3ObjectVersion para objetos com versionamento.

aws lambda create-function --function-name myFunction \ --runtime ruby3.2 --handler lambda_function.lambda_handler \ --role arn:aws:iam::111122223333:role/service-role/my-lambda-role \ --code S3Bucket=amzn-s3-demo-bucket,S3Key=myFileName.zip,S3ObjectVersion=myObjectVersion

Para atualizar uma função existente usando a CLI, especifique o nome da função usando o parâmetro --function-name. Você também deve especificar o local do arquivo .zip que deseja usar para atualizar o código da função. Se o arquivo .zip estiver localizado em uma pasta da máquina de compilação local, use a opção --zip-file para especificar o caminho do arquivo, conforme mostrado no comando do exemplo a seguir.

aws lambda update-function-code --function-name myFunction \ --zip-file fileb://myFunction.zip

Para especificar o local do arquivo .zip em um bucket do Amazon S3, use as opções --s3-bucket e --s3-key conforme mostrado no comando do exemplo a seguir. Você só precisa usar o parâmetro --s3-object-version para objetos com versionamento.

aws lambda update-function-code --function-name myFunction \ --s3-bucket amzn-s3-demo-bucket --s3-key myFileName.zip --s3-object-version myObject Version

Criar e atualizar funções com arquivos .zip usando a API do Lamba

Para criar e atualizar funções usando um arquivo .zip, use as seguintes operações de API:

Criar e atualizar funções com arquivos .zip usando o AWS SAM

O AWS Serverless Application Model (AWS SAM) é um kit de ferramentas que ajuda a simplificar o processo de criação e execução de aplicações com tecnologia sem servidor na AWS. Você define os recursos para a aplicação em um modelo YAML ou JSON e usa a interface da linha de comando do AWS SAM (CLI do AWS SAM) para criar, empacotar e implantar aplicações. Quando você cria uma função do Lambda com base em um modelo do AWS SAM, o AWS SAM cria automaticamente um pacote de implantação .zip ou uma imagem de contêiner com o código da função e quaisquer dependências que você especificar. Para saber mais sobre como usar o AWS SAM para criar e implantar funções do Lambda, consulte Conceitos básicos do AWS SAM no Guia do desenvolvedor do AWS Serverless Application Model.

Você também pode usar o AWS SAM para criar uma função do Lambda usando um arquivo .zip existente. Para criar uma função do Lambda usando o AWS SAM, salve o arquivo .zip em um bucket do Amazon S3 ou em uma pasta local na máquina de compilação. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando a AWS CLI, consulte Mover objetos no Guia do usuário da AWS CLI.

No modelo do AWS SAM, o recurso AWS::Serverless::Function especifica a função do Lambda. Nesse recurso, defina as seguintes propriedades para criar uma função usando um arquivo .zip:

  • PackageType: definir como Zip

  • CodeUri: definir como o URI do Amazon S3 do código da função, o caminho para a pasta local ou o objeto FunctionCode

  • Runtime: definir como o runtime escolhido

Com o AWS SAM, se o arquivo .zip for maior que 50 MB, você não precisará carregá-lo primeiro em um bucket do Amazon S3. O AWS SAM poderá carregar pacotes .zip com o tamanho máximo permitido de 250 MB (descompactados) de um local da máquina de compilação local.

Para saber mais sobre a implantação de funções usando o arquivo .zip no AWS SAM, consulte AWS::Serverless::Function no Guia do desenvolvedor do AWS SAM.

Criar e atualizar funções com arquivos .zip usando o AWS CloudFormation

Você pode usar o AWS CloudFormation para criar uma função do Lambda usando um arquivo .zip. Para criar uma função do Lambda de um arquivo.zip, primeiro carregue o arquivo em um bucket do Amazon S3. Para obter instruções sobre como carregar um arquivo para um bucket do Amazon S3 usando a AWS CLI, consulte Mover objetos no Guia do usuário da AWS CLI. 

No modelo do AWS CloudFormation, o recurso AWS::Lambda::Function especifica a função do Lambda. Nesse recurso, defina as seguintes propriedades para criar uma função usando um arquivo .zip:

  • PackageType: definir como Zip

  • Code: inserir o nome do bucket do Amazon S3 e o nome do arquivo .zip nos campos S3Bucket e S3Key

  • Runtime: definir como o runtime escolhido

O arquivo .zip que o AWS CloudFormation gera não pode exceder 4 MB. Para saber mais sobre a implantação de funções usando o arquivo .zip no AWS CloudFormation, consulte AWS::Lambda::Function no Guia do desenvolvedor do AWS CloudFormation.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.