我正在我的个人项目中尝试使用亚马逊网络服务。我已经获取了他们的 AWS SDK for .NET 并且正在使用它,但我有点困惑。

  1. 对 Web 服务(在本例中为 SimpleDB,尽管我认为这对问题来说并不重要)的访问是通过私钥/公钥对进行授权的。

  2. 用于创建客户端对象的 AWS SDK for .NET API 需要私钥:

    AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey);
    
  3. 这是一个客户端应用程序,因此代码将完全在客户端上运行。

  4. 建议客户端需要访问我的私钥才能访问 SimpleDB。但亚马逊一再强调,我的私钥绝对不能脱离我的控制。

这对我来说没有意义,所以我想我一定错过了一些东西。

对于亚马逊 Web 服务来说,对于使用适用于 .NET 的 AWS SDK,客户端应用程序是否是错误的模型,或者我是否遗漏了一些使客户端应用程序完全合理的东西?有没有一种好的方法可以解决这个问题,而无需创建我自己的代理服务来验证客户端并将其请求转发到 SimpleDB?

有帮助吗?

解决方案

您不需要实现面向远程 (AWS) 服务的代理。只需实现一个简单的、小型的、经过身份验证的服务,该服务将返回给客户端 联系 AWS 时使用的 URL 和标头。 经过身份验证的 Web 服务会保留 AWS 的秘密,并且仅向客户端提供签名的请求 URL 和标头,然后客户端使用返回的信息进行实际的工作调用。

这样,您就可以避免 AWS 调用期间必须通过您自己的服务器的开销,从而节省延迟、带宽、服务器上的套接字占用、故障处理复杂性等。您只需预先轻轻一击,即可让客户获得正确的说明。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top