Показаны сообщения с ярлыком Amazon S3. Показать все сообщения
Показаны сообщения с ярлыком Amazon S3. Показать все сообщения
Amazon S3 FAQ – часто задаваемые вопросы по Amazon S3
Q: Как получить листинг папки?
A:
aws --endpoint-url http://s3.eu-central-1.amazonaws.com s3 ls s3://bucket/a/b/c/ --recursive
A:
aws --endpoint-url http://s3.eu-central-1.amazonaws.com s3 ls s3://bucket/a/b/c/ --recursive
Q: Как скачать файл?
A:
aws --endpoint-url http://s3.eu-central-1.amazonaws.com s3 cp s3://bucket/a/b/c/example.txt ./
aws --endpoint-url http://s3.eu-central-1.amazonaws.com s3 cp s3://bucket/a/b/c/example.txt ./
Имя хоста (host) и путь к корзине (bucket) на Amazon S3
Имя хоста (host) и путь к корзине (bucket) на Amazon S3 может быть в формате:
Здесь eu-central-1 это наименование региона. А <bucketName> - это ключ.
- s3-eu-central-1.amazonaws.com/<bucketName>
- s3.eu-central-1.amazonaws.com
- <bucket>.s3.amazonaws.com
Здесь eu-central-1 это наименование региона. А <bucketName> - это ключ.
Дайджест по саморазвитию в программировании №10
Проектирование
Продуктивность
Amazon S3
Бесплатный хостинг
Big Data
Карьера
iOS
Продуктивность
- Колхозная доктрина, или десять простых правил, которым беспрекословно должны следовать все разработчики | Записки программиста
- Как работать удаленно
Amazon S3
- S3TransferManager for iOS - Part I: Asynchronous Uploads - AWS Developer Blog - Mobile
- S3 Management Tools
- Быстрая реализация резервного копирования в Amazon S3
Бесплатный хостинг
Big Data
Криптография
LabVIEW
Карьера
iOS
Objective-C
The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
При попытке загрузить на Amazon S3 файл примерно следующими Objective-C кодом:
AFAmazonS3Manager *s3Manager = [[AFAmazonS3Manager alloc] initWithAccessKeyID:@"..." secret:@"..."]; s3manager.requestSerializer.region = AFAmazonS3USWest1Region; s3manager.requestSerializer.bucket = @"my-bucket-name"; NSString *destinationPath = @"/pathOnS3/to/file.txt"; [s3Manager postObjectWithFile:@"/path/to/file.txt" destinationPath:destinationPath parameters:nil progress:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100)); } success:^(AFAmazonS3ResponseObject *responseObject) { NSLog(@"Upload Complete: %@", responseObject.URL); } failure:^(NSError *error) { NSLog(@"Error: %@", error); }];
выдается ошибка: "The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.".
Загрузка файла в Amazon S3 из iOS приложения
Шаг 1
Настроить iOS проект.Шаг 2
Сделать свою имплементацию протокола AWSCredentialsProvider.// // MyCredentialsProvider.h // #import <Foundation/Foundation.h> #import "S3.h" #import "AWSCore.h" @interface MyCredentialsProvider : NSObject <AWSCredentialsProvider> @property (nonatomic, strong) NSString *accessKey; @property (nonatomic, strong) NSString *secretKey; @property (nonatomic, strong) NSString *sessionKey; @property (nonatomic, strong) NSDate *expiration; - (BFTask *)refresh; @end
Как получить доступ к S3 с Temporary Security Credentials
Возникла задача получения доступа к S3 с временными идентификационными данными.
Сначала пытался получить доступ с помощью утилиты S3cmd, но ничего не вышло.
Оказалось, что существует официальный инструмент AWS Command Line Interface (CLI) для управления сервисами AWS.
На Mac OS X этот инструмент можно установить с помощью Pip.
$ sudo pip install awscli
После установки необходимо настроить идентификационные данные.
$ aws configure
AWS Access Key ID [None]: ASIAJ2LOZXPUWYVRQB4A
AWS Secret Access Key [None]: 8Q2FYOt/Dhm+1ZdORnHiF34KXMhdXFwFO+Y44WFJ
Default region name [None]:
Default output format [None]:
$ nano ~/.aws/credentials
[default]
aws_access_key_id=ASIAJ2LOZXPUWYVRQB4A
aws_secret_access_key=8Q2FYOt/Dhm+1ZdORnHiF34KXMhdXFwFO+Y44WFJ
aws_session_token=AQoDYXdzEO7//////////wEasAMSqQduGZ+dZ4WXCtiqPL5etHZNZLjFIWJVizeWolATFoIxTJYpcJN1C5/nzBgqd8QFFIwuscGWRh39/1rtLIQgA2d5n4ZL4/EzBP6oxZNwDORM39g3AdR84pKc6xcTN4Lv3f+3kofzmPLArO8jax3/ISsdI8YfKds2OzFYnHGSE1KmKeui+655UHLSnihTleptzqDJW4oNKaXxVkCGB5IDTA0xbB6S11deTJOmhuhWkqoISwuS9RSOVxF8e+czstUmNqs0rFRvw6WA/SxOnTU+CRWjsu5c/KUVRFe7VfrbJIY4jNHdOUvgQPJr2aCr3vYwwYCe6iyRwuHD2LR+I2m/ukTBHSHVMSHlp9G0fHF06hCX/rClrRR2OiStz1jjrlG4b+PHuStjSUUQnMfpy2xLL0Z6oEUXxlLKAkSfnk46XWG1vACFzhBDzsKywRhgCkrSpq2REWahVAdmczbqA0OayNRHdJ5diYLKB9jqx1tGdqlydmOB+RrQHv85HcHcsmH5yjbyyJUj5QasiTd4TQV7I1sZDIG+YAgenZOJ15NLTbn2+Vxn0FDs/A0f0mfAsQIgyM7NpgU=
$ nano config
[default]
region=eu-central-1
aws предоставляет различные опции. В частности можно указать --endpoint-url (string).
$ aws --endpoint-url https://s3.eu-central-1.amazonaws.com s3 ls s3://example.com/a/b/
Доступ к Amazon S3
Amazon Simple Storage Service (S3) — это долгосрочное хранилище данных на основе облачной обработки. Этот сервис работает независимо от остальных сервисов, предоставляемых Amazon. Фактически приложения, которые вы разрабатываете для хостинга ваших собственных серверов, могут использовать Amazon S3, без необходимости перемещения в облако иным образом. Когда компания Amazon называет S3 "простым хранилищем" (simple storage), то она имеет в виду набор функций, предоставляемых сервисом, а не простоту использования. Amazon S3 позволяет вам переместить данные в облако и извлечь их обратно. При этом вам нет необходимости знать что-либо о том, как именно и где именно в облаке хранятся ваши данные. Если вы воспринимаете Amazon S3 как удаленную файловую систему, то вы глубоко заблуждаетесь. Amazon S3 во многих отношениях гораздо примитивнее файловой системы. В действительности вы не храните там нечто, называемое "файлами", вы храните там объекты. Более того, объекты (objects) хранятся в "корзинах" (buckets), а не в каталогах (directories), как в файловой системе. Хотя эти различия могут казаться чисто семантическими, вы должны учитывать их, принимая во внимание следующие важные факты:
- объекты, хранимые в S3, не могут иметь размер, превышающий 5 Гбайт;
- "корзины" (Buckets) существуют в плоском пространстве имен, предоставленном в общий доступ всем пользователям Amazon S3. Вы не имеете возможности создавать вложенные корзины и должны быть предельно внимательны к пересечениям в пространстве имен;
- вы можете сделать свои корзины и объекты доступными для публичного просмотра;
- без помощи инструментов от сторонних разработчиков вы не можете "монтировать" (mount) хранилище S3. На самом деле, я не слишком одобрительно отношусь к самой идее "монтирования" S3, как раз из-за столь существенной концептуальной разницы между S3 и файловой системой. Это различие делает неправильной саму мысль о рассмотрении S3 в качестве файловой системы.
Прежде чем получить доступ к S3, вам необходимо создать учетную запись Amazon Web Services. При этом вы можете запросить пространство для хранения данных на серверах, расположенных либо в США, либо в Европе, либо даже в Азиатско-Тихоокеанском регионе (в апреле 2010 года компания Amazon запустила первый регион EC2 в Азиатско-Тихоокеанском регионе (Сингапур)). Когда речь заходит о хранении данных, выбор местоположения серверов — это вопрос не только вашего места жительства. Как будет рассказано далее в этой книге, на решение о месте хранения ваших облачных данных влияют административные вопросы и различные аспекты, касающиеся конфиденциальности информации. В этой главе я рассматриваю вопрос доступа к S3, исходя из предположения, что вы выбрали хранилище, ближайшее к вам.
Amazon предоставляет доступ к S3 как через SOAP API, так и через REST API. Хотя разработчики обычно лучше знакомы с разработкой Web-сервисов с помощью SOAP, REST представляет собой предпочтительный механизм для доступа к S3, вследствие того, что при обработке больших двоичных объектов (Blinary Large Objects, BLOBs) через SOAP API возникают сложности. В частности, SOAP ограничивает размер объекта, которым можно манипулировать в S3, а также ограничивает любую обработку (например, индикатор статуса передачи), которую вам может потребоваться осуществлять над потоками данных по мере того, как они передаются в S3 и обратно.
Интерфейс прикладного программирования Amazon Web Services поддерживает следующие возможности:
- поиск корзин (buckets) и объектов;
- обнаружение их метаданных;
- создание новых корзин;
- загрузка новых объектов;
- удаление существующих корзин и объектов.
При манипулировании вашими корзинами вы при желании можете указать местоположение для хранения содержимого корзины. За исключением случаев, когда вам требуется по-настоящему тонкоструктурированный контроль над взаимодействиями с S3, я рекомендовал бы вам использовать "обертку" API (API wrapper) для вашего предпочитаемого языка программирования, которая будет абстрагировать вас от S3 REST API. Например, мои разработчики программируют на Java с применением Jets3t. Чтобы начать работу с Amazon S3, вам наверняка пригодится клиентское приложение командной строки s3cmd для Amazon S3. Это приложение представляет собой "обертку" с интерфейсом командной строки для доступа к Web-сервисам S3. Данный инструмент написан на Python, а это значит, что вы можете изучить его исходный код — он послужит отличным образцом, иллюстрирующим хороший стиль написания приложений на Python для S3.
Кроме того, Amazon предоставляет доступ к Amazon S3 по протоколу BitTorrent. BitTorrent представляет собой пиринговый (peer-to-peer, P2P) протокол для кооперативного доступа к файлам. Поскольку BitTorrent является стандартным протоколом для совместного доступа к большим двоичным объектам, на рынке предлагается целый ряд клиентов и приложений, предназначенных для потребления и публикации данных с помощью BitTorrent. Если ваше приложение может использовать эту встроенную инфраструктуру, то возможно, имеет смысл воспользоваться преимуществами, предоставляемыми поддержкой протокола BitTorrent со стороны Amazon S3. В общем случае, однако, транзакционные Web-приложения не используют BitTorrent для взаимодействия с S3.
Чтобы проиллюстрировать практическое использование S3, воспользуемся утилитой s3cmd для передачи файлов в хранилище S3 и обратно. Команды, поддерживаемые этой утилитой, отражают функции API Web-сервисов, на которых она основывается. После того как вы скачаете эту утилиту, вам потребуется сконфигурировать ее, указав ваши ключ доступа к S3 и секретный ключ S3. Вне зависимости от того, какой инструментарий вы используете — эту утилиту или какоенибудь другое средство, вам все равно будут нужны эти ключи для доступа к вашим частным корзинам в S3.
Первое, что вам потребуется сделать в S3 — это создать корзину, в которой вы будете хранить объекты. Это делается следующей командой: s3cmd mb s3://BUCKET
Данная команда создает корзину и присваивает ей указанное вами имя. Как я уже заметил ранее в этой главе, пространство имен для вашей корзины доступно всем клиентам Amazon. Если только вы не являетесь первым читателем этой книги, крайне маловероятно, что только что приведенная команда будет выполнена успешно. Чтобы команда выполнилась успешно, вам необходимо заменить имя BUCKET на любое другое, уникальное для вас. Многие пользователи с тем, чтобы сделать имена корзин уникальными для себя, примерно так, как это делается для доменных имен, предваряют имена корзин префиксами. Тем не менее, имейте в виду, что какой бы стандарт именования вы ни приняли, ничто не может помешать другим пользователям нарушать ваше соглашение об именовании.
Я уже несколько раз предупреждал вас о ситуациях с пространством имен корзин. Возможно, к этому моменту вы уже серьезно задумались о том, как же следует работать в условиях таких ограничений, касающихся именования.
В первую очередь, вам следует иметь в виду следующие правила именования.
- Имена могут состоять только из строчных букв (символов в нижнем регистре клавиатуры), цифр, точек, символов подчеркивания и дефисов. Начальным символом имени должна быть буква или цифра.
- Имя не должно составляться в стиле IP-адреса (иными словами, не допускаются имена наподобие 10.0.0.1).
- Длина имени должна составлять не менее 3 и не более 255 символов.
Возможно, вам захочется называть свои корзины таким образом, чтобы они образовали ваше собственное виртуальное пространство имен корзин. Например, мне вполне подойдет такое имя, как com.imaginary.mybucketis, потому что мне принадлежит домен imaginary.com. Важно отметить, что ничто не гарантирует вам того, что никакой другой пользователь не станет использовать ваш домен (или любое другое придуманное вами соглашение об именовании) в качестве префикса имен своих корзин. Поэтому ваши приложения должны использовать достаточно интеллектуальный подход к созданию новых корзин и не должны быть привязаны к конкретной схеме именования.
Amazon предлагает следующие правила именования корзин, которые позволят вам создавать действительные и корректные URL для ваших объектов S3.
После того как корзина будет создана, ее можно начинать заполнять объектами:
s3cmd put LOCAL_FILE s3://BUCKET/S3FILE
Например:
s3cmd put home_movie.mp4 s3://com.imaginary.movies/home_movie.mp4
Утилита s3cmd ограничивает размеры ваших файлов до 5 Гбайт, что является следствием ранее упомянутого ограничения S3. Далее в этой книге мы обсудим стратегии обхода этого ограничения, методы обеспечения более высокого уровня безопасности, а также контроля целостности ваших объектов S3.
Когда объект вам потребуется, вы можете извлечь его из облака:
s3cmd get s3://BUCKET/S3FILE LOCAL_FILE
Например:
s3cmd get s3://com.imaginary.movies/home_movie.mp4 home_movies3.mp4
В приведенном примере файл с вашим домашним видео извлечен обратно на ваш настольный компьютер. Приведу еще несколько популярных команд, которые вы можете использовать.
Удалить корзину можно только в том случае, если она пуста. Прежде чем удалить корзину, вы должны пошагово, один за другим удалить из нее все объекты. Скоро в составе утилиты s3cmd появится опция --recursive, предназначенная для использования с командой del, но вы должны иметь в виду, что она всего лишь будет перечислять содержимое корзины и удалять объекты один за другим. Если вы используете API Web-сервисов, вам потребуется написать собственную подпрограмму рекурсивного удаления корзины, которая содержит объекты.
Amazon предлагает следующие правила именования корзин, которые позволят вам создавать действительные и корректные URL для ваших объектов S3.
- Не следует создавать имена корзин, в состав которых входят символы подчеркивания (несмотря на то, что официально это разрешено).
- В идеальном варианте лучше всего ограничить длину имени 63 символами.
- Не следует создавать имена корзин, завершающиеся дефисом, а также следует избегать ситуаций, когда в составе имени за дефисом следует точка.
После того как корзина будет создана, ее можно начинать заполнять объектами:
s3cmd put LOCAL_FILE s3://BUCKET/S3FILE
Например:
s3cmd put home_movie.mp4 s3://com.imaginary.movies/home_movie.mp4
Утилита s3cmd ограничивает размеры ваших файлов до 5 Гбайт, что является следствием ранее упомянутого ограничения S3. Далее в этой книге мы обсудим стратегии обхода этого ограничения, методы обеспечения более высокого уровня безопасности, а также контроля целостности ваших объектов S3.
Когда объект вам потребуется, вы можете извлечь его из облака:
s3cmd get s3://BUCKET/S3FILE LOCAL_FILE
Например:
s3cmd get s3://com.imaginary.movies/home_movie.mp4 home_movies3.mp4
В приведенном примере файл с вашим домашним видео извлечен обратно на ваш настольный компьютер. Приведу еще несколько популярных команд, которые вы можете использовать.
- Вывод списка всех ваших корзин: s3cmd ls
- Вывод списка содержимого конкретной корзины: s3cmd ls s3://BUCKET
- Удаление объекта из корзины: s3cmd del s3://BUCKET/S3FILE
- Удаление корзины: s3cmd rb s3://BUCKET
Удалить корзину можно только в том случае, если она пуста. Прежде чем удалить корзину, вы должны пошагово, один за другим удалить из нее все объекты. Скоро в составе утилиты s3cmd появится опция --recursive, предназначенная для использования с командой del, но вы должны иметь в виду, что она всего лишь будет перечислять содержимое корзины и удалять объекты один за другим. Если вы используете API Web-сервисов, вам потребуется написать собственную подпрограмму рекурсивного удаления корзины, которая содержит объекты.
Обзорная информация об Amazon Simple Storage Service (S3)
Amazon S3 представляет собой облачное хранилище данных, доступное в реальном времени через API Web-сервисов из любой точки Интернета. Используя этот API, вы можете хранить любое количество объектов, размер которых варьируется от 1 байта до 5 Гбайт, в более или менее плоском пространстве имен.
Важно не думать об Amazon S3 как о файловой системе. Я видел много случаев, когда люди наживали себе неприятности, когда воспринимали Amazon S3 таким образом. В первую очередь, Amazon S3 имеет двухуровневое пространство имен. На первом уровне вы имеете так называемые "корзины" или "ведра" (buckets). Их можно считать аналогом каталогов в файловой системе, если вам так нравится, потому что они содержат данные, которые вы помещаете в S3. Однако, в отличие от традиционных каталогов, вы не можете организовать их иерархически — корзины не допускают вложенности (иначе говоря, вы не можете создать корзину внутри корзины). Возможно, еще более важное значение имеет тот факт, что пространство имен корзин предоставлено в общий доступ всем клиентам Amazon. Поэтому вам необходимо особо позаботиться о том, чтобы имена ваших корзин не пересекались с именами других корзин. Проще говоря, не следует создавать корзины с именами наподобие "Documents".
Еще один важный момент, который следует иметь в виду, заключается в том, что служба Amazon S3 работает относительно медленно. В действительности эта служба работает очень быстро для сервиса, развернутого в Интернете, но если вы ожидаете, что она будет отвечать на ваши запросы так же быстро, как локальный жесткий диск или SAN, то вы будете глубоко разочарованы. Таким образом, использование Amazon S3 в качестве оперативного хранилища не слишком благоразумно.
Наконец, доступ к S3 осуществляется через Web-службы, а не через файловую систему или WebDAV (защищенный сетевой протокол высокого уровня, работающий поверх HTTP и обеспечивающий доступ к объектам и коллекциям). В результате этого приложения должны разрабатываться с учетом того, что они должны хранить данные в Amazon S3. Вероятно, еще важнее то, что вы не можете просто воспользоваться командой rsync для синхронизации каталога с S3 без специальных инструментов, которые применяют Amazon API и, таким образом, обходят ограничения S3.
Итак, мы разобрались с тем, чего не следует ожидать от Amazon S3 — а теперь рассмотрим, что мы можем ожидать от этой службы.
Amazon S3 позволяет поместить хранимые данные в облачную инфраструктуру и впоследствии при необходимости их извлечь. При этом вы можете быть практически полностью уверены в том, что извлеченные данные будут представлять собой единый и непротиворечивый блок информации. Ключевым преимуществом Amazon S3 является то, что вы можете сбрасывать и сбрасывать данные в Amazon S3, совершенно не беспокоясь о проблеме нехватки пространства для их хранения. Иначе говоря, для большинства пользователей S3 служит в качестве краткосрочного или долгосрочного хранилища резервных копий.
Подписаться на:
Сообщения (Atom)
