簡體   English   中英

S3存儲桶中的AWS Lambda .net Core 2.1列表文件

[英]AWS lambda .net core 2.1 list files in S3 bucket

如標題所示,我想在我的lambda函數中列出S3存儲桶中的文件(鍵)。

到目前為止,我有以下內容:

public static async Task < bool > ListObjectsInBucket(string S3_ACCESS_KEY_ID, string S3_SECRET_ACCESS_KEY, string S3_REGION, string S3_BUCKET, string GC_ClientID) {

 try {
  // Create a client
  var regionIdentifier = RegionEndpoint.GetBySystemName(S3_REGION);
  AmazonS3Client client = new AmazonS3Client(S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, regionIdentifier);

  // List all objects
  ListObjectsRequest listRequest = new ListObjectsRequest {
   BucketName = S3_BUCKET + "/" + GC_ClientID + "/news-articles",
  };

  ListObjectsResponse listResponse;
  do {
   // Get a list of objects
   listResponse = await client.ListObjectsAsync(listRequest);
   foreach(S3Object obj in listResponse.S3Objects) {
    Console.WriteLine("Object - " + obj.Key);
    Console.WriteLine(" Size - " + obj.Size);
    Console.WriteLine(" LastModified - " + obj.LastModified);
    Console.WriteLine(" Storage class - " + obj.StorageClass);
   }

   // Set the marker property
   listRequest.Marker = listResponse.NextMarker;
  } while (listResponse.IsTruncated);

  return true;

 } catch (Exception ex) {
  Console.WriteLine("Exception:" + ex.Message);
  return false;
 }
}

並稱之為:

public string FunctionHandler(ILambdaContext context) {

 var checkFile = ListObjectsInBucket(S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION, S3_BUCKET, GC_ClientID);

 return "Complete: " + checkFile;

}

我收到以下錯誤:

“完整:System.Runtime.CompilerServices.AsyncTaskMethodBuilder 1+AsyncStateMachineBox 1 [System.Boolean,ExportArticles.Function + d__3]”

誰能幫忙???

由於列表調用是異步的,因此需要使函數處理程序異步。 現在,您正在從函數處理程序中調用異步列表方法,然后在異步方法完成之前立即返回。 您的函數處理程序應類似於

public async Task<string> FunctionHandler(ILambdaContext context) {

 var checkFile = await ListObjectsInBucket(S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION, S3_BUCKET, GC_ClientID);

 return "Complete: " + checkFile;

}

暫無
暫無

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

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