AWS лямбда .net core 2.1 список файлов в корзине S3 - PullRequest
0 голосов
/ 08 декабря 2018

Как видно из заголовка, я хочу перечислить файлы (ключи) в сегменте 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;
 }
}

иследующие вызовы:+ d__3] "

Может кто-нибудь помочь ???

1 Ответ

0 голосов
/ 10 декабря 2018

Поскольку ваш список вызовов асинхронный, вам нужно сделать так, чтобы ваш обработчик функций был асинхронным.Прямо сейчас вы вызываете свой метод асинхронного списка из обработчика функции и затем немедленно возвращаетесь до завершения асинхронного метода.Ваш обработчик функций должен выглядеть примерно так:

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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...