Вот пошаговое руководство по Как загрузить файл с моего локального компьютера в хранилище ледника s3 с помощью c # в консольном приложении? . Сначала я хотел бы представить некоторую базовую справочную информацию, которая будет использоваться позже в решении. Не стесняйтесь переходить к решению, если вы умны в S3 Glacier.
Если у вас уже установлен AWS SDK для .NET и VS, вы можете загрузить Repo с Github .
Краткое введение в S3-Glacier
Amazon S3 Glacier - это недорогая услуга длительного хранения Amazons.
В терминологии Glacier объект называется Archive . Также папки, в которых вы храните архивы, называются Хранилища . Это довольно просто - из Glacier FAQ :
В: Как организованы данные в Amazon S3 Glacier?
Вы храните данные в Amazon S3 Glacier в виде архива. Каждому архиву присваивается уникальный идентификатор архива, который впоследствии можно использовать для извлечения данных. Архив может представлять собой один файл, или вы можете объединить несколько файлов для загрузки в один архив. Вы загружаете архивы в хранилища. Хранилища - это коллекции архивов, которые вы используете для организации ваших данных.
Когда вы загружаете объекты в S3 Glacier, объекты не сразу появляются в вашей консоли Glacier. Ваша консоль Glacier будет обновляться один раз в день.
Amazon рекомендует использовать AWS SDK для .NET при разработке приложений на C #, которые взаимодействуют со службами AWS.
Простое решение
Прежде чем приступить к кодированию, перейдите в консоль AWS и создайте имя хранилища S3 Glacier Vault «TestVault».
На момент выпуска данного решения (апрель 2019 г.) я предлагаю вам использовать Visual Studio 2019. Эти шаги аналогичны для более ранних версий Visual Studio.
Код, который я представляю, был взят непосредственно из AWS SDK для документации .NET .
Когда ваша визуальная студия будет готова, выполните следующие действия:
- Создайте новый проект (используйте шаблон -> Консольное приложение (.NET Framework) - не Консольное приложение (.NET Core) и назовите его
ConsoleApp9
Добавьте AWS SDK в свой проект с помощью команды диспетчера пакетов NuGet .
В меню Сервис выберите пункт Диспетчер пакетов Nuget и нажмите Консоль диспетчера пакетов.
затем введите Install-Package AWSSDK
.
Для MAC используйте Project-> Add Nuget Packages. Найдите «AWSSDK.Glacier» и установите его.
Ниже приведен рабочий код. Вам нужно скопировать большую часть этого в ваш Program.cs и удалить код "Hello World" по умолчанию. Ваш окончательный код Program.cs должен выглядеть как
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;
namespace ConsoleApp9
{
class Program
{
static string vaultName = "TestVault";
static string archiveToUpload = "C:\\Windows\\Temp\\TEST-ARCHIVE.txt";
static void Main(string[] args)
{
try
{
var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast1);
// Upload an archive.
string archiveId = manager.Upload(vaultName, "upload archive test", archiveToUpload).ArchiveId;
Console.WriteLine("Archive ID: (Copy and save this ID for use in other examples.) : {0}", archiveId);
Console.WriteLine("To continue, press Enter");
Console.ReadKey();
}
catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
catch (Exception e) { Console.WriteLine(e.Message); }
Console.WriteLine("To continue, press Enter");
Console.ReadKey();
}
}
}
Поместите файл, который вы хотите загрузить в Glacier, как c:\Windows\Temp\Test-Archive.txt
. Вы можете поместить файл куда угодно, просто обновите переменную archiveToUpload
в своем коде, чтобы отразить местоположение.
- Если ваш регион не USEast1, измените регион AWS на строке сразу после
try
:
var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.YOUR-REGION);
- Запустите программу, и она загрузит файл. Если вы установили AWS SDK до этого, скорее всего, он будет работать нормально, и у вас будет экран, на котором будет показан идентификатор вашего архива
- Если вы столкнулись с ошибками прав доступа или авторизации - выполните следующие действия для настройки авторизации для AWS SDK . Я рекомендую использовать файл учетных данных (2-й вариант сверху). Другие проблемы могут быть неправильными Vault Name или он не может найти файл на вашем компьютере.
- Когда вы вернетесь к консоли Glacier, вы не увидите загруженных файлов. Glacier отличается низкой стоимостью и медленным перемещением по сравнению с s3, поэтому содержимое Vault обновляется один раз в день.
Пока вы получаете идентификатор на шаге 6, ваш файл был успешно сохранен в Glacier.
Надеюсь, это поможет, и вы найдете успех.