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