亚马逊AWS官方博客

Tag: AWS Lambda

适用于 AWS Lambda 的 Dart 运行时简介

Dart 是一种发展迅速的开源编程语言,并且能为一些快速发展的开源项目提供支持,如 Flutter。借助自定义 AWS Lambda 运行时,您可以在 AWS Lambda 中运行 Dart。以 Dart 编写函数有助于让您使用自己的技能开发移动应用程序,从而建立无服务器后端。您也可以在应用程序和后端之间共享代码,并且使用静态类型语言的强大功能。本篇博文将阐释我们如何通过自定义 Lambda 运行时来提供语言支持,以及如何以 Dart 创建 Lambda 函数。文章还将分享一些诀窍,在您的构建过程中助您一臂之力。

Read More

使用高级 Amazon CloudWatch 指标和 AWS Lambda 通过空闲检查和自动资源终止优化 Amazon EMR 成本

在这篇博文中,我们将提出一种解决方案来减少这方面的成本。我们实施了一个 bash 脚本,将其安装在 EMR 集群的主节点上,并将该脚本计划为每 5 分钟运行一次。该脚本可监控集群并每 5 分钟向 CloudWatch 发送一次自定义指标 EMR-INUSE(0=非活动;1=活动)。如果 CloudWatch 在一些预定义数据点收到 0(非活动),则将触发警报,然后执行终止集群的 AWS Lambda 函数。

Read More

使用AWS Lambda和AWS Step Functions轻松构建Serverless应用

作者: Vivian Zhang(张芸) Serverless(无服务器)应用可以说是当前的行业热点,用户无需预配置或管理服务器,只需要部署功能代码,AWS Lambda会在需要的时候执行代码并自动缩放, 从每天几个请求到每秒数千个请求,轻松地实现FaaS (Function as a Service)。无服务器应用的使用场景非常广阔,从微服务架构,到批处理、流处理、运维自动化和移动计算。 实现Serverless应用,除了AWS Lambda还需要什么? 我们来看一个典型的基于Lambda的无服务器应用。 当我们将作为计算和存储实体的Lambda函数、消息队列、DB去掉,可以看到下面这张图。 这张图上的箭头,就是上一张图里Lambda函数之间的流程,或者可以称为Lambda函数之间的“胶水”,它们起到了编排协调各个Lambda函数的作用。通常在应用中,我们会需要有这样的一些流程: 我想要顺序地执行方法。 我想要并行地运行这些方法。 我想要基于数据选择执行方法。 我想要重试某些方法。 我想要try/catch/finally。 我想要代码运行一定时间或者等待一段时间…… 通常我们可以通过方法调用、函数链、DB和消息队列来协调这些函数,实现流程。但是对于所采用的协调机制,我们都希望它具有以下功能: 可以自动伸缩; 不会丢失状态; 可以处理错误和超时; 可以简单的搭建和运维; 可以审计。 这里我们介绍一种方式,采用AWS Step Functions协调Lambda函数之间的流程。 AWS Step Functions AWS Step Functions是一个可视工作流服务,可用来轻松协调分布式应用程序和微服务的各个组件。用户从单个组件构建应用程序,每个组件都执行一个特定的功能,也就是Task(可以采用Lambda函数实现)。Step Functions提供了一种可靠的方法来协调这些组件并逐步完成应用程序中的这些功能,并且 提供了一个图形控制台,将应用程序的组件可视化为一系列步骤,它可以自动触发并跟踪每一个步骤,并在出现错误时重试,这样应用程序就可以每一次都按照预先设定的顺序执行。Step Functions会记录每一步的状态,因此当事情出错时,用户可以快速地诊断和调试问题。 要使用Step Functions构建应用,首先我们需要在Step Functions里创建State Machine(状态机),也就是对应每一个应用的工作流程。可以采用以下8种蓝图,包括7种预定义好的状态机和1种自定义的。创建好的状态机用JSON描述。 在每一个状态机里,我们需要定义一系列的State(状态),用来完成不同的功能: Task:在状态机中完成特定的功能,可以采用Lambda函数实现。 Choice:在各种执行分支中进行选择。 Fail和Success:停止一个执行,并设为Fail或者Success。 Pass:简单地将输入传给输出,或者注入一些数据。 Wait:提供一定时间的延迟,或者等待到特定的时间/数据。 Parallel:并行地执行分支。 可以看出,上一节中我们所需要的协调和流程在这些状态中都得到了支持。其中的Task状态是用来真正实现应用的功能,而其他状态用来处理功能之间的流程。比如说,下面是一个名为HelloWorld,执行Lambda函数的状态。 下图是一个拥有所有状态的状态机: 在Console里看到一个创建好的状态机是这样: 我们点击New Execution并且传入input数据,就可以启动该状态机的一次执行,并且可以从界面上查看执行的情况。 […]

Read More

新工具 – AWS SAM Local (Beta 版) – 在本地构建和测试无服务器应用程序

今天,我们将发布一款新工具 — SAM Local (Beta 版)。使用这款工具,您可以轻松在本地构建和测试无服务器应用程序。在本文中,我们将使用 SAM Local 快速构建、调试并部署一款应用程序,该应用程序允许我们通过对终端节点运行 curl 命令给 Tabs 或 Spaces 投票。AWS 去年推出了无服务器应用程序模式 (SAM),让开发人员能够更轻松地部署无服务器应用程序。如果您还不熟悉 SAM,请阅读我的同事 Orr 发布的一篇优秀文章,其中详细介绍了如何使用 SAM,读完该文章大约需要 5 分钟。SAM 的核心是基于 AWS CloudFormation 的强大开源规范,它可轻松将您的无服务器基础设施保持为代码并提供可爱的标识。 SAM Local 吸收了 SAM 的全部精华并将它们应用到您的本地计算机中。 它允许您使用以下命令和工具在本地开发并测试 AWS Lambda 函数: sam local 和 Docker。 它允许您模拟从已知事件源 (如 Amazon Simple Storage Service (S3)、Amazon DynamoDB、Amazon Kinesis、Amazon Simple Notification Service (SNS) 等) 进行的函数调用。 […]

Read More