使用 AWSSDK.S3 通过 C# 验证 Amazon S3 存储桶

Authenticate Amazon S3 bucket with C# using AWSSDK.S3

编辑:- 需要将在 Amazon S3 上创建的一些文件移动到 Azure Blob 存储,我以前没有使用过 Amazon S3,提供的详细信息包括'path' 我不是 100% 了解如何在 C# 中使用 AWSSDK.S3 NuGet 包..

因此,之前从未使用过 Amazon S3,并且尝试构建一个 azure worker 角色(或 webjob)来监视此存储位置并在文件出现时将一个或多个文件移动到 Azure Blob 存储 - 看起来相当容易,但是我在 S3 的身份验证阶段失败了,问题是我拥有的 'path' 变量。

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

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

没有路径,我收到来自 Cyber​​duck 的拒绝访问响应...很好,这是预料之中的 - 但我不知道如何将路径嵌入到 Visual Studio AWS 凭证管理器或代码中在我编写的测试控制台线束中..

处理凭据的 AWS Explorer 只允许我输入:

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

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

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

干杯,

Ty.

也许可以查看 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

最终设法就此达成某种解决方案,为反对票的家伙欢呼:/

在原来的 post 中,我说过我正在尝试导航到 "folder/folder",其中第一个文件夹实际上是存储桶名称(事实证明)- 我不是管理员这个 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 中,我认为这是最佳做法?