使用AWSSDK.S3使用C#对Amazon S3存储桶进行身份验证

时间:2016-02-05 18:30:41

标签: c# azure amazon-web-services amazon-s3 aws-sdk

编辑: - 需要将在Amazon S3上创建的某些文件移动到Azure Blob存储,我之前没有使用过Amazon S3,并且提供的详细信息包含“路径”我不是100%关于如何在C#中使用AWSSDK.S3 NuGet包。

因此,以前从未使用过Amazon S3,并尝试构建一个天蓝色的工作者角色(或webjob)来观看此存储位置并在文件或文件出现时将其移动到Azure Blob存储 - 看起来相当容易,但我m在S3的身份验证阶段失败,问题是我拥有的“路径”变量。

我使用Cyber​​duck测试了我的连接,我有以下参数:

Access Key Id, Secret Access Key, and Path.. the Path is just "folder/folder/"

如果没有路径,我会收到来自Cyber​​duck的访问被拒绝响应......很好,这是预期的 - 但是我无法弄清楚如何将路径嵌入到Visual Studio AWS凭证管理器或测试控制台线束中的代码中我写过..

AWS资源管理器只处理凭据,我可以输入:

Access Key Id, Secret Access Key, Account Number ????

我是否需要手动编码?一直在审查这个,但今天没有足够的时间来消化它:

https://blogs.aws.amazon.com/net/post/Tx1310VG2O81PSY/Referencing-Credentials-using-Profiles

干杯,

2 个答案:

答案 0 :(得分:3)

最终设法得到某种解决方案,为下来的选民们欢呼:/

在原帖中我说我试图导航到"文件夹/文件夹"第一个文件夹实际上是存储桶名称(事实证明) - 我不是这个s3帐户的管理员,所以我对此非常盲目。

string AccessKeyId = "REMOVED";
string SecretAccessKey = "nOt/a+ReAl/kEY";
BasicAWSCredentials awsCreds = new BasicAWSCredentials(AccessKeyId, SecretAccessKey);

AmazonS3Config S3Config = new AmazonS3Config
{
    ServiceURL = "https://folder.s3.amazonaws.com/",
    RegionEndpoint = RegionEndpoint.USEast1
};

AmazonS3Client s3Client = new AmazonS3Client(awsCreds, S3Config);

ListObjectsRequest request = new ListObjectsRequest();
request.BucketName = "folder";
request.Prefix = "folder/another_folder/";

ListObjectsResponse response = s3Client.ListObjects(request);
foreach (var item in response.S3Objects)
{
    sr.WriteLine(item.Key.ToString());
}

希望这有助于某人,仍然认为SDK doco很糟糕;)

我会将凭据放在app.config中,我猜这是最好的做法吗?

答案 1 :(得分:0)

也许结帐AWS .net SDK? https://aws.amazon.com/sdk-for-net/ https://www.nuget.org/packages?q=aws

由于您在Azure上运行服务,为什么不使用Azure Blob存储? https://www.nuget.org/packages?q=Azure+Blob+Storage