【问题标题】:Amazon AWS - some regions won't authenticate, others will?亚马逊 AWS - 一些地区不会进行身份验证,而其他地区会?
【发布时间】:2017-07-05 18:53:22
【问题描述】:

我一直在使用 AWS,我一直在使用 eu-west-1,并且我编写的 c# 代码验证得很好。总是打算使用多个区域,因此 regionURL(s) 是一个配置选项;字面上的字符串列表。到现在为止,这个列表已经 1 长了。

应用程序的一般工作方式是:在枚举配置的 URL 的循环中,它创建一个客户端并查找具有特定名称模式但未运行的实例,然后启动它。到目前为止,只配置了eu-west-1,因此它只会在创建客户端时使用该 regionURL,仅枚举该区域中停止的实例

我最近开始将 EC2 实例添加到另一个区域 eu-central-1,因此我已将 eu-central-1 区域基本 URL 添加到配置中。我知道迭代配置的循环正常工作(我附加了一个调试器并检查了字符串中的尾随字符等 - 一切看起来都很好),这些是配置的区域 URL:

https://eu-west-1.ec2.amazonaws.com 
https://ec2.eu-central-1.amazonaws.com

每当应用程序枚举区域 URL 时,它首先获取 eu-west-1 并且工作正常,但是当循环到达 eu-central-1 时,对 .DescribeInstances(...) 的调用会失败:

AWS 无法验证提供的访问凭证

客户端的创建方式没有任何实际区别;这实际上与刚刚为eu-west-1 工作的代码完全相同。我没有做任何特别的努力来为代码中的任何内容提供凭据。 web.config 只有AWSAccessKeyAWSSecretKey 的键值对。我一直认为 AWS SDK 通过作为应用程序的 dll 部分来隐式访问它们..

我必须在控制台中执行什么操作才能为区域启用凭据吗?区域 URL 以不同的顺序显示这一事实是否重要(我从亚马逊帮助文档中获得了 central URL,west url 一如既往)?

【问题讨论】:

  • 嗯。 IAM 是为数不多的全球性 AWS 服务之一 - 所以我不知道你会遇到什么问题。

标签: amazon-web-services amazon-ec2 aws-sdk


【解决方案1】:

我将 AWS 开发工具包从 1.5 升级到版本 3.3,更改了各种类的名称以反映对 AWS 命名空间架构的重大更改,但保持所有相同的逻辑。

我还从在配置中指定区域 URL 切换到在配置中指定区域名称,因为在使用静态调用 RegionEndpoint.GetBySystemName("eu-west-1") 时,区域 URL 似乎内置到 SDK 本身中

这些是唯一的变化,一切都开始自动运行; API 密钥仍然仅在 Web 配置中指定,仍然在 SDK 自己找到它们的假设下运行,因为我没有在我的代码中使用它们..

【讨论】:

  • 较新的地区使用不同形式的身份验证 (Sig v4),较新的 SDK 支持这种形式。使用最新版本的库总是一个好主意,因为 AWS 变化很快!
  • 谢谢约翰;似乎这就是答案
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 2016-05-23
  • 2013-07-29
相关资源
最近更新 更多