将 Amazon SAM 与 CodeBuild Lambda Java 结合使用来部署 Lambda 函数 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 Amazon SAM 与 CodeBuild Lambda Java 结合使用来部署 Lambda 函数

Amazon Serverless Application Model(Amazon SAM)是一个开源框架,用于构建无服务器应用程序。有关更多信息,请参阅 GitHub 上的 Amazon Serverless Application Model 存储库。以下 Java 示例使用 Gradle 来构建和测试 Amazon Lambda 函数。之后,系统会使用 Amazon SAM CLI 来部署 Amazon CloudFormation 模板和部署包。通过使用 CodeBuild Lambda,可以自动处理构建、测试和部署步骤,从而无需手动干预,即可在单个构建中快速更新基础设施。

设置 Amazon SAM 存储库

使用 Amazon SAM CLI 创建 Amazon SAM Hello World 项目。

创建 Amazon SAM 项目
  1. 按照《Amazon Serverless Application Model 开发人员指南》中的说明在本地计算机上安装 Amazon SAM CLI

  2. 运行 sam init 并选择以下项目配置。

    Which template source would you like to use?: 1 - AWS Quick Start Templates Choose an AWS Quick Start application template: 1 - Hello World Example Use the most popular runtime and package type? (Python and zip) [y/N]: N Which runtime would you like to use?: 8 - java21 What package type would you like to use?: 1 - Zip Which dependency manager would you like to use?: 1 - gradle Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N Would you like to enable monitoring using CloudWatch Application Insights? [y/N]: N Would you like to set Structured Logging in JSON format on your Lambda functions? [y/N]: N Project name [sam-app]: <insert project name>
  3. 将 Amazon SAM 项目文件夹上传到支持的源存储库。有关支持的源类型列表,请参阅 ProjectSource

创建 CodeBuild Lambda Java 项目

创建 Amazon CodeBuild Lambda Java 项目并设置构建所需的 IAM 权限。

创建 CodeBuild Lambda Java 项目
  1. https://console.aws.amazon.com/codesuite/codebuild/home 打开 Amazon CodeBuild 控制台。

  2. 如果显示了 CodeBuild 信息页面,请选择创建构建项目。否则,请在导航窗格中,展开构建,选择构建项目,然后选择创建构建项目

  3. 项目名称中,输入此构建项目的名称。构建项目名称在您的各个 Amazon 账户内必须是唯一的。您还可以包含构建项目的可选描述,以帮助其他用户了解此项目的用途。

  4. 中,选择 Amazon SAM 项目所在的源存储库。

  5. 环境中:

    • 计算中,选择 Lambda

    • 运行时中,选择 Java

    • 映像中,选择 aws/codebuild/amazonlinux-x86_64-lambda-standard:corretto21

    • 服务角色中,选中新服务角色。记下角色名称。在本示例稍后更新项目的 IAM 权限时,会需要角色名称。

  6. 选择 Create build project(创建构建项目)

  7. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  8. 在导航窗格中,选择角色,然后选择与项目关联的服务角色。您可以在 CodeBuild 中找到您的项目角色,方法是选择您的构建项目,依次选择编辑环境服务角色

  9. 选择 Trust relationships(信任关系)选项卡,然后选择 Edit trust policy(编辑信任策略)。

  10. 将以下内联策略附加到您的 IAM 角色。以后要使用该角色来部署 Amazon SAM 基础设施。有关更多信息,请参阅《 IAM 用户指南》中的添加和删​​除 IAM 身份权限

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "cloudformation:*", "lambda:*", "iam:*", "apigateway:*", "s3:*" ], "Resource": [ "*" ] } ] }

设置项目 buildspec

为了构建、测试和部署 Lambda 函数,CodeBuild 会读取并执行 buildspec 中的构建命令。

设置项目 buildspec
  1. 在 CodeBuild 控制台中,选择您的构建项目,然后选择编辑Buildspec

  2. Buildspec 中,选择插入构建命令,然后选择切换到编辑器

  3. 删除预先填入的构建命令并粘贴以下 buildspec。

    version: 0.2 env: variables: GRADLE_DIR: "HelloWorldFunction" phases: build: commands: - echo "Running unit tests..." - cd $GRADLE_DIR; gradle test; cd .. - echo "Running build..." - sam build --template-file template.yaml - echo "Running deploy..." - sam package --output-template-file packaged.yaml --resolve-s3 --template-file template.yaml - yes | sam deploy
  4. 选择更新 buildspec

部署 Amazon SAM Lambda 基础设施

使用 CodeBuild Lambda 自动部署 Lambda 基础设施

部署 Lambda 基础设施
  1. 选择启动构建。这将使用 Amazon CloudFormation 自动构建、测试您的 Amazon SAM 应用程序并将其部署到 Amazon Lambda。

  2. 构建完成后,导航到 Amazon Lambda 控制台并在 Amazon SAM 项目名称下搜索您的新 Lambda 函数。

  3. 函数概览下面选择 API Gateway,然后单击 API 端点 URL,测试您的 Lambda 函数。您应该会看到一个页面打开,其中包含以下消息:"message": "hello world"

清除基础设施

为避免对您在本教程中所用资源收取更多费用,请删除您的 Amazon SAM 模板和 CodeBuild 创建的资源。

清除基础设施
  1. 导航到 Amazon CloudFormation 控制台并选择 aws-sam-cli-managed-default

  2. 资源中,清空部署存储桶 SamCliSourceBucket

  3. 删除 aws-sam-cli-managed-default 堆栈。

  4. 删除与您的 Amazon SAM 项目关联的 Amazon CloudFormation 堆栈。此堆栈的名称应与您的 Amazon SAM 项目相同。

  5. 导航到 CloudWatch 控制台,删除与您的 CodeBuild 项目关联的 CloudWatch 日志组。

  6. 导航到 CodeBuild 控制台,然后通过选择删除构建项目来删除您的 CodeBuild 项目。