使用 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' 变量。
我已经使用 Cyberduck 测试了我的连接,我有以下参数:
Access Key Id, Secret Access Key, and Path.. the Path is just "folder/folder/"
没有路径,我收到来自 Cyberduck 的拒绝访问响应...很好,这是预料之中的 - 但我不知道如何将路径嵌入到 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 中,我认为这是最佳做法?
编辑:- 需要将在 Amazon S3 上创建的一些文件移动到 Azure Blob 存储,我以前没有使用过 Amazon S3,提供的详细信息包括'path' 我不是 100% 了解如何在 C# 中使用 AWSSDK.S3 NuGet 包..
因此,之前从未使用过 Amazon S3,并且尝试构建一个 azure worker 角色(或 webjob)来监视此存储位置并在文件出现时将一个或多个文件移动到 Azure Blob 存储 - 看起来相当容易,但是我在 S3 的身份验证阶段失败了,问题是我拥有的 'path' 变量。
我已经使用 Cyberduck 测试了我的连接,我有以下参数:
Access Key Id, Secret Access Key, and Path.. the Path is just "folder/folder/"
没有路径,我收到来自 Cyberduck 的拒绝访问响应...很好,这是预料之中的 - 但我不知道如何将路径嵌入到 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 中,我认为这是最佳做法?