Amazon S3 Bucket Management with C#: Part 3 – Listing files in a Bucket
Before getting started
Skill Level: Beginner
Assumptions:
- You already gone through Part 1 – Creating a Bucket and Part 2 – Deleting a Bucket
Additional information: I sometimes cover small sub-topics in a post. Along with AWS, you will also be exposed to:
- async, await, Task
- Rhyous.SimpleArgs
Step 1 – Add a ListFiles method to BucketManager.cs
- Edit file called BucketManager.cs.
- Enter this new method:
public static async Task ListFiles(AmazonS3Client client, string bucketName) { var listResponse = await client.ListObjectsV2Async(new ListObjectsV2Request { BucketName = bucketName }); if (listResponse.S3Objects.Count > 0) { Console.WriteLine($"Listing items in S3 bucket: {bucketName}"); listResponse.S3Objects.ForEach(o => Console.WriteLine(o.Key)); } }
Note: I noticed there was a ListObjectsAsync and a ListObjectsV2Async. I assumed the one with V2 is newer and should be used for new code. The documentation for ListObjectsV2Async confirmed this.
Step 2 – Update the Action Argument
We now need to make this method a valid action for the Action Argument.
- Edit the ArgsHandler.cs file to define an Action argument.
... AllowedValues = new ObservableCollection<string> { "CreateBucket", "DeleteBucket", "ListFiles" }, ...
Notice: We didn’t have a step 3. We wrote some S.O.L.I.D. code in Part 1 and Part 2, which made it really easy for us to implement this method.
Homework: I also read in the documentation that only 1000 files will be listed when a call to ListObjectsV2Async is made. What if you have more than 1000 files, how would you list them all?
Go to: Part 4 – Uploading a file to a Bucket
Return to: Managing Amazon AWS with C#