ЕКС: Як налаштувати та використовувати S3 AWS CLI

Summary: Використовуючи AWS CLI для тестування сценаріїв клієнтів, де вони використовують AWS CLI з ECS для підтвердження функціональності та сумісності, завжди звертайтеся до ECS Data Access Guide для викликів API з підтримкою ECS AWS S3. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

Інтерфейс командного рядка AWS (AWS CLI) — це інструмент від AWS, який можна використовувати для тестування команд високого рівня S3 та команд s3 API рівня (s3api)

Команди високого рівня aws s3 (зовнішнє посилання) підтримують поширені операції з сегментами, такі як створення, список і видалення сегментів. Як завантажити та встановити інструмент, усі підтримувані команди високого рівня можна отримати в наборі команд за допомогою команди aws s3api help.

S3Uri: Являє собою розташування об'єкта S3, префікса або сегмента - Це повинно бути записано у вигляді s3://mybucket/mykey де mybucket є t зазначеного відра S3, mykey – зазначений ключ S3. Аргумент path має починатися з s3://

Команди aws s3api (External Link) на рівні API містяться в наборі commend s3api. Ці команди S3 API надають доступ до метаданих сегмента, як-от список контролю доступу до сегмента, політика сегмента, політики життєвого циклу тощо, усі підтримувані виклики API можна отримати в наборі команд за допомогою команди aws s3api help.

  • AWS CLI за замовчуванням автоматично використовує до 10 потоків для завантаження файлів або частин під час завантаження
  • AWS CLI автоматично використовує multipart_threshold завантаження для файлів >= розмір файлу 8 МБ, multipart_chunksize

Завантажте та встановіть інструкцію.

  1. Версія релізів https://github.com/aws/aws-cli/releases (External Link)
  2. Завантажте та встановіть пакет AWS CLI
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
  1. Пакет витягів
# unzip awscli-bundle.zip
  1. Виконайте команду install
# sudo /awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
  1. Підтвердьте версію
# aws version
Output:
      aws-cli/2.0.33 Python/3.7.3 Linux/4.15.0-109-generic botocore/2.0.0dev37

Налаштування AWS CLI

У цьому розділі пояснюються основні кроки для налаштування AWS CLI для використання з ECS S3 за допомогою об'єкта ECS user. Цей розділ припускає, що Bucket та об'єкт user вже були створені на ECS. Облікові дані та файл конфігурації оновлюються, коли ви виконуєте команду aws configure.

Файл облікових даних знаходиться тут ~/.aws/credentials. Файл облікових даних зберігає відомості про профіль користувача (ідентифікатор ключа доступу та секретні ключі доступу), файл конфігурації зберігає відомості про регіон і формат виводу.

Необхідний:
  • Ідентифікатор ключа доступу: Користувач об'єкта ECS
  • Секретний ключ доступу: Секретний ключ
Кроки:
  1. Цей приклад створює ім'я профілю 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
  1. Список профілів всіх профілів (list-properties доступний в AWS CLI v2
# 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
  1. Профіль для конкретного списку
# 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))
  1. Якщо використовуються команди на 9021, опція AWS CLI --no-verify-ssl потрібна, щоб обійти помилку самопідписаного сертифіката.
# 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)
  • Виконайте команду з --no-verify опція для обходу цієї помилки
# 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
  • Другим варіантом може бути завантаження самопідписаного сертифіката ECS, збереженого у форматі PEM, і за допомогою --ca-bundle Варіант
  • Використовуйте OpenSSL для отримання сертифіката ECS для доступу до об'єктних даних на порту 9021 і копіюйте вміст сертифіката за допомогою вашого улюбленого редактора та зберігайте, включаючи заголовки сертифікатів у наведеному нижче прикладі.
# openssl s_client -connect ecshop:9021
Де ecshop — це IP або ім'я хоста вузлів ECS, а xxxxxx має бути повним сертифікатом у вашому середовищі.
Output:

    -----BEGIN CERTIFICATE----- 
    Xxxxxxxxx
    xxxxxxxxx
    ...
    ...
    -----END CERTIFICATE-----
  1. Список сегментів у таблиці, зручній для людини, з опцією ca-bundle, де сертифікат зберігається в імені PEM-файлу 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              ||
    |+-----------------------------------+---------------------+|

Основні операції S3

https://docs.aws.amazon.com/cli/latest/userguide/cli-services-s3-commands.html (External Link)
Налаштування продуктивності
  • max_concurrent_requests - Максимальна кількість одночасних запитів
  • max_queue_size - Максимальна кількість завдань у черзі завдань
  • multipart_threshold – поріг розміру, який використовує інтерфейс командного рядка для передавання окремих файлів кількома частинами.
  • multipart_chunksize – Під час передавання даних із кількох частин це розмір фрагмента, який CLI використовує для передавання окремих файлів із кількох частин.
  • max_bandwidth - максимальна пропускна здатність, яка витрачається для вивантаження і вивантаження даних в і з 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 = auto 
Використання aws configure set Команда для встановлення параметрів для налаштування швидкості вивантаження
$ 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 auto
Кроки: 
  1. Створіть сегмент за допомогою s3 mb команда
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 mb s3://s3_bkt
Output:
    make_bucket: s3_bkt
  1. Список сегментів за допомогою s3 ls і s3api list-buckets набори команд перелічує сегменти для будь-яких інших операцій (які в S3 називаються «префіксами») (External Link) у сегменті
# 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"
			},
  1.  Створення та завантаження файлів для тестування 
  • Приклад створення файлів розміром 1 МБ і 4 МБ
# dd if=/dev/zero of=1MB_output.file bs=1024 count=1024
# dd if=/dev/zero of=4MB_output.file bs=1024 count=4096
  • Приклад створення великого файлу 2 Гб
# dd if=/dev/urandom of=bigfile_2GB bs=1024k count=2048
  • Як завантажити файл розміром 1 МБ у сегмент 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
  1. Список файлів у сегменті, s3_bkt використання імені профілю mc_s3 використання s3 lsабо s3api list-objects Набори команд 
# 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"
				}
			},
  1. Список версій об'єктів
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api list-object-versions --bucket s3_bkt --output text
  1. Завантажити файл 1MB_output.file з s3_bkt до каталогу /tmp на локальному комп'ютері.
# 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
  1. Перевірте ACL файлу 1MB_output.file у форматі YAML для виведення на читабельність
# 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
  1. Перевірте ACL відра на відрі 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
  1. Перевірте версію сегмента або ввімкніть керування версіями в сегменті
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output:

    {
        "Status": "Enabled"
    }
  1. Ініціюйте завантаження кількох частин за допомогою рівня s3api API з великим файлом 
  1. Створіть файл розміром 5 ГБ:
# time dd if=/dev/urandom of=bigfile_5GB bs=1024k count=5096
  1. Почніть завантаження
# 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"
    }
  1. Список неповних завантажень багаточастинних файлів https://aws.amazon.com/premiumsupport/knowledge-center/s3-multipart-upload-cli/ (External Link)
# 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"
	            }
	        }
	    ]
	}
  1. Поліпшувати s3 cp Рекомендації щодо продуктивності від команди до сегмента для великих файлів для ініціювання завантаження з кількох частин і зміни одночасних потоків наведено вище в розділі Налаштування продуктивності.
  1. Виконуйте копіювання з сегмента в сегмент, щоб скопіювати file.txt в mc_s3_bkt до s3_bkt використання 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"
    }
}
  1. Список файлів (об'єктів або ключів) у сегменті 
# 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
  1. Копіювання файлу з S3_bkt до mc_s3_bkt Використання високорівневого набору команд S3 CP
Наступна команда cp копіює один об'єкт s3 у вказаний сегмент і ключ:
# 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
  1. Перевірте, чи ввімкнено керування версіями в сегменті s3_bkt
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api get-bucket-versioning --bucket s3_bkt
Output: 

      {
          "Status": "Enabled"
      }
  1. Як видалити сегмент за допомогою s3 rb command (команда не має виводу)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3 rm s3://s3_bkt2
  1. У наведеному нижче прикладі видаляються всі об'єкти та підпапки в сегменті, а потім видаляється сегмент. (якщо версіонування ввімкнено, ця команда не видаляє об'єкти версії (перегляньте LDS, Політики життєвого циклу)
# aws s3 rb s3://bucket-name --force
  1. Увімкнення керування версіями в сегменті s3_bkt використовуючи набір команд на рівні API s3API (команда не має виводу)
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-versioning --bucket s3_bkt --versioning-configuration Status=Enabled 
  1. Застосування політики життєвого циклу Згенерувати шаблон (Reference ECS Data Access guide) AWS CLI вимагає формат json для політики життєвого циклу
# aws --profile mc_s3 --endpoint http://ecshop:9020 s3api put-bucket-lifecycle-configuration --generate-cli-skeleton input --bucket s3_bkt
  1. Застосуйте політику життєвого циклу сегмента до сегмента, щоб дізнатися більше, зверніться до Посібника з доступу до даних ECS
Створити політику для AbortIncompleteMultipartUpload, NoncurrentVersionExpiration, and ExpiredObjectDeleteMarker and NoncurrentDays Термін дії закінчується через 7 днів.
#  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
      }
   }
   ]
}
  1. Політика життєвого циклу 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
            }
        }
    ]
}
  1. Тегування об'єктів за допомогою пари значень ключів 
  1. Запишіть файл. 
$ 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
  1. Додайте тег (ця команда не має виводу у разі успіху. 
    Однорядкова команда:
$ 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

Багаторядкове копіювання та вставлення: 

$ 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
  1. Отримайте тег об'єкта.
$ 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"
        }
    ]
}
  1. Додавання кількох значень тегів 'key:value' - коротка форма
$ 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
  1. Отримайте тег об'єкта.
$ 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"
        }
    ]
}
  1. Блокування об'єктів S3
ECS дозволяє зберігати об'єкти за допомогою моделі «запис-одноразово-прочитано-багато» (WORM) через S3 Object Lock. Ця функція запобігає видаленню або перезапису об'єктів протягом певного часу або на невизначений термін.
 
Примітка:
  • Функція блокування об'єктів ECS S3 підтримує лише сегменти з підтримкою керування.
  • Інтерфейс користувача ECS для блокування об'єктів не існує. Доступ до нього можна отримати через API ECS Object Lock.
  • Заблоковані об'єкти захищені від видалення життєвого циклу
  • Не можна використовувати файлову систему
  • Блокування об'єктів працює з користувачами IAM, а не з застарілими користувачами 
  • Увімкнення блокування об'єктів у сегменті, автоматичне включення керування версіями 
  • Патч необхідний, якщо ADO включений і буде вирішений в ECS 3.7. Дивіться статтю ECS: Вимкнення функції блокування об'єктів на ECS для IBM Content Manager


Щоб встановити блокування об'єкта на відрі.
Використовуйте опцію put-object-lock-configuration використовується з AWS CLI.

Дивіться: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html
put-object-lock-configuration — Довідник команд AWS CLI 1.22.24 (amazon.com) (зовнішнє посилання)

  • Щоб налаштувати конфігурацію блокування об'єкта в сегменті
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 }}}'

Ця команда не виводить жодних даних.

  • 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

Affected Products

Elastic Cloud Storage

Products

ECS Appliance, ECS Appliance Hardware Series, ECS Appliance Software with Encryption, Elastic Cloud Storage
Article Properties
Article Number: 000020564
Article Type: How To
Last Modified: 02 Oct 2025
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.