Pacote de implantação do AWS Lambda em Ruby - AWS Lambda

Pacote de implantação do AWS Lambda em Ruby

Um pacote de implantação é um arquivo ZIP que contém as dependências e o código da função. Você precisará criar um pacote de implantação se usar a API do Lambda para gerenciar funções ou se for necessário incluir bibliotecas e dependências diferentes do AWS SDK. Você pode fazer upload do pacote diretamente no Lambda ou pode usar um bucket do Amazon S3 e fazer upload dele no Lambda. Se o pacote de implantação for maior do que 50 MB, você deverá usar Amazon S3.

Se você usar o editor do console do Lambda para criar a função, o console gerenciará o pacote de implantação. Você pode usar esse método, desde que não precise adicionar bibliotecas. Você também pode usá-lo para atualizar uma função que já tem bibliotecas no pacote de implantação, desde que o tamanho total não exceda 3 MB.

nota

Para manter o pacote de implantação pequeno, empacote as dependências da função em camadas. As camadas permitem gerenciar as suas dependências de forma independente, podem ser usadas por várias funções e podem ser compartilhadas com outras contas. Para obter mais detalhes, consulte Camadas do AWS Lambda.

Atualizar uma função sem dependências

Para atualizar uma função usando a API do Lambda, use a operação UpdateFunctionCode. Crie um arquivo que contenha o código de função e faça upload dele usando a AWS CLI.

Como atualizar uma função do Ruby sem dependências

  1. Crie um arquivo ZIP.

    ~/my-function$ zip function.zip function.rb
  2. Use o comando update-function-code para fazer upload do pacote.

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "ruby2.5", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d", ... }

Atualizar uma função com dependências adicionais

Se a sua função depender de bibliotecas diferentes de AWS SDK para Ruby, instale-as em um diretório local com Bundler e as inclua em seu pacote de implantação.

Como atualizar uma função do Ruby com dependências

  1. Instale bibliotecas no diretório do fornecedor com o comando bundle.

    ~/my-function$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.............. Resolving dependencies... Fetching aws-eventstream 1.0.1 Installing aws-eventstream 1.0.1 ...

    O --path instala os gems no diretório do projeto em vez de no local do sistema e define-o como o caminho padrão para futuras instalações. Para instalar gems posteriores globalmente, use a opção --system.

  2. Crie um arquivo ZIP.

    package$ zip -r function.zip function.rb vendor adding: function.rb (deflated 37%) adding: vendor/ (stored 0%) adding: vendor/bundle/ (stored 0%) adding: vendor/bundle/ruby/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/build_info/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/cache/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/cache/aws-eventstream-1.0.1.gem (deflated 36%) ...
  3. Atualize o código da função.

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "ruby2.5", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "CodeSize": 300, "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d", ... }