[英]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.