无服务器应用程序模型 101

SAM 是 AWS 开发的 OSS 框架,可简化无服务器应用程序(具有 API 网关、Lambda、DynamoDB 和面向事件的应用程序)的部署和管理。SAM 扩展了 AWS CloudFormation,提供专为无服务器资源(例如事件触发器和侦听器,甚至可供使用的策略模板)而设计的简化语法。

  CommunityBuilderFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: first_article/
      Handler: app.lambda_handler
      FunctionName: get-first-article
      Events:
        ArticleEvent:
          Type: Api
          Properties:
            Path: /v1/articles
            Method: post
            RestApiId: !Ref ApiDeployment

好处:
简化无服务器应用程序开发:借助 AWS SAM,开发人员可以在声明性模板中轻松定义应用程序的资源、事件和依赖项,从而轻松理解和维护应用程序的架构。
本地开发和测试:无服务器开发的挑战之一是缺乏本地开发环境。AWS SAM 通过提供本地开发和测试体验来应对这一挑战。开发人员可以使用 AWS SAM CLI(命令行界面)在本地运行无服务器应用程序,模拟 AWS Lambda 执行环境。Bring the developer to the cloud
部署和基础设施即代码: AWS SAM 利用 AWS CloudFormation 为无服务器应用程序提供基础设施即代码功能。
内置最佳实践: AWS SAM 还包括自动资源创建,例如 IAM 角色和策略,减少了设置这些资源所需的手动工作,您有一些预定义的策略,并且可以根据需要进行细化

Policies:
   - DynamoDBCrudPolicy:
       TableName: CommunityTable

简化的 CI/CD:您可以使用 SAM CLI 与流行的 CI/CD 提供商(例如 GitHub Actions、CodePipeline 和 GitLab)集成。运行sam pipeline init --bootstrap并遵循配置来创建所需的资源和特定于提供程序的默认模板文件。然后,您可以对其进行优化和调整,以满足您的特定需求。
初始化一个项目
sam init

SAM CLI - [安装 SAM CLI ]

Python - [ Python 3 ]

Docker - [安装 Docker 社区版]要首次构建和部署应用程序,请在 shell 中运行以下命令:
要首次构建和部署应用程序,请在 shell 中运行以下命令:

sam build --use-container
sam deploy --guided

第一个命令将构建应用程序的源代码。

第二个命令将打包您的应用程序并将其部署到 AWS,并出现一系列提示:

堆栈名称:要部署到 CloudFormation 的堆栈的名称。这对于您的帐户和区域应该是唯一的,并且一个好的起点是与您的项目名称相匹配的名称。
AWS 区域:您要将应用程序部署到的 AWS 区域。
部署前确认更改:如果设置为“是”,则在执行之前将向您显示任何更改集以供手动审核。如果设置为 no,AWS SAM CLI 将自动部署应用程序更改。
允许 SAM CLI IAM 角色创建:许多 AWS SAM 模板(包括本示例)都会创建访问 AWS 服务所需的 AWS Lambda 函数所需的 AWS IAM 角色。默认情况下,这些权限的范围缩小到所需的最低权限。要部署创建或修改 IAM 角色的 AWS CloudFormation 堆栈,必须提供 的CAPABILITY_IAM值。capabilities如果未通过此提示提供权限,则要部署此示例,您必须显式地将 ` 传递–capabilities CAPABILITY_IAM给sam deploy命令。
将参数保存到 samconfig.toml:如果设置为 yes,您的选择将保存到项目内的配置文件中,以便将来您可以在sam deploy不带参数的情况下重新运行以将更改部署到应用程序。
使用 SAM CLI 在本地构建和测试
使用命令构建您的应用程序sam build --use-container。

SAM CLI 安装 中定义的依赖项/requirements.txt、创建部署包并将其保存在.aws-sam/build文件夹中。

通过使用测试事件直接调用单个函数来测试它。事件是一个 JSON 文档,表示函数从事件源接收的输入。

测试事件包含在该项目的events文件夹中。

在本地运行函数并使用sam local invoke命令调用它们。

sam local invoke HelloWorldFunction --event events/event.json

SAM CLI 还可以模拟您的应用程序的 API。使用sam local start-api在端口 3000 上本地运行 API。然后使用curl http://localhost:3000/

SAM CLI 读取应用程序模板以确定 API 的路由及其调用的函数。每个函数定义上的Events属性包括每个路径的路由和方法。

为您的应用程序创建新资源
AWS SAM 是 AWS CloudFormation 的扩展,具有更简单的语法,用于配置常见的无服务器应用程序资源,例如函数、触发器和 API。

对于非 SAM 的资源,您可以使用 CloudFormation。
在这里插入图片描述
获取 Lambda 日志
为了简化故障排除,SAM CLI 有一个名为 的命令sam logs。它允许您从命令行获取部署的 Lambda 函数生成的日志。除了在终端上打印日志之外,该命令还有几个功能可以帮助您快速找到错误。

sam logs -n HelloWorldFunction --stack-name builders-stack --tail

清理
要删除您创建的示例应用程序,请使用 AWS CLI。假设您使用项目名称作为堆栈名称,您可以运行以下命令:aws cloudformation delete-stack --stack-name builders-stack

结论
AWS 无服务器应用程序模型是一个功能强大的工具,可以简化无服务器应用程序的开发和管理。

它为开发人员提供内置的最佳实践、本地开发和测试功能、部署和基础设施即代码以及简化的 CI/CD。通过使用 SAM,开发人员可以专注于编写代码并为客户提供价值,而不必担心基础架构和部署。

关注我的博客,您将在其中获得提示、技巧和挑战,以保持您的技能敏锐。记得关注我哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q shen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值