ECS: Jak skonfigurować i używać interfejsu wiersza poleceń platformy AWS S3
Summary: W przypadku korzystania z interfejsu wiersza polecenia platformy AWS w celu przetestowania scenariuszy klienta, w którym korzysta on z interfejsu wiersza polecenia platformy AWS z ECS w celu potwierdzenia funkcjonalności i zgodności, należy zawsze zapoznać się z podręcznikiem dostępu do danych ECS dla wywołań API obsługiwanych przez ECS AWS S3. ...
Instructions
AWS Command-Line Interface (AWS CLI) to narzędzie AWS, które może służyć do testowania poleceń wysokiego poziomu S3 i s3 API-Level (s3api)
Polecenia wysokiego poziomu aws s3 (External Link) obsługują typowe operacje zasobnika, takie jak tworzenie, wyświetlanie listy i usuwanie zasobników. Jak pobrać i zainstalować narzędzie, wszystkie obsługiwane polecenia wysokiego poziomu można uzyskać w zestawie poleceń za pomocą polecenia aws s3api help.
Identyfikator S3Uri: Reprezentuje lokalizację obiektu, prefiksu lub zasobnika S3 — należy to zapisać w formularzu s3://mybucket/mykey gdzie mybucket jest określony w łyżce S3, mykey to określony S3. Argument path musi zaczynać się od s3://
Polecenia aws s3api (External Link) na poziomie interfejsu API są zawarte w zestawie poleceń s3api. Te polecenia interfejsu API S3 zapewniają dostęp do metadanych zasobnika, takich jak lista ACL zasobnika, zasady zasobnika, zasady cyklu życia, aby wymienić tylko kilka, wszystkie obsługiwane wywołania interfejsu API można uzyskać w zestawie poleceń za pomocą polecenia aws s3api help.
- AWS CLI domyślnie automatycznie używa do 10 wątków do przesyłania plików lub części podczas przesyłania
- Interfejs wiersza polecenia AWS automatycznie używa przesyłania multipart_threshold dla plików >= rozmiar pliku 8 MB, multipart_chunksize
Instrukcje pobierania i instalacji.
- Wersje https://github.com/aws/aws-cli/releases (łącze zewnętrzne)
- Pobieranie i instalowanie pakietu interfejsu wiersza polecenia platformy AWS
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
- Wyodrębnij pakiet
# unzip awscli-bundle.zip
- Uruchom polecenie instalacji
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
- Potwierdź wersję
# aws version
Output: aws-cli/2.0.33 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev37
Konfigurowanie interfejsu wiersza poleceń platformy AWS
W tej sekcji wyjaśniono podstawowe kroki konfiguracji interfejsu wiersza polecenia platformy AWS do użytku z ECS S3 przy użyciu użytkownika obiektu ECS. W tej sekcji założono, że użytkownik Bucket i obiektu zostały już utworzone w ECS. Poświadczenia i plik konfiguracyjny są aktualizowane po uruchomieniu poleceniaaws configure.
Plik poświadczeń znajduje się tutaj
~/.aws/credentials. Plik poświadczeń przechowuje szczegóły profilu użytkownika (identyfikator klucza dostępu i klucze dostępu tajnego), plik konfiguracji przechowuje szczegóły regionu i formatu wyjściowego.
Wymagane:
- Identyfikator klucza dostępu: Użytkownik obiektu ECS
- Tajny klucz dostępu: Tajny klucz
- W tym przykładzie tworzona jest nazwa profilu mc_s3
# aws configure --profile mc_s3
Prompt:
AWS Access Key ID [None]: mc_s3
AWS Secret Access Key [None]: 1guFemRLSgqFau6uKzIVAZJu5+PS+S8qO7rvEsi7
Default region name [None]:
Default output format [None]: json
- Wyświetlanie listy profili wszystkich profilów (list-properties dostępne w interfejsie wiersza polecenia platformy AWS w wersji 2
# aws configure list-properties
Output:
mc_s3
ad_uid1
# aws configure list
Output: Name Value Type Location ---- ----- ---- -------- profile <not set> None None access_key ****************c_s3 shared-credentials-file secret_key ****************Esi7 shared-credentials-file region config-file ~/.aws/config
- Profil specyficzny dla listy
# aws configure get aws_access_key_id --profile mc_s3
Output:
mc_s3
Dealing with SSL connections and error on self signed certificate. ( [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056))
- W przypadku korzystania z poleceń w wersji 9021, opcja AWS CLI
--no-verify-ssljest wymagane, aby ominąć błąd certyfikatu z podpisem własnym.
# aws --profile mc_s3 --endpoint=https://ecshop:9021 s3api list-buckets
Output:
SSL validation failed for https://ecshop:9021/mc_s3_bkt?acl [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1056)
- Uruchom polecenie za pomocą polecenia
--no-verifyOpcja obejścia tego błędu
# aws --profile mc_s3 --endpoint=https://ecshop:9021 s3api list-buckets --no-verify-ssl --output text
Output: /usr/local/aws-cli/v2/2.0.33/dist/urllib3/connectionpool.py:986: InsecureRequestWarning: Unverified HTTPS request is being made to host 'ecshop'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings BUCKETS 2020-02-24T21:24:29.440000+00:00 mc_s3_bkt BUCKETS 2020-05-06T17:23:48.870000+00:00 mc_s3_bkt2_backup BUCKETS 2020-05-06T21:16:13.344000+00:00 mc_s3_bkt_nfs OWNER mc_s3 mc_s3
- Drugą opcją jest pobranie certyfikatu ECS z podpisem własnym zapisanego w formacie PEM i użycie
--ca-bundleopcja - Użyj OpenSSL, aby uzyskać certyfikat ECS dla dostępu do danych obiektu na porcie 9021 i skopiuj zawartość certyfikatu za pomocą ulubionego edytora i zapisz wraz z nagłówkami certyfikatów zgodnie z poniższym przykładem.
# openssl s_client -connect ecshop:9021
ecshop to adres IP lub nazwa hosta węzła ECS, a xxxxxx powinien oznaczać cały certyfikat w danym środowisku.
Output: -----BEGIN CERTIFICATE----- Xxxxxxxxx xxxxxxxxx ... ... -----END CERTIFICATE-----
- Lista zasobników w tabeli przyjazna dla człowieka z opcją ca-bundle, w której certyfikat jest zapisany w pliku PEM o nazwie ecshop_cert_pem
# aws --profile mc_s3 --endpoint=https://ecshop:9021 s3api list-buckets --ca-bundle ecshop_cert.pem --output table
Output: ------------------------------------------------------------- | ListBuckets | +-----------------------------------------------------------+ || Buckets || |+-----------------------------------+---------------------+| || CreationDate | Name || |+-----------------------------------+---------------------+| || 2020-02-24T21:24:29.440000+00:00 | mc_s3_bkt || || 2020-05-06T17:23:48.870000+00:00 | mc_s3_bkt2_backup || || 2020-05-06T21:16:13.344000+00:00 | mc_s3_bkt_nfs || |+-----------------------------------+---------------------+| || Owner || |+-----------------------------------+---------------------+| || DisplayName | ID || |+-----------------------------------+---------------------+| || mc_s3 | mc_s3 || |+-----------------------------------+---------------------+|
Podstawowe operacje S3
https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html (łącze zewnętrzne)Dostrajanie wydajności
- max_concurrent_requests — maksymalna liczba współbieżnych żądań
- max_queue_size — maksymalna liczba zadań w kolejce zadań
- multipart_threshold — próg rozmiaru używany przez interfejs wiersza polecenia dla wieloczęściowych transferów pojedynczych plików.
- multipart_chunksize — w przypadku korzystania z transferów wieloczęściowych jest to rozmiar fragmentu używany przez interfejs wiersza polecenia do wieloczęściowych transferów poszczególnych plików.
- max_bandwidth — maksymalna przepustowość używana do przekazywania i pobierania danych do i z usługi Amazon S3.
# cat .aws/config
Output: [profile mc_s3] output = json s3 = endpoint_url = http://ecshop:9020 max_concurrent_requests = 20 max_queue_size = 1000 multipart_threshold = 64MB multipart_chunksize = 16MB max_bandwidth = 50MB/s addressing_style = autoKorzystanie z
aws configure set polecenie ustawiania parametrów w celu dostrojenia prędkości przesyłania
$ aws configure set default.s3.max_concurrent_requests 20 $ aws configure set default.s3.max_queue_size 10000 $ aws configure set default.s3.multipart_threshold 64MB $ aws configure set default.s3.multipart_chunksize 16MB $ aws configure set default.s3.max_bandwidth 50MB/s $ aws configure set default.s3.addressing_style autoCzynności:
- Utwórz zasobnik za pomocą
s3 mbcommand
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
make_bucket: s3_bkt
- Wyświetlanie listy zasobników za pomocą
s3 lsis3api list-bucketszestawy poleceń wyświetlają zasobniki dla wszystkich innych operacji (określanych w S3 jako "prefiksy") (łącze zewnętrzne) w zasobniku
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 ls
Output:
2020-07-29 20:34:24 s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-buckets
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-buckets
Output:
aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-buckets
{
"Buckets": [
{
"Name": "mc_s3_bkt",
"CreationDate": "2020-02-24T21:24:29.440000+00:00"
},
{
"Name": "mc_s3_bkt2_backup",
"CreationDate": "2020-05-06T17:23:48.870000+00:00"
},
{
"Name": "mc_s3_bkt_nfs",
"CreationDate": "2020-05-06T21:16:13.344000+00:00"
},
{
"Name": "s3_bkt",
"CreationDate": "2020-07-30T00:34:24.147000+00:00"
},
- Tworzenie i przesyłanie plików do testów
- Przykład: tworzenie plików o rozmiarze 1 MB i 4 MB
# dd if=/dev/zero of=1MB_output.file bs=1024 count=1024 # dd if=/dev/zero of=4MB_output.file bs=1024 count=4096
- Przykład: tworzenie dużego pliku o pojemności 2 GB
# dd if=/dev/urandom of=bigfile_2GB bs=1024k count=2048
- Prześlij plik o rozmiarze 1 MB do zasobnika
s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 cp 1MB_output.file s3://s3_bkt
Output:
upload: ./1MB_output.file to s3://s3_bkt/1MB_output.file
- Lista plików w bucket,
s3_bktUżywanie nazwy profilu mc_s3 używanies3 lslubs3api list-objectsZestawy poleceń
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 ls s3://s3_bkt
Output: 2020-07-29 20:39:43 16.0 MiB 16MB_output.file 2020-07-29 20:37:25 1.0 MiB 1MB_output.file 2020-07-29 20:39:23 4.0 MiB 4MB_output.file
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-objects --bucket s3_bkt Output: { "Contents": [ { "Key": "16MB_output.file", "LastModified": "2020-07-30T00:39:43.125000+00:00", "ETag": "\"3a2d20e2e504fe056bbaae5b4c2351fd-2\"", "Size": 16777216, "StorageClass": "STANDARD", "Owner": { "DisplayName": "mc_s3", "ID": "mc_s3" } }, { "Key": "1MB_output.file", "LastModified": "2020-07-30T00:37:25.033000+00:00", "ETag": "\"b6d81b360a5672d80c27430f39153e2c\"", "Size": 1048576, "StorageClass": "STANDARD", "Owner": { "DisplayName": "mc_s3", "ID": "mc_s3" } },
- Wyświetlanie listy wersji obiektów
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
- Pobierz plik, 1MB_output.file z
s3_bktdo katalogu /tmp na komputerze lokalnym.
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 cp s3://s3_bkt/1MB_output.file /tmp/
Output:
download: s3://s3_bkt/1MB_output.file to ../../tmp/1MB_output.file
- Sprawdź listę ACL pliku 1MB_output.file w formacie YAML, aby uzyskać dane wyjściowe pod kątem czytelności
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-object-acl --bucket s3_bkt --key 1MB_output.file --output yaml
Output: Grants: - Grantee: DisplayName: mc_s3 ID: mc_s3 Type: CanonicalUser Permission: FULL_CONTROL Owner: DisplayName: mc_s3 ID: mc_s3
- Sprawdź listę ACL zasobnika w zasobniku
s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-acl --bucket s3_bkt --output yaml
Output: Grants: - Grantee: DisplayName: mc_s3 ID: mc_s3 Type: CanonicalUser Permission: FULL_CONTROL Owner: DisplayName: mc_s3 ID: mc_s3
- Sprawdź wersję zasobnika lub włącz przechowywanie wersji w zasobniku
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:
{
"Status": "Enabled"
}
- Inicjowanie przesyłania wieloczęściowego przy użyciu interfejsu API s3api przy użyciu dużego pliku
- Utwórz plik o rozmiarze 5 GB:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
- Rozpocznij przesyłanie
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api create-multipart-upload --bucket s3_bkt --key bigfile_5GB
Output:
{
"Bucket": "s3_bkt",
"Key": "bigfile_5GB",
"UploadId": "27cb6c45ab5c4c838fb5893263d871d3"
}
- Wyświetlanie listy niekompletnych plików wieloczęściowych https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/ przesyłania (łącze zewnętrzne)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-multipart-uploads --bucket s3_bkt
Output:
{
"Uploads": [
{
"UploadId": "27cb6c45ab5c4c838fb5893263d871d3",
"Key": "bigfile_5GB",
"Initiated": "2020-07-31T01:10:56.323000+00:00",
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "mc_s3",
"ID": "mc_s3"
}
}
]
}
- Poprawiać
s3 cpZalecenia dotyczące wydajności polecenia lub zasobnika do zasobnika dla dużych plików w celu zainicjowania przesyłania wieloczęściowego i zmiany równoczesnych wątków, patrz powyżej w sekcji Dostrajanie wydajności.
- Wykonaj kopiowanie z zasobnika do zasobnika, aby skopiować file.txt w
mc_s3_bktnas3_bktza pomocą S3api
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api copy-object --copy-source mc_s3_bkt/file.txt --key file.txt --bucket s3_bkt
Output:
{
"VersionId": "1596159769267",
"CopyObjectResult": {
"ETag": "\"c789e490a90359de2bd3b09d7e957cfd-128\"",
"LastModified": "2020-07-31T01:42:49.267000+00:00"
}
}
- Wyświetlanie listy plików (obiektów lub kluczy) w zasobniku
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 ls s3://s3_bkt/file.txt --human-readable summarize
Output:
2020-07-30 21:42:49 1.0 GiB file.txt
- Kopiowanie pliku z
S3_bktnamc_s3_bktKorzystanie z zestawu poleceń wysokiego poziomu S3 CP
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 cp s3://s3_bkt/file.txt s3://mc_s3_bkt/file2.txt
Output: copy: s3://s3_bkt/file.txt to s3://mc_s3_bkt/file2.txt
- Sprawdzanie, czy przechowywanie wersji jest włączone w zasobniku
s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:
{
"Status": "Enabled"
}
- Usuń zasobnik za pomocą
s3 rbpolecenie (polecenie nie ma danych wyjściowych)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
- Poniższy przykład powoduje usunięcie wszystkich obiektów i podfolderów w zasobniku, a następnie usunięcie zasobnika. (jeśli przechowywanie wersji jest włączone, to polecenie nie usuwa obiektów wersji (przegląd LDS, zasad cyklu życia)
# aws s3 rb s3://bucket-name --force
- Włączanie przechowywania wersji w zasobniku
s3_bktusing s3api API level command set (polecenie nie ma danych wyjściowych)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-versioning --bucket s3_bkt --versioning-configuration Status=Enabled
- Stosowanie zasad cyklu życia Wygeneruj szablon (Podręcznik dostępu do danych ECS) Interfejs wiersza polecenia platformy AWS wymaga formatu json dla zasad cyklu życia
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle-configuration --generate-cli-skeleton input --bucket s3_bkt
- Zastosuj zasady żywotności zasobnika w zasobniku. Aby uzyskać więcej informacji, zapoznaj się z podręcznikiem dostępu do danych ECS
AbortIncompleteMultipartUpload, NoncurrentVersionExpiration, and ExpiredObjectDeleteMarker and NoncurrentDays wygaśnie po 7 dniach.
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle --bucket s3_bkt --lifecycle-configuration file://s3_bkt_lifecycle.json
Output:
{
"Rules": [
{
"ID": "expire-non-current-and-dmarkers-and-mpu",
"Status": "Enabled",
"Prefix": "/",
"Expiration": {
"ExpiredObjectDeleteMarker": true
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
},
"NoncurrentVersionExpiration": {
"NoncurrentDays": 7
}
}
]
}
- Zasady cyklu życia GET
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-lifecycle --bucket s3_bkt
Output:
{
"Rules": [
{
"Expiration": {
"Days": 10
},
"ID": "DeleteVersion-musa",
"Prefix": "",
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 10
}
}
]
}
- Znakowanie obiektów przy użyciu pary klucz-wartość
- Napisz plik.
$ aws s3 cp file.txt s3://mc_s3_bkt/aws/tag.txt --profile mc_s3_emea --endpoint http://emea:9020
upload: ./file.txt to s3://mc_s3_bkt/aws/tag.txt
- Dodaj znacznik (to polecenie nie zwróciło danych, jeśli się powiedzie.
Polecenie jednowierszowe:
$ aws s3api put-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag.txt --tagging '{"TagSet": [{ "Key": "Product", "Value": "ECS" }]}' --endpoint-url http://emea:9020
Wielowierszowe kopiowanie i wklejanie:
$ aws s3api put-object-tagging \
--profile mc_s3_emea \
--bucket mc_s3_bkt \
--key aws/tag.txt \
--tagging '{"TagSet": [{ "Key": "Product", "Value": "ECS" }]}' \
--endpoint-url http://emea:9020
- Pobierz znacznik obiektu.
$ aws s3api get-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag.txt --endpoint http://emea:9020
{
"TagSet": [
{
"Key": "Product",
"Value": "ECS"
}
]
}
- Dodawanie wielu wartości tagów '
key:value' - skrócona forma
$ aws s3api put-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag5.txt --tagging '{"TagSet": [{ "Key": "Product", "Value": "ECS 3.6.1.2" },{"Key": "Company", "Value": "Dell Technologies"}]}' --endpoint-url http://emea:9020
- Pobierz znacznik obiektu.
$ aws s3api get-object-tagging --profile mc_s3_emea --bucket mc_s3_bkt --key aws/tag5.txt
{
"TagSet": [
{
"Key": "Product",
"Value": "ECS 3.6.1.2"
},
{
"Key": "Company",
"Value": "Dell Technologies"
}
]
}
- Blokada obiektu S3
- Funkcja blokady obiektów ECS S3 obsługuje tylko zasobniki z obsługą wersji.
- Brak interfejsu użytkownika ECS dla funkcji Object Lock. Dostęp do niego można uzyskać za pośrednictwem interfejsów API blokady obiektów ECS.
- Zablokowane obiekty są chronione przed usunięciem w cyklu życia
- Zasobnik nie może być włączony w systemie plików
- Blokada obiektu działa z użytkownikami IAM, a nie ze starszymi użytkownikami
- Włączanie blokady obiektu w zasobniku, automatyczne włączanie przechowywania wersji
- Poprawka jest wymagana, jeśli ADO jest włączone i ma zostać rozwiązane w ECS 3.7. Patrz artykuł ECS: Wyłączanie funkcji Object-lock w ECS for IBM Content Manager
Aby ustawić blokadę obiektu na zasobniku.
Opcja Użyj opcji put-object-lock-configuration jest używana z interfejsem wiersza poleceń platformy AWS.
Zobacz: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html
put-object-lock-configuration — AWS CLI 1.22.24 Command Reference (amazon.com) (łącze zewnętrzne)
- Aby ustawić konfigurację blokady obiektu w zasobniku
The following put-object-lock-configuration example sets a 1-day object lock on the specified bucket.
$ aws s3api put-object-lock-configuration \
--profile iam1 \
--bucket iam-bucket \
--object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 1 }}}'
To polecenie nie generuje żadnych danych wyjściowych.
put-object-legal-hold
$ aws s3api put-object-legal-hold --endpoint http://<hostname>:<port_number> --profile iam1 --bucket iam-bucket --key file1.txt --legal-hold "Status=ON" where: --profile: name of profile is profile confirmed in .aws credentials file --bucket: Bucket name --key: Object name --legal-hold: ON or OFF --version-id: specifies the version id of the object for Versioned --endpoint: ECS IP and port 9020 or 90201
get-object-legal-hold
$ aws s3api get-object-legal-hold --endpoint http://<hostname>:<port_number> --profile iam1 --bucket iam-bucket --key file1.txt where: --bucket: Bucket name --key: Object name --version-id: specifies the version id of the object --endpoint: ECS IP and port 9020 or 90201