ECS. Настройка и использование интерфейса командной строки S3 AWS

Summary: При использовании интерфейса командной строки AWS для тестирования сценариев клиентов, в которых они используют интерфейс командной строки AWS с ECS для подтверждения функциональности и совместимости, всегда сверяйтесь с руководством по доступу к данным ECS для вызовов API AWS S3 с поддержкой ECS. ...

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 Command-Line Interface (AWS CLI) – это инструмент от AWS, который можно использовать для тестирования высокоуровневых команд S3 и высокоуровневых команд s3 API-уровня (s3API)Высокоуровневые

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

S3Uri: Представляет расположение объекта, префикса или контейнера S3 — это должно быть записано в следующем виде: s3://mybucket/mykey В это имя mybucket указан контейнер S3, mykey — указанный ключ S3. Аргумент path должен начинаться с s3://

Команды aws s3api (внешняя ссылка) на уровне API содержатся в наборе рекомендаций s3api. Эти команды API S3 предоставляют доступ к метаданным контейнера, таким как список контроля доступа контейнера, политика контейнера, политики жизненного цикла и многое другое. Все поддерживаемые вызовы API можно получить в наборе команд с помощью команды aws s3api help.

  • По умолчанию интерфейс командной строки AWS автоматически использует до 10 потоков для загрузки файлов или частей
  • Интерфейс командной строки AWS автоматически использует multipart_threshold загрузок для файлов >= размер файла 8 Мбайт, multipart_chunksize

Скачайте инструкции и выполните установку.

  1. Версии выпусков https://github.com/aws/aws-cli/releases (внешняя ссылка)
  2. Загрузка и установка пакета интерфейса командной строки AWS
# curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
  1. Извлечение пакета
# unzip awscli-bundle.zip
  1. Выполните команду установки
# 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

В этом разделе описаны основные шаги по настройке интерфейса командной строки AWS для использования с ECS S3 с помощью пользователя объекта ECS. В этом разделе предполагается, что пользователь контейнера и объекта уже создан в ECS. Учетные данные и файл конфигурации обновляются при выполнении команды aws configure.

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

Обязательно:
  • ID ключа доступа: Пользователь объекта 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. Выводит список профилей всех профилей (свойства-списки, доступные в интерфейсе командной строки AWS версии 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
  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 --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 — при использовании составной передачи это размер фрагмента, который интерфейс командной строки использует для составной передачи отдельных файлов.
  • 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 command sets перечисляет контейнеры для любых других операций (называемых в S3 'префиксами') (внешняя ссылка) в контейнере
# 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. Проверьте список контроля доступа контейнера в контейнере 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/ (внешняя ссылка)
# 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. Применение политики жизненного цикла Создать шаблон (см. руководство по доступу к данным ECS) Для политики жизненного цикла 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. Эта функция предотвращает удаление или перезапись объектов в течение указанного времени или на неопределенный срок.
 
Примечание.
  • Функция блокировки объектов ECS S3 поддерживает только контейнеры с поддержкой управления версиями.
  • Для блокировки объекта отсутствует пользовательский интерфейс ECS. Доступ к нему можно получить через API-интерфейсы блокировки объектов ECS.
  • Заблокированные объекты защищены от удаления в рамках жизненного цикла
  • Контейнер не может быть включен в файловую систему
  • Блокировка объектов работает с пользователями IAM, а не с устаревшими пользователями 
  • Включение блокировки объектов для контейнера, автоматическое включение управления версиями 
  • Если функция ADO включена и должна быть устранена в ECS 3.7, требуется исправление. См. статью ECS. Отключение функции блокировки объектов в ECS для IBM Content Manager


Установка блокировки объекта для контейнера.
Параметр use put-object-lock-configuration используется в интерфейсе командной строки AWS.

См.: 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.