簡體   English   中英

使用AWSSDK.S3使用C#對Amazon S3存儲桶進行身份驗證

[英]Authenticate Amazon S3 bucket with C# using AWSSDK.S3

編輯:-需要將在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/"

如果沒有該路徑,我會收到來自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

干杯,

最終設法在某種程度上解決了問題,為不贊成投票的家伙們喝彩:/

在原始帖子中,我說過我試圖導航到“文件夾/文件夾”,其中第一個文件夾實際上是存儲桶名稱(所以事實證明)-我不是該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中,我認為這是最佳做法?

也許結帳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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM