Przejdź do treści

AWS S3 CLI – kilka porad do automatyzacji

AWS S3 cli kilka porad do automatyzacji 2022

Amazon S3 jest naprawdę tanim chmurowym storage i warto z niego korzystać. Poniżej zamieszczam kilka przykładów, które pomogą w procesach automatyzacji. Na S3 możesz zamieszczać pliki, do których chcesz mieć dostęp przez internet. Może ich używać twoja strona albo ludzie z niej korzystający.

Na AWS S3 można trzymać też pliki, których chcesz użyć w automatyzacji.

Install AWS CLI

Na początku, jeśli jeszcze nie masz, to musisz zainstalować na swojej maszynie aws cli. Najlepiej od razu w wersji 2:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Public S3 bucket

Jeśli masz S3 bucket, który jest dostępny publicznie, to możesz bez podawania loginu i hasła przeglądać i pobierać jego zawartość, wystarczy dodać parametr –no-sign-request jak w przykładzie poniżej:

#przeglądanie zawartości:
aws s3 ls s3://awstest-test1/ --no-sign-request
aws s3 ls s3://awstest-test1/ --no-sign-request --recursive
#kopiowanie 1 pliku:
aws s3 cp s3://awstest-test1/fajny_skrypt.sh ./ --no-sign-request
#kopiowanie katalogu:
aws s3 cp s3://awstest-test1/test  ./ --recursive --no-sign-request

Dzięki temu bez podawania poświadczeń możesz mieć zawsze dostęp do potrzebnych rzeczy wystawionych publicznie. Oczywiście podając bezpośredni adres pliku, dostaniesz się do niego po http, ale tu chodzi o cli.

Private S3 bucket

Jeśli S3 nie jest publiczne (zalecana opcja), a chcesz coś z niego pobierać, to musisz znaleźć Id i access key użytkownika, który ma uprawnienia i zapisać je w pliku ~/.aws/credentials. Uwaga, używając poniższego przykładu, plik zostanie nadpisany.

mkdir -p ~/.aws
cat >> ~/.aws/credentials << EOF
[default]
aws_access_key_id=AKIAXDKQARC6TU6EXXZO
aws_secret_access_key=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
EOF

Jeśli w przykładzie poprawnie podmieniłeś Id i klucz, a użytkownik ma uprawnienia do S3, to bez problemu możesz pobierać z niego pliki, które nie są dostępne publicznie.

#kopiowanie 1 pliku:
aws s3 cp s3://awstest-test1/fajny_skrypt.sh ./ 
#kopiowanie katalogu:
aws s3 cp s3://awstest-test1/test  ./ --recursive 

Możesz, też ręcznie dodać konfiguracje użytkownika używając:

aws configure

Inne przydatne polecenia AWS S3

Podsumowanie wielkości plików w S3:

aws s3 ls s3://awstest-test1/ --recursive --human-readable --summarize

Przenoszenie plików, które nie są w formacie .jpg:

aws s3 mv s3://awstest-test1/ --recursive --exclude "*.jpg"

Przenoszenie danych pomiędzy dwoma bucketami S3:

aws s3 mv s3://awstest-test1/ s3://awstest-test2/ --recursive

Ostatnie bardzo fajne polecenie do synchronizacji plików, które możemy odpalać np. z crona:

#z S3 do maszyny
aws s3 sync s3://awstest-test1/test /syncfolder

#z maszyny od s3
aws s3 sync /syncfolder s3://awstest-test1/test 

Więcej na temat S3 znajdziesz w dokumentacji AWS. Zachęcam do przeglądania, jeśli potrzeba czegoś konkretnego.

Jeśli spodobał ci się taki krótki wpis na temat AWS, to zachęcam do zostawienia komentarza i zajrzenia do innych artykułów w kategorii AWS.

4 komentarze do “AWS S3 CLI – kilka porad do automatyzacji”

  1. Jak dodać takie zadanie synchronizacji w Linux, żeby wykonywało się automatycznie ??

    1. Cześć, najprościej użyć chyba crontaba.
      Jeśli chcesz synchronizować np. pliki na maszynie w folderze /var/backups/ z tymi w S3, to uruchom z linii komend “crontab -e” potem dopisz coś takiego:
      0 */3 * * * aws s3 sync /var/backups/ s3://awstest-test1/backup

      W powyższym przykładzie co 3 godziny wykona się prosty backup synchronizujący pliki. Jeśli chcesz zmienić interwał czasowy to według schematu:)

      0 */3 * * * command to be executed
      – – – – –
      | | | | |—– Day of week (0 – 7) (Sunday=0 or 7)
      | | | |——- Month (1 – 12)
      | | |——— Day of month (1 – 31)
      | |———– Hour (0 – 23)
      |————- Minute (0 – 59)

      Jeśli chcesz uruchamiać jednocześnie więcej poleceń, to lepiej zapisz je jako skrypt i uruchom np:
      0 */3 * * * /path/to/script.sh
      Gdybyś chciał uruchomić codziennie o godzinie 17:00 to tworzysz:
      0 17 * * * /path/to/script.sh

      Gdybyś miał jeszcze jakieś pytania to pisz śmiało 🙂

      Pozdrawiam Wojtek

    1. Najlepiej przyznawać jak najmniej uprawnień. W zależności, czy chcesz odczytywać z S3, czy zapisywać wybierz zawsze najmniejsze.

      Najprościej będzie użyć generatora https://awspolicygen.s3.amazonaws.com/policygen.html

      Wyklikasz sobie co potrzebujesz a on przygotuje gotową polise pod S3.

      Jeśli nie masz pewności co potrzebujesz, to przyznaj większe uprawnienia, sprawdź czy działa. Jak będzie działać, to zmniejszaj uprawnienia i testuj, by było ich jak najmniej a działało.
      Ja tak robiłem na początku 😀

Możliwość komentowania została wyłączona.