【问题标题】:AWS IAM Roles for SQSSQS 的 AWS IAM 角色
【发布时间】:2018-01-08 20:22:35
【问题描述】:

我在 EC2 实例上托管的应用程序需要与 SQS 保持持续连接,任何连接丢失都会导致数据丢失。这可以使用 IAM 用户访问密钥和秘密访问密钥成功完成。但我想使用 IAM 角色。 IAM 角色使用临时凭证,并定期轮换凭证。我不确定在临时凭证过期和轮换时我的应用程序是否会失去与 SQS 的连接。

【问题讨论】:

  • 听起来您的应用程序架构没有弹性。依赖这种架构是非常冒险的。网络错误或任何 EC2 系统错误都会使您的系统失败,从而导致数据丢失。我建议重新构建您的应用程序以承受失败情况。

标签: amazon-web-services amazon-ec2 amazon-sqs amazon-iam


【解决方案1】:

与 IAM 角色关联的临时凭证具有过期时间,但它们会在过期之前被刷新。除非您的应用程序在到期时间临近时没有正确检查更新的凭据,否则这不会导致问题。

但问题中更基本的因素是您可能不熟悉 SQS API 的基础。

SQS 不依赖于经过身份验证的“连接”,因此没有一个连接可以“丢失”。从技术上讲,任何人都可以“连接”到 SQS,因为连接本身不是经过身份验证的。 SQS 独立地对每个action 进行身份验证——每个长轮询请求、每个删除消息操作等都由服务在其发生时进行身份验证。 (如果身份验证失败,则只有单个请求失败。)

只要您的代码对其发出的每个请求使用适当的新临时凭证,使用 IAM 角色就不会影响您与服务持续交互的能力。

任何连接丢失都会导致数据丢失

您需要重试发生的任何错误。发生错误的原因有很多,但由于您的代码通过 HTTPS 与 SQS 进行交互,因此与服务的每次交互都不依赖于持续连接。您可以(并且应该,但仅出于性能原因)使用 HTTP keep-alives,但 HTTPS 不依赖于持续维护的单个连接。

【讨论】:

    【解决方案2】:

    是的,您可以轻松地扮演角色。无需临时凭证。

    您可以使用 ec2 IAM 角色。您可以创建一个角色,您可以在其中附加 SQS 的权限,并且可以将相同的角色附加到托管您的服务器应用程序的 ec2。

    参考相同 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

    【讨论】:

    • 请注意,根据定义,使用 IAM 角色意味着您使用的是临时凭证。使用 EC2 实例角色时,EC2 基础架构会定期调用 AssumeRole action in AWS Security Token Service (STS),它提供一组临时凭证,运行在您的实例上的代码可以直接访问这些凭证。这些会定期过期,并且您的代码需要在此之前再次询问更新的凭据。 SDK 会自动实现此刷新。
    猜你喜欢
    • 2018-01-22
    • 1970-01-01
    • 2018-11-10
    • 2018-08-19
    • 2016-08-27
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多