1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-02-05 13:25:25 +02:00

S3: Завершение раздела Buckets

This commit is contained in:
Anton 2024-11-14 21:31:24 +03:00
parent d43c81d3bb
commit 22e765439f
8 changed files with 5685 additions and 4607 deletions

File diff suppressed because it is too large Load Diff

View File

@ -220,7 +220,7 @@
Возврат Ответ;
КонецФункции
// Получить шифрование бакета
// Получает установленную ранее конфигурацию шифрования бакета
//
@ -242,7 +242,8 @@
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?encryption";
URL = URL + "?encryption";
ОсновныеДанные.Вставить("URL", URL);
@ -252,6 +253,208 @@
КонецФункции
// Удалить шифрование бакета
// Удаляет конфигурацию шифрования бакета
//
// Примечание:
// Метод в документации AWS: [DeleteBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?encryption";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Установить теги бакета
// Устанавливает набор тегов для бакета
//
// Примечание:
// Установка нового набора удаляет все существующие теги бакета
// Метод в документации AWS: [PutBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Теги
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
Теги = СформироватьСтруктуруТегов(Теги);
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?tagging";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
Возврат Ответ;
КонецФункции
// Получить теги бакета
// Получает набор тегов бакета
//
// Примечание:
// Метод в документации AWS: [GetBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?tagging";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Удалить теги бакета
// Удаляет набор тегов бакета
//
// Примечание:
// Метод в документации AWS: [DeleteBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?tagging";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Установить настройки версионирования бакета
// Устанавливает настройки версионирования объектов бакета
//
// Примечание:
// Метод в документации AWS: [PutBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Статус - Булево - Включение и отключение версионирования, если необходимо - status
// УдалениеMFA - Булево - Включение и отключение удаления MFA, если необходимо - mfad
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Статус = Неопределено
, Знач УдалениеMFA = Неопределено
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
Теги = СформироватьСтруктуруНастроекВерсионирования(Статус, УдалениеMFA);
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?versioning";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
Возврат Ответ;
КонецФункции
// Получить настройки версионирования бакета
// Получает значения настроек версионирования объектов в бакете
//
// Примечание:
// Метод в документации AWS: [GetBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?versioning";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Получить список бакетов
// Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом
//
@ -651,6 +854,82 @@
КонецФункции
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
Если Каталог Тогда
URL = URL + Имя;
Иначе
Если СтрНайти(URL, "://") Тогда
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
Иначе
URL = Имя + "." + URL;
КонецЕсли;
КонецЕсли;
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
URL = URL + "/";
КонецЕсли;
Возврат URL;
КонецФункции
Функция СформироватьСтруктуруТегов(Знач Теги)
ТекстОшибки = "Некорректный формат тегов. Ожидается коллекция ключ-значение";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Теги, ТекстОшибки);
МассивТегов = Новый Массив;
Для Каждого Тег Из Теги Цикл
СтруктураТега = Новый Структура;
СтруктураТега.Вставить("Key" , Строка(Тег.Ключ));
СтруктураТега.Вставить("Value", Строка(Тег.Значение));
МассивТегов.Добавить(Новый Структура("Tag", СтруктураТега));
КонецЦикла;
ФинальнаяСтруктура = Новый Структура;
НаборТегов = Новый Структура;
НаборТегов.Вставить("TagSet", МассивТегов);
ФинальнаяСтруктура.Вставить("Tagging", НаборТегов);
Возврат ФинальнаяСтруктура;
КонецФункции
Функция СформироватьСтруктуруНастроекВерсионирования(Знач Статус, Знач УдалениеMFA)
СтруктураНастроек = Новый Структура;
Если ЗначениеЗаполнено(Статус) Тогда
OPI_ПреобразованиеТипов.ПолучитьБулево(Статус);
СтруктураНастроек.Вставить("Status", ?(Статус, "Enabled", "Suspended"));
КонецЕсли;
Если ЗначениеЗаполнено(УдалениеMFA) Тогда
OPI_ПреобразованиеТипов.ПолучитьБулево(УдалениеMFA);
СтруктураНастроек.Вставить("MfaDelete", ?(УдалениеMFA, "Enabled", "Disabled"));
КонецЕсли;
ФинальнаяСтруктура = Новый Структура("VersioningConfiguration", СтруктураНастроек);
Возврат ФинальнаяСтруктура;
КонецФункции
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
@ -710,31 +989,6 @@
КонецПроцедуры
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
Если Каталог Тогда
URL = URL + Имя;
Иначе
Если СтрНайти(URL, "://") Тогда
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
Иначе
URL = Имя + "." + URL;
КонецЕсли;
КонецЕсли;
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
URL = URL + "/";
КонецЕсли;
Возврат URL;
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@ -2113,8 +2113,14 @@
S3_СоздатьБакет(ПараметрыТеста);
S3_ПолучитьСписокБакетов(ПараметрыТеста);
S3_ПроверитьДоступностьБакета(ПараметрыТеста);
S3_УстановитьТегиБакета(ПараметрыТеста);
S3_ПолучитьТегиБакета(ПараметрыТеста);
S3_УдалитьТегиБакета(ПараметрыТеста);
S3_УстановитьШифрованиеБакета(ПараметрыТеста);
S3_ПолучитьШифрованиеБакета(ПараметрыТеста);
S3_УдалитьШифрованиеБакета(ПараметрыТеста);
S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста);
S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыТеста);
S3_УдалитьБакет(ПараметрыТеста);
КонецПроцедуры
@ -14739,6 +14745,26 @@
КонецПроцедуры
Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Имя = "opi-newbucket2";
Результат = OPI_S3.УдалитьШифрованиеБакета(Имя, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьШифрованиеБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
@ -14768,6 +14794,177 @@
КонецПроцедуры
Процедура S3_ПолучитьТегиБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УстановитьТегиБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
СтруктураТегов = Новый Структура;
СтруктураТегов.Вставить("MyTag1", "SomeValue");
СтруктураТегов.Вставить("MyTag2", "AnotherOne");
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УдалитьТегиБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (получение)", "S3");
КонецПроцедуры
Процедура S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
СтруктураТегов = Новый Структура;
УдалениеMFA = Ложь;
Статус = Истина;
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус, , Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@ -2038,9 +2038,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@ -726,6 +726,47 @@
КонецФункции
Функция ПолучитьXML(Значение, ПространствоИмен = "", ЗаписьXML = Неопределено) Экспорт
ЭтоВход = НачалоФормированияXML(Значение, ЗаписьXML);
ТипЗначения = ТипЗнч(Значение);
Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("Соответствие") Тогда
Для Каждого ЗначениеКоллекции Из Значение Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента(ЗначениеКоллекции.Ключ, ПространствоИмен);
Если ЗначениеЗаполнено(ПространствоИмен) Тогда
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", ПространствоИмен);
КонецЕсли;
ПолучитьXML(ЗначениеКоллекции.Значение, "", ЗаписьXML);
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;
ИначеЕсли ТипЗначения = Тип("Массив") Тогда
Для Каждого ЭлементМассива Из Значение Цикл
ПолучитьXML(ЭлементМассива, "", ЗаписьXML);
КонецЦикла;
Иначе
ЗаписьXML.ЗаписатьТекст(Значение);
КонецЕсли;
Если ЭтоВход Тогда
Возврат ЗаписьXML.Закрыть();
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт
Если ТипЗнч(Значение) = Тип("Массив") Тогда
@ -1323,6 +1364,27 @@
КонецПроцедуры
Функция НачалоФормированияXML(Значение, ЗаписьXML)
ЭтоВход = Ложь;
Если ЗаписьXML = Неопределено Тогда
ТекстОшибки = "Ошибка получения коллекции для формирования XML";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЭтоВход = Истина;
КонецЕсли;
Возврат ЭтоВход;
КонецФункции
#Область GZip
// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/core/Modules/OPI_S3.os
// OneScript: ./OInt/core/Modules/OPI_S3.os
// Lib: S3
// CLI: s3
@ -220,7 +220,7 @@
Возврат Ответ;
КонецФункции
// Получить шифрование бакета
// Получает установленную ранее конфигурацию шифрования бакета
//
@ -242,7 +242,8 @@
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?encryption";
URL = URL + "?encryption";
ОсновныеДанные.Вставить("URL", URL);
@ -252,6 +253,208 @@
КонецФункции
// Удалить шифрование бакета
// Удаляет конфигурацию шифрования бакета
//
// Примечание:
// Метод в документации AWS: [DeleteBucketEncryption](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьШифрованиеБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?encryption";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Установить теги бакета
// Устанавливает набор тегов для бакета
//
// Примечание:
// Установка нового набора удаляет все существующие теги бакета
// Метод в документации AWS: [PutBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Теги - Структура Из КлючИЗначение - Набор тегов (ключ и значение) для установки - tagset
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Теги
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
Теги = СформироватьСтруктуруТегов(Теги);
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?tagging";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
Возврат Ответ;
КонецФункции
// Получить теги бакета
// Получает набор тегов бакета
//
// Примечание:
// Метод в документации AWS: [GetBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?tagging";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Удалить теги бакета
// Удаляет набор тегов бакета
//
// Примечание:
// Метод в документации AWS: [DeleteBucketTagging](@docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УдалитьТегиБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?tagging";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("DELETE", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Установить настройки версионирования бакета
// Устанавливает настройки версионирования объектов бакета
//
// Примечание:
// Метод в документации AWS: [PutBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Статус - Булево - Включение и отключение версионирования, если необходимо - status
// УдалениеMFA - Булево - Включение и отключение удаления MFA, если необходимо - mfad
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция УстановитьНастройкиВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Статус = Неопределено
, Знач УдалениеMFA = Неопределено
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
Теги = СформироватьСтруктуруНастроекВерсионирования(Статус, УдалениеMFA);
ТегиXML = OPI_Инструменты.ПолучитьXML(Теги, "http://s3.amazonaws.com/doc/2006-03-01/");
ТегиXML = ПолучитьДвоичныеДанныеИзСтроки(ТегиXML);
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?versioning";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросСТелом("PUT", ОсновныеДанные, ТегиXML, Заголовки);
Возврат Ответ;
КонецФункции
// Получить настройки версионирования бакета
// Получает значения настроек версионирования объектов в бакете
//
// Примечание:
// Метод в документации AWS: [GetBucketVersioning](@docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
//
// Параметры:
// Наименование - Строка - Наименование бакета - name
// ОсновныеДанные - Структура Из КлючИЗначение - Основные данные запроса. См. ПолучитьСтруктуруДанных - data
// Каталог - Булево - Истина > Directory Bucket, Ложь > General Purpose Bucket - dir
// Заголовки - Соответствие Из КлючИЗначение - Дополнительные заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - сериализованный JSON ответа от хранилища
Функция ПолучитьНастройкийВерсионированияБакета(Знач Наименование
, Знач ОсновныеДанные
, Знач Каталог = Истина
, Знач Заголовки = Неопределено) Экспорт
URL = ПолучитьURLСервиса(ОсновныеДанные);
URL = СформироватьURLБакета(URL, Наименование, Каталог);
URL = URL + "?versioning";
ОсновныеДанные.Вставить("URL", URL);
Ответ = ОтправитьЗапросБезТела("GET", ОсновныеДанные, Заголовки);
Возврат Ответ;
КонецФункции
// Получить список бакетов
// Получает список бакетов. Возможно использование отборов, если они поддерживаются сервисом
//
@ -651,6 +854,82 @@
КонецФункции
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
Если Каталог Тогда
URL = URL + Имя;
Иначе
Если СтрНайти(URL, "://") Тогда
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
Иначе
URL = Имя + "." + URL;
КонецЕсли;
КонецЕсли;
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
URL = URL + "/";
КонецЕсли;
Возврат URL;
КонецФункции
Функция СформироватьСтруктуруТегов(Знач Теги)
ТекстОшибки = "Некорректный формат тегов. Ожидается коллекция ключ-значение";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Теги, ТекстОшибки);
МассивТегов = Новый Массив;
Для Каждого Тег Из Теги Цикл
СтруктураТега = Новый Структура;
СтруктураТега.Вставить("Key" , Строка(Тег.Ключ));
СтруктураТега.Вставить("Value", Строка(Тег.Значение));
МассивТегов.Добавить(Новый Структура("Tag", СтруктураТега));
КонецЦикла;
ФинальнаяСтруктура = Новый Структура;
НаборТегов = Новый Структура;
НаборТегов.Вставить("TagSet", МассивТегов);
ФинальнаяСтруктура.Вставить("Tagging", НаборТегов);
Возврат ФинальнаяСтруктура;
КонецФункции
Функция СформироватьСтруктуруНастроекВерсионирования(Знач Статус, Знач УдалениеMFA)
СтруктураНастроек = Новый Структура;
Если ЗначениеЗаполнено(Статус) Тогда
OPI_ПреобразованиеТипов.ПолучитьБулево(Статус);
СтруктураНастроек.Вставить("Status", ?(Статус, "Enabled", "Suspended"));
КонецЕсли;
Если ЗначениеЗаполнено(УдалениеMFA) Тогда
OPI_ПреобразованиеТипов.ПолучитьБулево(УдалениеMFA);
СтруктураНастроек.Вставить("MfaDelete", ?(УдалениеMFA, "Enabled", "Disabled"));
КонецЕсли;
ФинальнаяСтруктура = Новый Структура("VersioningConfiguration", СтруктураНастроек);
Возврат ФинальнаяСтруктура;
КонецФункции
Процедура ПроверитьОсновныеДанные(ОсновныеДанные)
ТекстОшибки = "Ошибка получения авторизационных данных из структуры";
@ -710,31 +989,6 @@
КонецПроцедуры
Функция СформироватьURLБакета(Знач URL, Знач Имя, Знач Каталог)
OPI_ПреобразованиеТипов.ПолучитьСтроку(Имя);
OPI_ПреобразованиеТипов.ПолучитьБулево(Каталог);
Если Каталог Тогда
URL = URL + Имя;
Иначе
Если СтрНайти(URL, "://") Тогда
URL = СтрЗаменить(URL, "://", "://" + Имя + ".");
Иначе
URL = Имя + "." + URL;
КонецЕсли;
КонецЕсли;
Если Не СтрЗаканчиваетсяНа(URL, "/") Тогда
URL = URL + "/";
КонецЕсли;
Возврат URL;
КонецФункции
#КонецОбласти
#КонецОбласти

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// OneScript: ./OInt/tools/Modules/internal/Modules/OPI_Инструменты.os
// MIT License
@ -726,6 +726,47 @@
КонецФункции
Функция ПолучитьXML(Значение, ПространствоИмен = "", ЗаписьXML = Неопределено) Экспорт
ЭтоВход = НачалоФормированияXML(Значение, ЗаписьXML);
ТипЗначения = ТипЗнч(Значение);
Если ТипЗначения = Тип("Структура") Или ТипЗначения = Тип("Соответствие") Тогда
Для Каждого ЗначениеКоллекции Из Значение Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента(ЗначениеКоллекции.Ключ, ПространствоИмен);
Если ЗначениеЗаполнено(ПространствоИмен) Тогда
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("", ПространствоИмен);
КонецЕсли;
ПолучитьXML(ЗначениеКоллекции.Значение, "", ЗаписьXML);
ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;
ИначеЕсли ТипЗначения = Тип("Массив") Тогда
Для Каждого ЭлементМассива Из Значение Цикл
ПолучитьXML(ЭлементМассива, "", ЗаписьXML);
КонецЦикла;
Иначе
ЗаписьXML.ЗаписатьТекст(Значение);
КонецЕсли;
Если ЭтоВход Тогда
Возврат ЗаписьXML.Закрыть();
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура ЗначениеВМассив(Значение) Экспорт
Если ТипЗнч(Значение) = Тип("Массив") Тогда
@ -1323,6 +1364,27 @@
КонецПроцедуры
Функция НачалоФормированияXML(Значение, ЗаписьXML)
ЭтоВход = Ложь;
Если ЗаписьXML = Неопределено Тогда
ТекстОшибки = "Ошибка получения коллекции для формирования XML";
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Значение, ТекстОшибки);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЭтоВход = Истина;
КонецЕсли;
Возврат ЭтоВход;
КонецФункции
#Область GZip
// Описание структур см. здесь https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

View File

@ -1,4 +1,4 @@
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
// MIT License
@ -2113,8 +2113,14 @@
S3_СоздатьБакет(ПараметрыТеста);
S3_ПолучитьСписокБакетов(ПараметрыТеста);
S3_ПроверитьДоступностьБакета(ПараметрыТеста);
S3_УстановитьТегиБакета(ПараметрыТеста);
S3_ПолучитьТегиБакета(ПараметрыТеста);
S3_УдалитьТегиБакета(ПараметрыТеста);
S3_УстановитьШифрованиеБакета(ПараметрыТеста);
S3_ПолучитьШифрованиеБакета(ПараметрыТеста);
S3_УдалитьШифрованиеБакета(ПараметрыТеста);
S3_УстановитьНастройкиВерсионированияБакета(ПараметрыТеста);
S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыТеста);
S3_УдалитьБакет(ПараметрыТеста);
КонецПроцедуры
@ -14739,6 +14745,26 @@
КонецПроцедуры
Процедура S3_УдалитьШифрованиеБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
Имя = "opi-newbucket2";
Результат = OPI_S3.УдалитьШифрованиеБакета(Имя, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьШифрованиеБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УстановитьШифрованиеБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
@ -14768,6 +14794,177 @@
КонецПроцедуры
Процедура S3_ПолучитьТегиБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьТегиБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УстановитьТегиБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
СтруктураТегов = Новый Структура;
СтруктураТегов.Вставить("MyTag1", "SomeValue");
СтруктураТегов.Вставить("MyTag2", "AnotherOne");
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.УстановитьТегиБакета(Наименование, ОсновныеДанные, СтруктураТегов, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьТегиБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УдалитьТегиБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.УдалитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
Результат = OPI_S3.ПолучитьТегиБакета(Наименование, ОсновныеДанные, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТегиБакета (получение)", "S3");
КонецПроцедуры
Процедура S3_ПолучитьНастройкийВерсионированияБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.ПолучитьНастройкийВерсионированияБакета(Наименование, ОсновныеДанные, Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьНастройкийВерсионированияБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
Процедура S3_УстановитьНастройкиВерсионированияБакета(ПараметрыФункции)
URL = ПараметрыФункции["S3_URL"];
AccessKey = ПараметрыФункции["S3_AccessKey"];
SecretKey = ПараметрыФункции["S3_SecretKey"];
Region = "BTC";
ОсновныеДанные = OPI_S3.ПолучитьСтруктуруДанных(URL, AccessKey, SecretKey, Region);
СтруктураТегов = Новый Структура;
УдалениеMFA = Ложь;
Статус = Истина;
// Directory bucket
Наименование = "opi-dirbucket3";
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета (DB)", "S3"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат); // SKIP
ОсновныеДанные.Вставить("URL", ПараметрыФункции["S3_URL"]); // SKIP
// General purpose bucket
Наименование = "opi-gpbucket3";
Результат = OPI_S3.УстановитьНастройкиВерсионированияБакета(Наименование, ОсновныеДанные, Статус, , Ложь);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УстановитьНастройкиВерсионированияБакета", "S3");
OPI_ПолучениеДанныхТестов.Проверка_S3Успех(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти