AWS Lambda
Guia do desenvolvedor

Pacote de implantação do AWS Lambda no 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 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 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 baixo o tamanho do pacote de implantação, 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. Consulte Camadas do AWS Lambda para mais detalhes.

Os arquivos em seu pacote de implantação devem ter um modo de arquivo apropriado para ser executado no Lambda. Para mais informações, consulte Políticas de permissões sobre pacotes de implantação do Lambda.

Atualização de uma função sem dependências

Para criar ou atualizar uma função com a API do Lambda, crie um arquivo que contém o seu código de função e faça upload dele com 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", "CodeSize": 300, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }

Atualização de 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.5.0/ (stored 0%) adding: vendor/bundle/ruby/2.5.0/build_info/ (stored 0%) adding: vendor/bundle/ruby/2.5.0/cache/ (stored 0%) adding: vendor/bundle/ruby/2.5.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, "Description": "", "Timeout": 3, "MemorySize": 128, "LastModified": "2018-11-23T21:00:10.248+0000", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d" }