---
title: "AWS CLI — База знаний Timeweb Cloud"
description: "AWS CLI: подробная документация и руководства по установке, настройке и работе с файлами. Timeweb Cloud: инструкции, IT и облачные тренды."
---

# AWS CLI

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

AWS CLI — это интерфейс командной строки для работы с сервисами Amazon. В интерфейсе доступен набор команд для управления файлами в облачном хранилище.

## Установка

На текущий момент для полноценной работы с кластером необходимо использовать AWS CLI первой версии. Для установки AWS CLI воспользуйтесь `pipx`:

```shell
pipx install 'awscli==1.34.30'
```

После установки проверьте версию AWS CLI с помощью команды:

```shell
aws --version
```

## Настройка

Для настройки AWS для работы с нашим объектным хранилищем S3 используйте команду:

```shell
aws configure
```

Появится интерактивная строка с запросом реквизитов для подключения. Заполните их следующим образом, подставив необходимые значения из настроек бакета в вашей панели управления:

```shell
AWS Access Key ID [None]: <Access Key>
AWS Secret Access Key [None]: <Secret Access Key>
Default region name [None]: ru-1
Default output format [None]: json
```

Будет создана скрытая директория `.aws` с файлами `config` и `credentials`, которые содержат настройки AWS и ключи для авторизации соответственно.

## Работа с файлами

Рассмотрим, как выполнять основные операции с объектами в бакете.

### **Получение списка файлов в бакете**

Чтобы получить список файлов, используйте `ls`:

```shell
aws s3 ls s3://<имя бакета> --endpoint-url https://s3.twcstorage.ru
```

### **Загрузка локального файла в бакет**

Для загрузки файлов используется `cp`. В примере ниже загружается файл `text.txt`:

```shell
aws s3 cp test.txt s3://<имя бакета> --endpoint-url https://s3.twcstorage.ru
```

### **Удаление файла в бакете**

Для удаления файла используйте команду `rm`. В примере ниже удаляем файл `text.txt`:

```shell
aws s3 rm s3://<имя бакета>/test.txt --endpoint-url https://s3.twcstorage.ru
```

### **Синхронизация файлов**

Для синхронизации файлов между локальной директорией (в примере это текущая директория — `.`) и бакетом используется `sync`:

```shell
aws s3 sync . s3://<имя бакета> --endpoint-url https://s3.twcstorage.ru
```

Подробную информацию по этим и другим командам можно найти в [документации AWS](https://docs.aws.amazon.com/cli/latest/reference/s3/).

## Составная загрузка

Для выполнения multipart-загрузки с помощью AWS CLI необходимо использовать команду `aws s3api`. Этот процесс предполагает создание и завершение multipart-загрузки в несколько шагов.

### Предварительная подготовка

Перед выполнением multipart-загрузки загружаемый файл необходимо разбить на части. Это можно сделать при помощи утилиты `split`:

```shell
split -b <размер_части> <путь_к_файлу> <префикс_имени_части>
```

-   `<размер_части>` — размер каждой части. Например, для 5 МБ укажите `5M`.
-   `<путь_к_файлу>` — путь к исходному файлу.
-   `<префикс_имени_части>` — префикс для имен частей. Например, если указать part, части будут называться `partaa`, `partab` и так далее.

### Шаги выполнения multipart-загрузки

**Инициализация загрузки**

Сначала инициализируйте multipart загрузку, чтобы получить `UploadId`, необходимый для последующих операций:

```shell
aws s3api create-multipart-upload --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете>
```

Ответ команды будет содержать `UploadId`. Сохраните его, так как он понадобится для загрузки частей и завершения процесса.

**Загрузка частей**

Используйте команду `upload-part`, чтобы загрузить части файла. Для этого нужно указать `UploadId`, `PartNumber`, а также файл или часть файла для загрузки. Пример загрузки первой части:

```shell
aws s3api upload-part --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --part-number 1 --body <путь/к/первой_части_файла> --upload-id <UploadId>
```

Повторите эту команду для каждой части файла, увеличивая номер части (`--part-number`) и изменяя `--body` для каждой последующей загрузки.

**Завершение загрузки**

После загрузки всех частей выполните команду `complete-multipart-upload`, передав `UploadId` и информацию о загруженных частях. Сначала сформируйте JSON-файл с частями загрузки, указывая `ETag` и номер части:

```js
{
  "Parts": [
	{
  	"ETag": "<ETag первой части>",
  	"PartNumber": 1
	},
	{
  	"ETag": "<ETag второй части>",
  	"PartNumber": 2
	}
  ]
}
```

Затем завершите загрузку:

```shell
aws s3api complete-multipart-upload --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --upload-id <UploadId> --multipart-upload file://<путь/к/JSON-файлу>
```

#### Отмена загрузки

Если вы хотите отменить загрузку, выполните команду:

```shell
aws s3api abort-multipart-upload --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --upload-id <UploadId>
```

#### Список частей составной загрузки

Чтобы получить список частей во время загрузки, можно использовать команду `list-parts`:

```shell
aws s3api list-parts --bucket <имя-бакета> --endpoint-url https://s3.twcstorage.ru --key <имя_файла_в_бакете> --upload-id <UploadId>
```

## Подписанные URL (Presigned URL)

Подписанный URL (Presigned URL) позволяет создать временную ссылку для доступа к приватному объекту в S3. Такая ссылка позволяет получить доступ к объекту без авторизации, однако, в отличие от изменения прав доступа (ACL) объекта, presigned URL всегда имеет ограниченный срок действия (максимум — 7 дней).

### Генерация presigned URL 

Для генерации временной ссылки на объект в S3 используйте команду:

```shell
aws s3 presign s3://<имя_бакета>/<путь_к_файлу> --endpoint-url https://s3.twcstorage.ru
```

Дополнительно можно указать срок действия ссылки с помощью флага `--expires-in`, который задает время в секундах (по умолчанию 3600 секунд):

```shell
aws s3 presign s3://<имя_бакета>/<путь_к_файлу> --expires-in <время_в_секундах> --endpoint-url https://s3.twcstorage.ru
```

### Принцип работы Presigned URL

При создании presigned URL используется стандартный механизм авторизации AWS. Разница заключается в том, что значения, которые обычно передаются в заголовках для авторизации, в presigned URL добавляются как параметры URL. Это позволяет сторонним пользователям открыть ссылку в браузере или другом клиенте без дополнительных настроек. Например, ссылка может выглядеть так:

```shell
https://s3.twcstorage.ru/841b4a72-presigned/README.md?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=4AP1MJKIJFLUJN9ABQZ1%2F20241113%2Fru-1%2Fs3%2Faws4_request&X-Amz-Date=20241113T104406Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=737a677e78f88ab989b1c9b8edb454f70ea8da42e6b79774e68aa0fc6a52cb81
```
