通过代理服务器连接到Amazon S3

时间:2012-07-30 17:21:37

标签: authentication powershell proxy amazon-s3 amazon

尝试通过Powershell确定如何传递代理身份验证凭据。我正在使用以下代码,它适用于非代理连接:

$AmazonS3 = [Amazon.AWSClientFactory]::CreateAmazonS3Client($S3AccessKeyID, $S3SecretKeyID)
$S3PutRequest = New-Object Amazon.S3.Model.PutObjectRequest 
$S3PutRequest.BucketName = $S3BucketName
$S3PutRequest.Key = $S3ObjectKey
$S3Response = $AmazonS3.PutObject($S3PutRequest)

Amazon AWS SDK文档使用此方法使用CreateAmazonS3Client对象提及:CreateAmazonS3Client(String,String,AmazonS3Config)。 AmazonS3Config似乎是一个XML文件,其中包含代理设置的信息,但我没有发现它的正确语法或文件所在的位置。

我将非常感谢有关如何正确配置以对代理进行身份验证的任何建议或示例。

2 个答案:

答案 0 :(得分:2)

我不认为它是一个XML对象,只是一个新的S3Config对象。

创建配置对象:

$config = New-Object Amazon.S3.AmazonS3Config
$config.ProxyHost = "whatever"

以下是有关配置中包含内容的一些文档: http://docs.amazonwebservices.com/sdkfornet/latest/apidocs/html/T_Amazon_S3_AmazonS3Config.htm

然后,在创建连接时使用该配置。

$AmazonS3 = [Amazon.AWSClientFactory]::CreateAmazonS3Client($S3AccessKeyID, $S3SecretKeyID, $config)
$S3PutRequest = New-Object Amazon.S3.Model.PutObjectRequest 
$S3PutRequest.BucketName = $S3BucketName
$S3PutRequest.Key = $S3ObjectKey
$S3Response = $AmazonS3.PutObject($S3PutRequest)

答案 1 :(得分:0)

对于Nodejs AWS开发工具包,您可以考虑此解决方案,该解决方案与上述类似,并且在AWS documentation here上也提到过。

Node.js的代码

npm install proxy-agent --save

AWS开发工具包配置对象中的实现

const proxy = require('proxy-agent');

AWS.config.update({
  httpOptions: { agent: proxy('http://internal.proxy.com') }
});