【问题标题】:sharing SQS across multiple environments跨多个环境共享 SQS
【发布时间】:2016-05-04 19:25:29
【问题描述】:

我们正在探索 SQS 以提高一些异步作业队列的可靠性。我正在尝试确定支持多个队列和环境(农场集群、开发人员沙箱、开发人员笔记本电脑等)的最佳 SQS 部署策略。我们之前的作业队列为每个环境使用了一个单独的队列服务器,提供了很好的隔离。由于 SQS 是一种全球资源,我还没有看到安全/隔离和维护的最佳途径。

在更糟糕的情况下,我认为我们需要创建数千个单独的 SQS 队列来处理作业类型(例如报告、ETL 等)和环境(生产、演示、开发人员沙箱等)的每种组合。我们可以在每个环境中使用一个队列,但这似乎限制了我们根据作业控制行为的能力。相反,我们可以为每个作业使用全局队列,但这使得隔离环境变得不可能。

这似乎有点维护和安全负担,所以我想知道其他客户如何在大量环境和队列负载类型中成功利用 SQS。

【问题讨论】:

    标签: amazon-web-services amazon-sqs


    【解决方案1】:

    我会将每个环境(产品/演示/等)拆分为单独的 AWS 账户以提供环境隔离。

    我建议使用 CloudFormation 或 Teraform 之类的工具来创建和管理所有队列(以及其他 AWS 资源),这应该可以减少您的维护和安全负担。

    【讨论】:

    • 感谢您的意见。分离帐户似乎是最好的方法,但它似乎也比我希望花费的更多精力。
    • 如果您使用 Teraform 之类的工具来管理您的基础架构,这应该不会很费力。
    【解决方案2】:

    虽然如 Mark B 的回答中所述,使用完全独立的帐户是一种适当的最佳做法,但这并不是唯一的做法。您可以在同一个 AWS 账户中拥有多个环境并实现隔离,只是处于不同的级别。

    要隔离不同的环境,您需要对资源应用命名标准,然后您可以使用 IAM 将某些访问密钥和角色限制为仅对与该环境关联的资源(例如:SQS 队列)拥有权限。

    例如,您可能有以下队列:

    • etl 开发
    • etl 演示
    • etl-生产
    • 报告开发
    • 报告演示
    • 报告制作

    然后,您可以将最低权限应用于访问这些队列的角色,以仅允许每个环境的相应应用程序访问它们。如果您使用 CloudFormation,则可以将资源名称的环境部分指定为堆栈的参数。


    也就是说,在帐户级别进行隔离可提供更强有力的保证。根据您可接受的风险级别和合规政策,您可能需要遵守单独的帐户提供一些额外的保护。也可以采用混合方法,例如为沙盒开发设置一个单独的帐户,但将您的预生产和生产资源集中在一个帐户中。如果您最终使用单个帐户命名约定确实是关键,使用 Jenkins 和 CloudFormation 等工具的大量自动化可以帮助您解决这个问题。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 2018-10-27
      • 2019-10-26
      • 1970-01-01
      • 2019-01-15
      • 2014-01-18
      相关资源
      最近更新 更多