YouTube Summaries: Deploying MinIO with Go
In our most recent coverage of MinIO YouTube learning, we discussed MJ’s “Essentials for Admins” course. This edition will be covering Will Dinyes’s series for those who wish to deploy MinIO in their working Go (sometimes called Golang) environment.
These twelve videos clock in at under an hour—the information is dense, but easily digestible. The only prerequisite is a general understanding of Go and how to import basic packages. Learners can watch the videos sequentially as a playlist however each is designed to be a 3-5 minute standalone just-in-time learning resource for those who are bootstrapping MinIO using Go. By the end of the course, developers will be able to perform all the basic tasks necessary for object storage, as well as tweak and customize the output of these tasks to suit their needs.
First we start with the basics: connecting to MinIO with Go. This very brief video goes over the steps to set up your Go environment in preparation for the MinIO client, then connect MinIO with simple commands using the MinIO Go SDK.
Will’s next videos cover uploading and downloading files from MinIO using Go. This one is for developers who are unfamiliar with the FPutObject and FGetObject functions (to upload and download files, respectively) and the PutObjectOptions and GetObjectOptions structs (to define variables while uploading or downloading objects), all of which are essential to understand before getting into MinIO’s more complex functions.
Next up is uploading a file from MinIO to a web page using Go. This one is pretty self-explanatory—Will shows how to upload a file as an object to a web page, then how to list the files and display them.
Onto creating MinIO buckets with Go. Here, Will goes over using the MakeBucket function to create a bucket in which objects will be kept, as well as using the BucketExists function to keep track of buckets and test if they have been created.
The logical next step is watching buckets in MinIO using Go, allowing the user to locate specific events within buckets such as creating, accessing, or removing objects. Once the environment is up and running, the user can use the ListenBucketNotification function to see any notifications of activity within the bucket. Also important to note is the ListenNotification function, which provides similar notifications but without being limited to the bucket.
Next in the series is how to delete MinIO objects with Go with the RemoveObject function and the RemoveObjectOptions struct. Will shows how to delete not just objects, but specific versions of those objects using the version ID.
Moving on to listing objects in MinIO with Go, Will discusses using the ListObjects function and the ListObjectOptions struct, and what to do with the results returned by the list. Listing objects in a bucket is a straightforward function, but to see version IDs or tailor the list to specific needs a user has to work with the ListObjectOptions struct—still simple, but important to understand the distinction.
This may seem like a lot of information to process, but the videos are short and we’re now over halfway done. Next up is uploading and downloading streams from MinIO with Go using the GetObject function (not to be confused with FGetObject) to return specific streams, and using the GetObjectOptions struct to get a particular range of values from these streams.
By now the pattern should be obvious—if anything seems complicated or intimidating, remember that most of these tasks are just using a function to get what you need and a struct to customize. In line with that, our eighth video is about using the ListBuckets function and the BucketInfo struct to list buckets in MinIO using Go.
The final video in the series details how to copy objects in MinIO with Go. Copying objects utilizes the CopyObjects function, which has two options structs: CopySrcOptions (for the source) and CopyDestOptions (for the destination).
That just about covers it. A developer working within a Go environment can use these videos to practice all the basics required to utilize MinIO effectively and then deploy it in production, whatever the job may be. For more detailed information about installing, running, and using MinIO in any environment, please refer to our documentation here. To learn more about MinIO or get involved in our community, please visit us at min.io or join our public slack channel. If you want to see the other summaries, you can use the YouTube Summaries tag.