【问题标题】:Connecting to Shared SQS Queue using boto使用 boto 连接到共享 SQS 队列
【发布时间】:2013-01-25 04:34:58
【问题描述】:

我遇到了一个特别棘手的问题。我可以使用 boto SQS 模块轻松连接到本机(由我的 AWS 账户凭证拥有的)SQS 队列。但是,AWS 似乎提供了允许使用权限连接到非本地(由另一个 AWS 账户拥有)SQS 队列的能力。这可能更好地描述为共享队列。

有没有办法使用 boto 连接到共享队列?我似乎在 boto 代码或文档中找不到任何方法或引用来执行此类操作。

【问题讨论】:

  • 我不清楚您要做什么。您是否尝试向特定 AWS 用户授予访问权限?或者您是否尝试授予匿名访问权限?两者都是可能的,并且都涉及使用与队列关联的 JSON 策略文件。有关详细信息,请参阅docs.aws.amazon.com/AWSSimpleQueueService/latest/…
  • 我已授予访问权限以允许另一个 AWS 账户将消息写入我的账户队列。但是,当我尝试使用另一个帐户连接到我的队列时,我看不到指定队列属于不同帐户的方法(我的帐户与连接的帐户)。当 boto 连接时,它只是在连接帐户下创建队列,而不是使用我帐户中已有的队列。
  • 澄清一下。 AWS 账户 A 有一个名为 my_queue 的队列。 AWS 账户 B 根本没有队列。 AWS 账户 B 已被授予写入 my_queue 的权限。但是,当通过 boto 连接时,my_queue 是在 AWS 账户 B 下创建的,因为似乎没有办法在连接时告诉 boto 它应该连接到 AWS 账户 A 的 my_queue 而不是它自己的 my_queue。
  • 那手动构造boto.sqs.queue.Queue(boto.sqs.connection.SQSConnection('Account B Access Key', 'Account B Secret Key'), url='Account A my_queue URL')不行吗?

标签: python amazon-web-services python-2.7 boto amazon-sqs


【解决方案1】:

我的印象是您需要的是Identity and Access Management (IAM)。

另一个 AWS 账户可以创建一个 IAM 用户,并选择为它创建一个访问密钥。这提供了一对访问密钥和秘密访问密钥,与您通常用来访问 API 的常规 AWS 账户不同。现在您可以自定义此 IAM 用户的确切权限。

我希望当这个新 IAM 用户的访问密钥和秘密访问密钥以常规方式提供给 boto(给 aws_access_key_id 和 aws_secret_access_key)时,它们应该可以按预期工作。

【讨论】:

  • 我可以通过 AWS 上的队列管理界面授予权限。我已经这样做了。正如 garnaat 上面指出的,也可以通过策略文件设置这些权限。问题是,虽然队列已打开以写入不同的 AWS 账户,但与该账户的连接凭证不会显示队列。尝试连接队列时,它会在连接帐户下创建,而不是在我希望所有消息累积的原始帐户下创建。
猜你喜欢
  • 2012-06-23
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-01
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
相关资源
最近更新 更多