将 Amazon SAM 与 CodeBuild Lambda Java 结合使用来部署 Lambda 函数
Amazon Serverless Application Model(Amazon SAM)是一个开源框架,用于构建无服务器应用程序。有关更多信息,请参阅 GitHub 上的 Amazon Serverless Application Model 存储库
设置 Amazon SAM 存储库
使用 Amazon SAM CLI 创建 Amazon SAM Hello World
项目。
创建 Amazon SAM 项目
-
按照《Amazon Serverless Application Model 开发人员指南》中的说明在本地计算机上安装 Amazon SAM CLI。
-
运行
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>
-
将 Amazon SAM 项目文件夹上传到支持的源存储库。有关支持的源类型列表,请参阅 ProjectSource。
创建 CodeBuild Lambda Java 项目
创建 Amazon CodeBuild Lambda Java 项目并设置构建所需的 IAM 权限。
创建 CodeBuild Lambda Java 项目
-
从 https://console.aws.amazon.com/codesuite/codebuild/home
打开 Amazon CodeBuild 控制台。 -
如果显示了 CodeBuild 信息页面,请选择创建构建项目。否则,请在导航窗格中,展开构建,选择构建项目,然后选择创建构建项目。
在项目名称中,输入此构建项目的名称。构建项目名称在您的各个 Amazon 账户内必须是唯一的。您还可以包含构建项目的可选描述,以帮助其他用户了解此项目的用途。
-
在源中,选择 Amazon SAM 项目所在的源存储库。
-
在环境中:
-
在计算中,选择 Lambda。
-
在运行时中,选择 Java。
-
在映像中,选择 aws/codebuild/amazonlinux-x86_64-lambda-standard:corretto21。
-
在服务角色中,选中新服务角色。记下角色名称。在本示例稍后更新项目的 IAM 权限时,会需要角色名称。
-
-
选择 Create build project(创建构建项目)。
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在导航窗格中,选择角色,然后选择与项目关联的服务角色。您可以在 CodeBuild 中找到您的项目角色,方法是选择您的构建项目,依次选择编辑、环境和服务角色。
-
选择 Trust relationships(信任关系)选项卡,然后选择 Edit trust policy(编辑信任策略)。
-
将以下内联策略附加到您的 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
-
在 CodeBuild 控制台中,选择您的构建项目,然后选择编辑和 Buildspec。
-
在 Buildspec 中,选择插入构建命令,然后选择切换到编辑器。
-
删除预先填入的构建命令并粘贴以下 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
-
选择更新 buildspec。
部署 Amazon SAM Lambda 基础设施
使用 CodeBuild Lambda 自动部署 Lambda 基础设施
部署 Lambda 基础设施
-
选择启动构建。这将使用 Amazon CloudFormation 自动构建、测试您的 Amazon SAM 应用程序并将其部署到 Amazon Lambda。
-
构建完成后,导航到 Amazon Lambda 控制台并在 Amazon SAM 项目名称下搜索您的新 Lambda 函数。
-
在函数概览下面选择 API Gateway,然后单击 API 端点 URL,测试您的 Lambda 函数。您应该会看到一个页面打开,其中包含以下消息:
"message": "hello world"
。
清除基础设施
为避免对您在本教程中所用资源收取更多费用,请删除您的 Amazon SAM 模板和 CodeBuild 创建的资源。
清除基础设施
-
导航到 Amazon CloudFormation 控制台并选择
aws-sam-cli-managed-default
。 -
在资源中,清空部署存储桶
SamCliSourceBucket
。 -
删除
aws-sam-cli-managed-default
堆栈。 -
删除与您的 Amazon SAM 项目关联的 Amazon CloudFormation 堆栈。此堆栈的名称应与您的 Amazon SAM 项目相同。
-
导航到 CloudWatch 控制台,删除与您的 CodeBuild 项目关联的 CloudWatch 日志组。
-
导航到 CodeBuild 控制台,然后通过选择删除构建项目来删除您的 CodeBuild 项目。