AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

创建 .zip 部署程序包 (Java)

本节提供了创建 .zip 文件作为部署程序包的示例。您可以使用任何构建和打包工具来创建该 zip。不管使用何种工具,生成的 .zip 文件都必须采用下面的结构:

  • 所有编译的类文件和资源文件都必须位于根级别。

  • 运行代码所必需的全部 jar 都必须位于 /lib 目录中。

注意

此外,您还可以构建独立的 .jar(也称作压缩文件)作为部署程序包。有关使用 Maven 创建独立 .jar 的示例,请参阅创建部署程序包 (Java)

以下示例使用 Gradle 构建和部署工具创建 .zip。

重要

要求安装 Gradle 2.0 版或更高版本。

在您开始之前

您需要下载 Gradle。有关说明,请转到 gradle 网站:https://gradle.org/

示例 1:使用 Gradle 和 Maven Central 存储库创建 .zip

本演练结束时,项目目录 (project-dir) 将包含如下所示的内容结构:

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

/java 文件夹包含您的代码。例如,如果程序包名称为 example,其中有一个 Hello.java 类,则结构为:

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

构建项目后,生成的 .zip 文件(即部署程序包)将位于 project-dir/build/distributions 子目录中。

  1. 创建项目目录 (project-dir)。

  2. project-dir 中,创建 build.gradle 文件并添加以下内容:

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

    注意

    • 存储库部分指的是 Maven Central 存储库。在构建时,它从 Maven Central 获取依赖项(即:两个 AWS Lambda 库)。

    • buildZip 任务描述如何创建部署程序包 .zip 文件。

      例如,如果解压缩生成的 .zip 文件,可在根级别找到所有编译好的类文件和资源文件。此外,还可以找到一个包含运行代码所需的 jar 的 /lib 目录。

    • 在按照本指南中的其他教程主题操作时,某些特定的教程可能会要求您添加更多的依赖项。确保根据需要添加这些依赖项。

  3. project-dir 中,创建下面的结构:

    Copy
    project-dir/src/main/java/
  4. /java 子目录下,添加 Java 文件和文件夹结构(如果有)。例如,如果 Java 程序包名称是 example,源代码为 Hello.java,则目录结构如下所示:

    Copy
    project-dir/src/main/java/example/Hello.java
  5. 运行下面的 gradle 命令以构建项目并将其打包到一个 .zip 文件中。

    Copy
    project-dir> gradle build
  6. 验证生成的 project-dir.zip 文件位于 project-dir/build/distributions 子目录中。

  7. 现在,您可以将部署程序包(即 .zip 文件)上传到 AWS Lambda,以创建 Lambda 函数并使用示例事件数据手动调用它来进行测试。有关说明,请参阅 步骤 2.3:(可选)创建用 Java 编写的 Lambda 函数

示例 2:使用 Gradle 和本地 Jar 创建 .zip

您可以选择不使用 Maven Central 存储库,而是将所有依赖项都包含在项目文件夹中。在这种情况下,项目文件夹 (project-dir) 的结构如下:

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

因此,如果 Java 代码包含 example 程序包和 Hello.java 类,则代码将位于下面的子目录中:

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

您的 build.gradle 文件应为:

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

注意:依赖项指定 fileTree,后者将 project-dir/jars 标识为包含所有必需 jar 的子目录。

现在,您可以构建程序包了。运行下面的 gradle 命令以构建项目并将其打包到一个 .zip 文件中。

Copy
project-dir> gradle build