我在EC2实例上托管的应用程序需要与SQS保持连接,任何连接丢失都会导致数据丢失。这可以使用IAM用户访问密钥和秘密访问密钥成功完成。但我想使用IAM角色。 IAM角色使用临时凭证,并定期轮换凭据。我不确定我的应用程序在临时凭证到期和轮换时是否会失去与SQS的连接。
答案 0 :(得分:1)
与IAM角色关联的临时凭证已过期,但会在到期之前刷新。除非您的应用程序在到期时间临近时未正确检查更新的凭据,否则这不会导致问题。
但问题中一个更基本的因素是您可能不熟悉SQS API的基础。
SQS不依赖于经过身份验证的“连接”,因此没有一个连接可以“丢失”。从技术上讲,任何人都可以“连接”到SQS,因为连接本身不是经过身份验证的。 SQS独立地对每个操作进行身份验证 - 每个长轮询请求,每个删除消息操作等都由服务在其发生时进行身份验证。 (如果身份验证失败,则只有单个请求失败。)
只要您的代码为每个请求使用适当的新临时凭据,使用IAM角色不会影响您持续与服务交互的能力。
任何连接丢失都会导致数据丢失
您需要重试发生的任何错误。错误可能由于多种原因而发生,但由于SQS通过HTTPS与您的代码进行交互,因此与服务的每次交互都不依赖于连续连接。您可以(并且应该,但仅出于性能原因)使用HTTP保持活动,但HTTPS不依赖于持续维护的单个连接。
答案 1 :(得分:0)
是的,您可以轻松完成角色。无需临时凭证。
您可以使用ec2 IAM角色。您可以创建一个角色,您可以在其中附加SQS的权限,并且可以将相同的角色附加到托管服务器应用程序的ec2。
参考相同的内容 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html