- 某些地区不会进行身份验证,其他人会这样做?

问题描述:

我一直使用AWS,我一直在使用eu-west-1以及我编写的验证过的c#代码。总是有意使用多个区域,所以regionURL(s)是一个配置选项;字面上是一个字符串列表。到目前为止,这个名单已经有1年了。- 某些地区不会进行身份验证,其他人会这样做?

应用工作的一般方式是:一个循环,枚举中配置的网址中,它会创建一个客户端,并期待与未运行特定名称模式,一个实例,然后启动它。只有eu-west-1配置,以便创建客户端时,它只会使用regionURL,在该地区

列举仅停止情况到现在为止有我最近开始加入EC2实例到另一个区域eu-central-1所以我已经添加了eu-central-1配置的区域基址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关闭亚马逊的帮助文档中,wes牛逼网址是因为它一直是)?

+0

嗯。 IAM是少数全球性的AWS服务之一 - 所以我不知道这个问题会给你带来什么。 – Henry

我升级了AWS SDK从1.5到3.3的版本,改变各种类的名称,以反映重大更改到AWS命名空间的架构,但保留所有相同的逻辑。

我也从配置指定区域的URL交换,以地区名称的配置,因为该地区的网址似乎使用静态调用RegionEndpoint.GetBySystemName("eu-west-1")

时,这些是唯一的变化被内置到SDK本身,并全部开始自动工作;该API密钥仍然指定n只有web配置,还是该SDK发现他们有自己,因为我不在我的代码中使用它们的假设下操作..

+2

较新区域使用不同形式的身份验证(Sig v4),这是由最近的SDK支持的。使用最新版本的库总是一个好主意,因为AWS的变化速度很快! –

+0

谢谢约翰;这似乎很可能是答案 –