npm 包 @aws-cdk/aws-sqs 使用教程

阅读时长 5 分钟读完

前言

Amazon Simple Queue Service (SQS) 是亚马逊提供的消息传递服务。 使用 AWS SQS,您可以将任意数量的消息发送到分布式队列中, 并允许不同的分布式应用程序从队列中以异步方式读取消息, 以便处理它们。除了消息传递特性之外, AWS SQS 还允许您发送任何有效负载大小的消息,从而允许您创建从小到超大量级的应用程序。

@aws-cdk/aws-sqs 是 Amazon Web Service (AWS) 提供的 CDK( Cloud Development Kit ) 的 npm 包之一,它可以帮助我们将 AWS SQS 的资源快速及时的部署及管理。本文将介绍如何使用该 npm 包。

环境

在使用 @aws-cdk/aws-sqs 之前,需要先搭建好 AWS 工作环境,安装 npm 包管理工具。本文实例代码使用 TypeScript 编写。

安装和初始化

在工程目录下输入以下命令,进行安装和初始化操作。

然后,可以创建一个空的 CDK 应用:

使用示例

下面是一个简单创建队列的示例。

-- -------------------- ---- -------
------ - -- --- ---- ----------------
------ - -- --- ---- -------------------

------ ----- ----------- ------- --------- -
  ------------------ -------------- --- ------- ------- --------------- -
    ------------ --- -------

    ----- ----- - --- --------------- ------------ -
      ---------- ---------------
      ------------------ --------------------------
    ---
  -
-

以上代码中,我们创建了一个名为 my-sqs-queue 的队列,设置了队列的可见性超时时间为 300s。

队列命名

在上述代码中,我们创建了一个名为 my-sqs-queue 的 SQS 队列,在实际应用中, 这种固定命名的方式存在问题。随着应用在不同阶段和环境中的部署, 应该使用唯一的、版本化的队列名称。

一种解决方案是采用 CDK 堆叠名称来进行命名。例如,对于生产环境的队列名称, 可以使用 prod-myapp-sqs 这样的名称。在此方案中, prod-myapp 是应用名称, -sqs 是服务名称,而此服务则可以与防火墙规则、负载均衡器以及其他底层组件相对应。这种命名方案促进了使用管道、CI/CD 和自动扩展能力, 还有助于辨别正在运行的应用版本。

上述代码在队列名称中包含堆叠名称 this.stackName

消息过期时间

SQS 队列中的消息主体有一个可选的 DelaySeconds 属性, 允许延迟消息发送。消息将被 SQS 服务保留一段时间, 等待过度该属性指定的铲除间隔。默认情况下,DelaySeconds 的值为 0,消息立即可见,为避免此类情况发生,需显式指定消息过期时间。

以上代码将队列中的所有消息保留 14 天,SQS 会在此时间之后自动铲除消息。

队列访问控制

AWS Identity and Access Management (IAM) 是一项完整的访问控制和权限管理服务, 用于保护 AWS 资源。在使用 @aws-cdk/aws-sqs 创建队列时, 可以为队列分配 IAM 权限以控制队列的访问。

例如,您可以为您的 S3 存储桶之外的帐户提供可以向您的队列发送消息的权限。

-- -------------------- ---- -------
----- ----- - --- --------------- ------------ -
  ---------- ------------------------------
  ---------------- ----------------------
  ----------- --------------------------------
  -------------------- -----------
  ----------------------- -----
  ---------------- --- --------------- ---------- -
    ---------- ----------------------------------
  ---
  ------------------ --------------------------
  ------------- --- -------------------------------------
---

上述示例配置将队列的所有消息保留 14 天,使用 KMS 管理的加密,使用了 300 秒的客户端可见后,将所有的发送消息权限分配给了帐户 024578371266。

结论

@aws-cdk/aws-sqs 是一个强大且灵活的 npm 包,可帮助您轻松地为您的应用程序创建和管理 SQS 队列。 本文中,我们已经详细介绍了如何使用 @aws-cdk/aws-sqs 进行创建队列,并对队列的命名、过期时间、访问控制等方面进行了说明,希望本文对您有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/aws-cdk-aws-sqs