我在个人项目中使用亚马逊网络服务。我已经抓住了他们的AWS SDK for .NET,我正在使用它,但我有点困惑。
通过私钥/公钥对授权访问Web服务(在本例中为SimpleDB,虽然我不认为这对问题非常重要)。
用于创建客户端对象的AWS SDK for .NET API需要私钥:
AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey);
这是一个客户端应用程序,因此代码将完全在客户端上运行。
建议客户端需要访问我的私钥才能访问SimpleDB。但亚马逊一再强调说我的私钥不能让我控制。
这对我没有意义,所以我认为我必须遗漏一些东西。
客户端应用程序通常是亚马逊Web服务的错误模型,使用他们的AWS SDK for .NET,还是我遗漏了使客户端应用程序完全合理的东西?有没有一种很好的方法可以解决这个问题,而无需创建我自己的代理服务来验证客户端并将其请求转发给SimpleDB?
答案 0 :(得分:7)
您无需实现远程(AWS)服务的代理。只需实现一个简单,小型,经过身份验证的服务,该服务会在联系AWS时将 URL和标头返回给客户端。您的经过身份验证的Web服务会保守AWS的秘密,并且只向签名的请求URL和标头提供客户端,然后使用返回的信息进行实际工作调用。
通过这种方式,您可以避免AWS调用期间必须通过自己的服务器的开销,节省延迟,带宽,服务器上的套接字,故障处理复杂性等。您只需预先轻量级客户得到正确的指示。