前言
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 编写。
安装和初始化
在工程目录下输入以下命令,进行安装和初始化操作。
npm install -g aws-cdk npm install @aws-cdk/aws-sqs
然后,可以创建一个空的 CDK 应用:
cdk init app --language typescript
使用示例
下面是一个简单创建队列的示例。
-- -------------------- ---- ------- ------ - -- --- ---- ---------------- ------ - -- --- ---- ------------------- ------ ----- ----------- ------- --------- - ------------------ -------------- --- ------- ------- --------------- - ------------ --- ------- ----- ----- - --- --------------- ------------ - ---------- --------------- ------------------ -------------------------- --- - -
以上代码中,我们创建了一个名为 my-sqs-queue
的队列,设置了队列的可见性超时时间为 300s。
队列命名
在上述代码中,我们创建了一个名为 my-sqs-queue
的 SQS 队列,在实际应用中, 这种固定命名的方式存在问题。随着应用在不同阶段和环境中的部署, 应该使用唯一的、版本化的队列名称。
一种解决方案是采用 CDK 堆叠名称来进行命名。例如,对于生产环境的队列名称, 可以使用 prod-myapp-sqs
这样的名称。在此方案中, prod-myapp
是应用名称, -sqs
是服务名称,而此服务则可以与防火墙规则、负载均衡器以及其他底层组件相对应。这种命名方案促进了使用管道、CI/CD 和自动扩展能力, 还有助于辨别正在运行的应用版本。
const queue = new sqs.Queue(this, "sqs-queue", { queueName: `${this.stackName}-myapp-sqs`, visibilityTimeout: cdk.Duration.seconds(300), });
上述代码在队列名称中包含堆叠名称 this.stackName
。
消息过期时间
SQS 队列中的消息主体有一个可选的 DelaySeconds
属性, 允许延迟消息发送。消息将被 SQS 服务保留一段时间, 等待过度该属性指定的铲除间隔。默认情况下,DelaySeconds
的值为 0,消息立即可见,为避免此类情况发生,需显式指定消息过期时间。
const queue = new sqs.Queue(this, "sqs-queue", { queueName: `${this.stackName}-myapp-sqs`, retentionPeriod: cdk.Duration.days(14), });
以上代码将队列中的所有消息保留 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