10

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

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

  2. 用于创建客户端对象的适用于 .NET API 的 AWS 开发工具包需要私钥:

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

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

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

客户端应用程序是否是亚马逊网络服务的错误模型,使用他们的适用于 .NET 的 AWS 开发工具包,还是我错过了使客户端应用程序完全合理的东西?有没有一种很好的方法来解决这个问题,而无需创建我自己的代理服务来验证客户端并将他们的请求转发到 SimpleDB?

4

1 回答 1

6

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

这样,您可以避免在 AWS 调用期间必须通过您自己的服务器、节省延迟、带宽、服务器上绑定的套接字、故障处理复杂性等的开销。您只需为客户端预先进行轻量级的点击即可得到正确的指示。

于 2010-05-13T00:44:59.817 回答