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

m1n*_*keh 1 c# amazon-s3 azure amazon-web-services aws-sdk

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

因此,之前从未使用过 Amazon S3,并尝试构建一个 azure 辅助角色(或 webjob)来监视此存储位置并将文件或文件在出现时移动到 Azure Blob 存储 - 似乎很容易,但我失败了S3 的身份验证阶段,问题是我拥有的“路径”变量。

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

Access Key Id, Secret Access Key, and Path.. the Path is just "folder/folder/"
Run Code Online (Sandbox Code Playgroud)

如果没有路径,我会收到来自 Cyber​​duck 的拒绝访问响应......好吧,这是意料之中的 - 但我无法弄清楚如何将路径嵌入到 Visual Studio AWS 凭证管理器或测试控制台工具中的代码中我已经书面..

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

Access Key Id, Secret Access Key, Account Number ????
Run Code Online (Sandbox Code Playgroud)

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

https://blogs.aws.amazon.com/net/post/Tx1310VG2O81PSY/Referencing-Credentials-using-Profiles
Run Code Online (Sandbox Code Playgroud)

干杯,

泰。

m1n*_*keh 7

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

在最初的帖子中,我说我试图导航到“文件夹/文件夹”,其中第一个文件夹实际上是存储桶名称(事实证明)-我不是这个 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());
}
Run Code Online (Sandbox Code Playgroud)

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

我会将凭据放在 app.config 中,我想这是最佳做法吗?