GNU/Linux >> Znalost Linux >  >> Linux

Jak používat AWS CLI ke správě Amazon S3

AWS Command Line Interface (CLI) je jednotný nástroj pro správu vašich služeb AWS. S jediným nástrojem ke stažení a konfiguraci můžete ovládat více služeb AWS z příkazového řádku a automatizovat je pomocí skriptů. Tento článek popisuje, jak používat AWS CLI ke správě bucketů a objektů Amazon S3, se spoustou příkladů, které můžete použít při svých každodenních aktivitách AWS.

Kromě AWS CLI důrazně doporučujeme nainstalovat aws-shell. Tento shellový program příkazového řádku poskytuje funkce pro pohodlí a produktivitu, které pomáhají novým i pokročilým uživatelům rozhraní příkazového řádku AWS. Mezi klíčové funkce patří následující:

  • Fuzzy automatické dokončování pro příkazy, možnosti a zdroje AWS CLI
  • Dynamická in-line dokumentace
  • Provádění příkazů prostředí OS
  • Exportovat provedené příkazy do textového editoru

A nakonec vám doporučujeme nainstalovat plugin Session Manager pro AWS CLI, který vám umožní používat rozhraní příkazového řádku AWS (AWS CLI) k zahájení a ukončení relací, které vás připojí k vašim instancím EC2.

Instalace AWS CLI

AWS CLI můžete nainstalovat na Windows, macOS a Linux. Kromě toho Amazon Linux AMI již obsahuje AWS CLI jako součást distribuce OS, takže jej nemusíte instalovat ručně.

Windows

U moderních distribucí Windows doporučujeme k instalaci AWS CLI použít správce balíčků Chocolatey:

# AWS CLI
choco install awscli

# Session Manager plugin
choco install awscli-session-manager

# AWS-Shell
choco install python
choco install pip
pip install aws-shell

macOS

Chcete-li nainstalovat AWS CLI na macOS, doporučujeme použít správce balíčků:

# AWS CLI
brew install awscli

# Session Manager plugin
brew install --cask session-manager-plugin

# AWS-Shell
pip install aws-shell

Linux

V závislosti na vaší distribuci Linuxu se kroky instalace liší.

CentOS, Fedora, RHEL

Pro distribuce založené na YUM (CentOS, Fedora, RHEL) můžete použít následující instalační kroky:

# AWS CLI
sudo yum update
sudo yum install wget -y
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install epel-release-latest-7.noarch.rpm
sudo yum -y install python-pip
sudo pip install awscli

# Session Manager plugin
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm" \
  -o "session-manager-plugin.rpm"
sudo yum install -y session-manager-plugin.rpm

# AWS-Shell
pip install aws-shell

Debian, Ubuntu

Pro distribuce založené na APT (Debian, Ubuntu) můžete použít mírně odlišné instalační kroky:

# AWS CLI
sudo apt-get install python-pip
sudo pip install awscli

# Session Manager plugin
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" \
  -o "session-manager-plugin.deb"
sudo dpkg -i session-manager-plugin.deb

# AWS-Shell
pip install aws-shell

Další distribuce Linuxu

Pro ostatní distribuce Linuxu můžete použít ruční kroky instalace AWS CLI.

Rozdíl mezi AWS s3, s3api a s3control

Hlavní rozdíl mezi s3 ,  s3api a s3control příkazy jsou, že s3 příkazy jsou příkazy na vysoké úrovni postavené na nižší úrovni s3api příkazy řízené modely JSON.

s3 s3api s3control
Tyto příkazy jsou speciálně navrženy tak, aby usnadnily správu souborů S3 pomocí CLI. Tyto příkazy jsou generovány z modelů JSON, které přímo modelují rozhraní API různých služeb AWS. To umožňuje rozhraní CLI generovat příkazy, které jsou téměř jednoznačným mapováním rozhraní API služby Tyto příkazy vám umožňují spravovat řídicí rovinu Amazon S3
aws s3 ls aws s3api list-objects-v2 --bucket my-bucket aws s3control list-jobs --account-id 123456789012

Pokud byste chtěli vidět, jak používat tyto příkazy k interakci s koncovými body VPC, přečtěte si náš článek Automatizace přístupu ke koncovým bodům VPC ve více regionech pomocí Terraform.

Příkazy CLI AWS S3

Obvykle používáte příkazy AWS CLI ke správě S3, když potřebujete automatizovat operace S3 pomocí skriptů nebo v automatizačním kanálu CICD. Můžete například nakonfigurovat kanál Jenkins tak, aby spouštěl příkazy AWS CLI pro jakýkoli účet AWS ve vašem prostředí.

Tato část článku pokryje nejběžnější příklady použití příkazů AWS CLI ke správě bucketů a objektů S3.

Správa segmentů S3

AWS CLI podporuje operace vytváření, vytváření seznamů a odstraňování pro správu segmentů S3.

Vytvořit segment S3

Chcete-li vytvořit segment S3 pomocí AWS CLI, musíte použít aws s3 mb (m ake b ucket) příkaz:

aws s3 mb s3://hands-on-cloud-example-1

Poznámka :Název segmentu S3 musí vždy začínat z s3:// prefix.

Chcete-li vytvořit segment S3 pomocí AWS CLI v konkrétní oblasti AWS, musíte přidat --region argument k předchozímu příkazu:

aws s3 mb s3://hands-on-cloud-example-2 --region us-east-2

Uveďte seznam segmentů S3

Chcete-li vypsat segmenty S3 pomocí AWS CLI, můžete použít buď aws s3 ls nebo aws s3api list-buckets příkazy.

aws s3 ls

aws s3api list-buckets příkaz vytvoří JSON jako výstup:

aws s3api list-buckets

Pomocí aws s3api příkaz vám umožňuje použít --query parametr pro provádění dotazů JMESPath pro konkrétní členy a hodnoty ve výstupu JSON.

Vytvářejme pouze segmenty, jejichž názvy začínají hands-on-cloud-example :

aws s3api list-buckets --query \
  'Buckets[?starts_with(Name, `hands-on-cloud-example`) == `true`].Name'

Předchozí příkaz můžeme rozšířit tak, aby vypisoval pouze názvy bucketů S3:

aws s3api list-buckets --query \
  'Buckets[?starts_with(Name, `hands-on-cloud-example`) == `true`].[Name]' \
  --output text

Smazat segment S3

Chcete-li odstranit segment S3 pomocí AWS CLI, můžete použít buď aws s3 rb nebo aws s3api delete-bucket příkazy.

aws s3 rb s3://hands-on-cloud-example-1

Poznámka :můžete odstranit pouze prázdné buckety S3

Pokud váš bucket S3 obsahuje objekty, můžete použít --force argument pro vyčištění kbelíku před odstraněním:

aws s3 rb s3://hands-on-cloud-example-2 --force

Poznámka :--force argument nemaže objekty s verzí, což by způsobilo selhání smazání bloku.

Chcete-li odstranit sektor S3 s povoleným verzováním objektů, musíte jej nejprve vyčistit:

export bucket_name="hands-on-cloud-versioning-enabled"

# Deleting objects versions

aws s3api delete-objects \
    --bucket $bucket_name \
    --delete "$(aws s3api list-object-versions \
    --bucket $bucket_name \
    --output=json \
    --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"

# Deleting delete markers

aws s3api delete-objects \
    --bucket $bucket_name \
    --delete "$(aws s3api list-object-versions \
    --bucket $bucket_name \
    --output=json \
    --query='{Objects: Contents[].{Key:Key,VersionId:VersionId}}')"

# Deleting S3 bucket

aws s3 rb s3://$bucket_name

Správa objektů S3

V této části článku pokryjeme nejběžnější operace AWS CLI pro správu objektů S3.

Nahrát soubor do segmentu S3

Chcete-li nahrát soubor do bucketu S3 pomocí AWS CLI, musíte použít ether aws s3 cp příkaz:

aws s3 cp ./Managing-AWS-IAM-using-Terraform.png s3://hands-on-cloud-example-1

V případě potřeby můžete změnit název nahraného objektu S3 během operace nahrávání:

aws s3 cp ./Managing-AWS-IAM-using-Terraform.png s3://hands-on-cloud-example-1/image.png

Kromě toho můžete při nahrávání určit třídu úložiště S3:

aws s3 cp ./Managing-AWS-IAM-using-Terraform.png s3://hands-on-cloud-example-1 --storage-class ONEZONE_IA

Podporované parametry pro --storage-class argumenty jsou:

  • STANDARD – výchozí, Amazon S3 Standard
  • REDUCED_REDUNDANCY – úložiště Amazon S3 se sníženou redundancí
  • STANDARD_IA – Amazon S3 standardní – občasný přístup
  • ONEZONE-IA – Amazon S3 One Zone – občasný přístup
  • INTELLIGENT_TIERING – Amazon S3 Intelligent-Tiering
  • LEDovec – ledovec Amazon S3
  • DEEP_ARCHIVE – Amazon S3 Glacier Deep Archive

Pokud má být soubor zašifrován výchozím šifrováním SSE, musíte zadat --sse argument:

aws s3 cp ./Managing-AWS-IAM-using-Terraform.png s3://hands-on-cloud-example-1 --sse AES256

Pro šifrování KMS použijte následující příkaz:

aws s3 cp ./Managing-AWS-IAM-using-Terraform.png s3://hands-on-cloud-example-1 --sse 'aws:kms' --sse-kms-key-id KMS_KEY_ID

Poznámka :nahradit KMS_KEY_ID v příkazu výše s vaším vlastním ID klíče KMS.

Nahrát více souborů do bloku S3

Chcete-li nahrát více souborů do bloku S3, musíte použít buď aws s3 cp příkaz s --recursive argument nebo aws s3 sync příkaz.

aws s3 cp ./directory s3://hands-on-cloud-example-1/directory --recursive

Poznámka :výše uvedený příkaz nenahraje prázdné adresáře, pokud existují v ./directory cesta (nevytvoří objekty S3, které je budou reprezentovat).

Chcete-li nastavit třídu úložiště S3 nebo šifrování, můžete použít stejné argumenty jako ve výše uvedených příkladech.

Kromě toho můžete použít --include a --exclude argumenty k určení sady souborů k nahrání.

Pokud například potřebujete zkopírovat pouze .png soubory z ./directory , můžete použít následující příkaz:

aws s3 cp ./directory s3://hands-on-cloud-example-1/directory --recursive --exclude "*" --include "*.png"

Stejného výsledku můžete dosáhnout pomocí aws s3 sync příkaz:

aws s3 sync ./directory s3://hands-on-cloud-example-1/directory

Poznámka :aws s3 sync podporuje stejné argumenty pro nastavení třídy úložiště S3 a šifrování.

Výhoda použití aws s3 sync příkaz je, že tento příkaz nahraje pouze změněné soubory z vašeho lokálního souborového systému při příštím spuštění.

Můžete použít --delete argument pro smazání objektů z bucketu S3, pokud byly smazány ve vašem lokálním souborovém systému (kompletní synchronizace):

aws s3 sync ./directory s3://hands-on-cloud-example-1/directory --delete

Stáhnout soubor z bloku S3

Chcete-li stáhnout jeden soubor z bucketu S3 pomocí AWS CLI, musíte použít aws s3 cp příkaz:

aws s3 cp s3://hands-on-cloud-example-1/image.png ./image.png

Stáhnout více souborů z bloku S3

Chcete-li stáhnout více souborů z bloku S3 pomocí AWS CLI, musíte použít buď aws s3 cp nebo aws s3 sync příkaz:

aws s3 cp s3://hands-on-cloud-example-1/directory ./directory --recursive

Poznámka :pokud segment S3 obsahuje prázdné „adresáře“ v /directory prefix, provedení výše uvedeného příkazu vytvoří prázdné adresáře ve vašem lokálním souborovém systému.

Podobně jako u operace nahrávání můžete synchronizovat všechny objekty z bucketu S3 v rámci společné předpony do vašeho místního adresáře:

aws s3 sync s3://hands-on-cloud-example-1/directory ./directory

Poznámka :pro oba příkazy (aws s3 cp a aws s3 sync ) můžete použít --include a --exclude argumenty ke stažení nebo synchronizaci pouze určité sady souborů.

Poznámka :pomocí --delete argument s aws s3 sync vám umožní získat kompletní zrcadlo předpony objektů S3 ve vaší místní složce.

Seznam souborů v segmentu S3

Chcete-li zobrazit soubory v bucketu S3 pomocí AWS CLI, musíte použít aws s3 ls příkaz:

aws s3 ls s3://hands-on-cloud-example-1

Velikosti objektů čitelných pro člověka můžete získat pomocí --human-readable argument:

aws s3 ls s3://hands-on-cloud-example-1 --human-readable

Můžete použít --recursive argument pro výpis všech objektů S3 v segmentu S3 nebo se stejnou předponou:

# Recursive listing of the entire S3 bucket 
aws s3 ls s3://hands-on-cloud-example-1 --recursive

# Recursive listing for the S3 prefix 
aws s3 ls s3://hands-on-cloud-example-1/directory --recursive

Přejmenovat objekt S3

Chcete-li přejmenovat objekt S3 pomocí AWS CLI, musíte použít aws s3 mv příkaz:

aws s3 mv s3://hands-on-cloud-example-1/image.png s3://hands-on-cloud-example-1/image2.png

Poznámka :můžete nejen přejmenovat objekty S3, ale také změnit jejich třídu úložiště a šifrování, například:

aws s3 mv s3://hands-on-cloud-example-1/image2.png s3://hands-on-cloud-example-1/image.png \
   --sse AES256 --storage-class ONEZONE_IA

Přejmenovat „adresář“ S3

Chcete-li přejmenovat „adresář“ S3 pomocí AWS CLI, musíte použít aws s3 mv příkaz:

aws s3 mv s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-1/directory2 --recursive

Poznámka :--recursive argument nepřesouvá prázdné „adresáře“ v rámci specifikovaného „adresáře“ S3, takže pokud očekáváte úplný přesun „adresáře“, možná budete muset znovu vytvořit prázdné „adresáře“ v cílovém adresáři (aws s3 put-object příkaz) a odeberte je ze zdrojového adresáře (viz příklady níže).

Vytvořit prázdný „adresář“ S3

Chcete-li vytvořit prázdný „adresář“ S3 pomocí AWS CLI, musíte použít aws s3 put-object příkaz:

aws s3api put-object --bucket hands-on-cloud-example-1 --key directory_name/

Poznámka :/ znak v názvu objektu je nutný k vytvoření prázdného adresáře. V opačném případě výše uvedený příkaz vytvoří souborový objekt s názvem directory_name .

Kopírování/přesouvání souborů mezi segmenty S3

Chcete-li kopírovat soubory mezi segmenty S3 pomocí AWS CLI, musíte použít buď aws s3 cp nebo aws s3 sync příkaz. Chcete-li přesunout soubory mezi segmenty S3, musíte použít aws s3 mv příkaz.

Kopírování souborů mezi segmenty S3 v rámci stejné oblasti AWS:

aws s3 cp s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-2/directory --recursive

Pokud se zdrojové a cílové segmenty S3 nacházejí v různých oblastech AWS, musíte použít --source-region a --region (zadané umístění cílového segmentu S3) argumenty:

aws s3 cp s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-2/directory --recursive \
   --region us-west-2 --source-region us-east-1

Chcete-li přesunout objekty mezi segmenty S3 v rámci stejné oblasti, musíte použít aws s3 mv příkaz:

aws s3 mv s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-2/directory --recursive

Pokud se zdrojové a cílové segmenty S3 nacházejí v různých oblastech AWS, musíte použít --source-region a --region (zadané umístění cílového segmentu S3) argumenty:

aws s3 mv s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-2/directory --recursive \
   --region us-west-2 --source-region us-east-1

Poznámka :můžete použít --storage-class a --sse argumenty pro určení třídy úložiště a metody šifrování v cílovém segmentu S3

Poznámka :můžete použít --include a --exclude argumenty pro výběr pouze konkrétních souborů ke zkopírování/přesunutí ze zdrojového segmentu S3

Poznámka :--recursive argument nekopíruje/přesouvá prázdné „adresáře“ v rámci specifikované předpony S3, takže pokud očekáváte kompletní kopírování/přesunutí „adresáře“, možná budete muset znovu vytvořit prázdné „adresáře“ v cílovém adresáři (aws s3 put-object příkaz). Viz příklady výše.

Chcete-li synchronizovat „adresáře“ mezi segmenty S3, musíte použít aws s3 sync příkaz, například:

aws s3 sync s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-2/directory

Poznámka :můžete použít argumenty jako --storage-class , --sse , --include a --exclude pomocí aws s3 sync příkaz:

aws s3 sync s3://hands-on-cloud-example-1/directory s3://hands-on-cloud-example-2/directory \
   --region us-west-2 --source-region us-east-1 --sse AES256

Odstranění objektů S3

Chcete-li odstranit objekty S3 pomocí AWS CLI, musíte použít aws s3 rm příkaz:

aws s3 rm s3://hands-on-cloud-example-1/image.png

Poznámka :můžete použít --recursive , --include a --exclude argumenty pomocí aws s3 rm příkaz.

Generovat předem podepsané adresy URL pro objekt S3

Chcete-li vygenerovat předem podepsanou adresu URL pro objekt S3 pomocí AWS CLI, musíte použít aws s3 presign příkaz:

aws s3 presign s3://hands-on-cloud-example-1/image.png --expires-in 604800

Poznámka :argument –expires-in definuje dobu vypršení platnosti předem podepsané adresy URL v sekundách mezi 3600 (min) a 604800 (max) sekundami.

Nyní můžete použít vygenerovanou předem podepsanou adresu URL ke stažení objektu S3 pomocí webového prohlížeče nebo wget příkaz, například:

wget generated_presigned_url

Nebo nahraďte objekt S3 pomocí curl příkaz:

curl -H "Content-Type: image/png" -T image.png generated_presigned_url

Poznámka :pokud získáváte The request signature we calculated does not match the signature you provided. Check your key and signing method. chybová zpráva, musíte znovu vygenerovat přístupový klíč AWS a tajný klíč AWS. Primárním důvodem chyby je, že přihlašovací údaje AWS obsahují určité znaky, jako je + , % a / .

Shrnutí

V tomto článku jsme probrali, jak používat AWS CLI ke správě bucketů a objektů Amazon S3, se spoustou příkladů, které můžete použít při svých každodenních aktivitách AWS.


Linux
  1. Jak nainstalovat a používat Flatpak v Linuxu

  2. Jak nainstalovat MySQL 5.7 na Amazon Linux

  3. Jak nainstalovat awscli

  1. Jak nainstalovat AWS CLI na Ubuntu 20.04 Focal Fossa Linux

  2. Jak nainstalovat a používat Helm v Kubernetes

  3. Jak nainstalovat AWS CLI na Ubuntu 20.04 LTS

  1. Jak nainstalovat a používat Linux Screen?

  2. Jak vytvořit obraz Amazon Machine Image (AMI) a použít jej na AWS

  3. Co je Terraform a jak jej nainstalovat a používat na AWS EC2