Недавно я подумывал о сокращении написанного мной приложения, которое работает в Digital Ocean. Точнее, этот — архив революционного искусства, сделанного в поддержку переворота в Судане.

Но для этого мне нужно было загрузить все файлы из моей корзины в пространствах Digital Ocean. К сожалению, нет простого способа сделать это в пользовательском интерфейсе, и я не смог найти в Интернете ни одного скрипта с примерами этого, отсюда и эта запись в блоге.

В последнее время я немного больше использую Go, поэтому я подумал, что это будет прекрасная возможность попрактиковаться в написании параллелизма на Go. Надеюсь, это может быть полезно для тех, кто находится в таком же затруднительном положении 😧

Сначала я запустил go mod init <project name>, а затем go get -u github.com/aws/aws-sdk-go. Затем я создал main.go и написал следующее:

Большинство примеров я взял из документации Digital Ocean здесь. Затем я просто переписал его, чтобы получить только те файлы, которые мне нужны, и заставить его работать с sync.WaitgGroup, чтобы он работал одновременно. Я подумал, что это будет полезно на случай, если мне когда-нибудь придется загружать еще много файлов в будущем.