AWS Lambda
Guia do desenvolvedor

Criação de um pacote de implantação ZIP para uma função Java

Esta seção fornece exemplos de como criar um arquivo .zip como seu pacote de implantação. O pacote de implantação precisa ter a seguinte estrutura.

  • Todos os arquivos de classe compilados e os arquivos de recursos no nível raiz.

  • Todos os jars necessárias para executar o código no diretório /lib.

    nota

    O Lambda carrega JARs em ordem alfabética unicode. Se vários JARs na pasta lib contiverem a mesma classe, a primeira será usada. Use o script de shell a seguir para identificar classes duplicadas.

    exemplo test-zip.sh

    mkdir -p expanded unzip path/to/my/function.zip -d expanded find ./expanded/lib -name '*.jar' | xargs -n1 zipinfo -1 | grep '.*.class' | sort | uniq -c | sort

Você pode usar qualquer ferramenta de compilação e empacotamento para criar um pacote de implantação. Os exemplos a seguir usam a ferramenta de criação e implantação Gradle.

Antes de começar

Você precisará fazer download do Gradle versão 2.0 ou posterior. Para obter instruções, consulte o site do Gradle https://gradle.org/.

Exemplo 1: criação de .zip usando o Gradle e o repositório central do Maven

Ao fim desta demonstração, você terá um diretório do projeto (project-dir) com a seguinte estrutura de conteúdo:

project-dir/build.gradle project-dir/src/main/java/

A pasta /java conterá seu código. Por exemplo, se o nome do pacote for example, e você tiver uma classe Hello.java nele, a estrutura será:

project-dir/src/main/java/example/Hello.java

Após compilar o projeto, o arquivo .zip resultante, ou seja, seu pacote de implantação, estará no subdiretório project-dir/build/distributions.

  1. Crie um diretório do projeto (project-dir).

  2. Em project-dir, crie o arquivo build.gradle e adicione o seguinte conteúdo:

    apply plugin: 'java' repositories { mavenCentral() } dependencies { compile ( 'com.amazonaws:aws-lambda-java-core:1.2.0', 'com.amazonaws:aws-lambda-java-events:2.2.6' ) } task buildZip(type: Zip) { from compileJava from processResources into('lib') { from configurations.runtimeClasspath } } build.dependsOn buildZip

    nota

    • A seção de repositórios Maven se refere ao repositório central do Maven. No momento da compilação, ele busca as dependências (ou seja, as duas bibliotecas do AWS Lambda) no Maven Central.

    • A tarefa buildZip descreve como criar o arquivo .zip do pacote de implantação.

      Por exemplo, se descompactar o arquivo .zip resultante, você deverá encontrar qualquer um dos arquivos de classe compilados e os arquivos de recursos no nível raiz. Você também deve encontrar um diretório /lib com os jars necessários para executar o código.

    • Se você estiver seguindo outros tópicos do tutorial neste guia, os tutoriais específicos podem exigir que você adicione mais dependências. Adicione essas dependências conforme o necessário.

  3. Em project-dir, crie a seguinte estrutura:

    project-dir/src/main/java/
  4. No subdiretório /java, adicione, se houver, os arquivos Java e a estrutura da pasta. Por exemplo, se você o nome do pacote Java é example e o código-fonte é Hello.java, a estrutura do diretório é parecida a:

    project-dir/src/main/java/example/Hello.java
  5. Execute o seguinte comando do gradle para compilar e empacotar o projeto em um arquivo .zip.

    project-dir> gradle build
  6. Verificar o arquivo project-dir.zip resultante no subdiretório project-dir/build/distributions.

  7. Agora você pode fazer upload do arquivo .zip, o pacote de implantação no AWS Lambda, para criar uma função Lambda e testá-la manualmente, invocando-a com dados de evento de amostra. Para obter instruções, consulte Criar uma função do Lambda escrita em Java.

Exemplo 2: criação de .zip usando o Gradle com JARs locais

Você pode optar por não usar o repositório central do Maven. Em vez disso, tenha todas as dependências na pasta do projeto. Nesse caso, sua pasta do projeto (project-dir) terá a seguinte estrutura:

project-dir/jars/ (all jars go here)         project-dir/build.gradle          project-dir/src/main/java/ (your code goes here)

Portanto, se o seu código Java tiver o pacote example e a classe Hello.java, o código estará no seguinte subdiretório:

project-dir/src/main/java/example/Hello.java

O arquivo build.gradle deve ser da seguinte forma:

apply plugin: 'java' dependencies { compile fileTree(dir: 'jars', include: '*.jar') } task buildZip(type: Zip) { from compileJava from processResources into('lib') { from configurations.runtimeClasspath } } build.dependsOn buildZip

Observe que as dependências especificam o fileTree que identifica o project-dir/jars como o subdiretório que incluirá todos os jars necessários.

Agora, compile o pacote. Execute o seguinte comando do gradle para compilar e empacotar o projeto em um arquivo .zip.

project-dir> gradle build