Here’s a simple example of how you can use the AWS SDK for .NET (C#) to list all the directories and files in an S3 bucket. This code can be used in an AWS Lambda function.
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;
public class Function
{
private static readonly AmazonS3Client _s3Client = new AmazonS3Client();
public async Task FunctionHandler(string input, ILambdaContext context)
{
const string bucketName = "your-bucket-name"; // replace with your bucket name
try
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await _s3Client.ListObjectsV2Async(request);
// Process the response.
foreach (S3Object entry in response.S3Objects)
{
Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size);
}
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated);
}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString());
throw;
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.ToString());
throw;
}
}
}
This code will list all the objects in the specified S3 bucket. In S3, directories are not actual entities but are part of the key of the object. The key is the entire file path, including the file name. For example, in the key myfolder/myfile.txt
, myfolder/
is the directory and myfile.txt
is the file name.
Please replace "your-bucket-name"
with the name of your S3 bucket. Also, make sure that your Lambda function has the necessary permissions to access your S3 bucket. You might need to adjust the MaxKeys
property depending on your use case. It’s currently set to 10
for this example.
Thanks