it-swarm.com.ru

Как передавать файлы между AWS s3 и AWS ec2

Я использую экземпляр AWS ec2. В этом случае я привожу несколько файлов. Эти операции выполняются пользовательскими данными.

Теперь я хочу сохранить эти файлы на s3, написав код в самих пользовательских данных.

  • Итак, как я могу хранить эти файлы на S3?
  • Есть какие-нибудь учебники по этому?
49
Pravin

Используя самый последний интерфейс командной строки AWS ( http://aws.Amazon.com/cli/ ), вы можете использовать следующие команды для копирования файлов из вашего экземпляра Ec2 или даже с вашего локального компьютера в хранилище S3.

aws s3 cp myfolder s3://mybucket/myfolder --recursive

Затем вы получите что-то вроде:

upload: myfolder/file1.txt to s3://mybucket/myfolder/file1.txt 
upload: myfolder/subfolder/file1.txt to s3://mybucket/myfolder/subfolder/file1.txt

Если вы впервые используете инструмент CLI aws, вам нужно будет выполнить:

aws configure

Вам будет предложено ввести ключ доступа и секрет, а также указать регион по умолчанию. 

57
ajtrichards

Существует несколько способов отправки файлов на S3. Я перечислил их ниже вместе с установкой и документацией, где это уместно.

  • S3CMD: ( http://s3tools.org/s3cmd ) Вы можете легко установить это на debian/ubuntu через apt-get install s3cmd, а затем запустить из командной строки. Вы можете включить это в скрипт bash или в свою программу.

  • S3FS: ( http://www.pophams.com/blog/howto-setups3fsonubuntu1104x64 и https://code.google.com/p/s3fs/wiki/InstallationNotes ). .. Это монтирует корзину s3, так что это выглядит как локальный диск. Для установки требуется немного больше усилий, но как только диск смонтирован, вам не нужно делать ничего особенного, чтобы получить файлы в вашем ведре.

  • Если вы используете CMS (в качестве примера рассмотрим Drupal), у вас может быть возможность использовать модуль для управления доступом к вашему ведру, например, http://drupal.org/project/storage_api

  • Наконец, вы можете использовать реализации языка программирования для самостоятельной обработки всего логического, для PHP вы можете начать с этого http://undesigned.org.za/2007/10/22/Amazon- s3-php-class и смотри документацию здесь http://undesigned.org.za/2007/10/22/Amazon-s3-php-class/documentation

Пример реализации PHP:

<?php

    // Simple PUT:
    if (S3::putObject(S3::inputFile($file), $bucket, $uri, S3::ACL_PRIVATE)) {
        echo "File uploaded.";
    } else {
        echo "Failed to upload file.";
    }

?>

Пример s3cmd:

s3cmd put my.file s3://bucket-url/my.file

Правка

Стоит упомянуть еще один вариант - AWS CLI http://aws.Amazon.com/cli/ Он широко доступен, например, он уже включен в AmazonLinux и может быть загружен через Python (который устанавливается на многие системы, включая Linux и Windows).

http://docs.aws.Amazon.com/cli/latest/reference/s3/index.html

Доступные команды, cp ls mb mv rb rm sync website

http://docs.aws.Amazon.com/cli/latest/reference/s3api/index.html для взаимодействия с S3

32
Drew Khoury

Установите пакет s3cmd как:

yum install s3cmd

или же 

Sudo apt-get install s3cmd

в зависимости от вашей ОС. Затем скопируйте данные с этим:

s3cmd get s3://tecadmin/file.txt

также ls может перечислить файлы.

Для получения дополнительной информации см. это

10
Vikas Hardia

Я использую s3cmd для хранения еженедельно экспортированных файлов резервных копий базы данных из моего экземпляра ec2. После настройки s3cmd, о которой вы можете прочитать на их сайте, вы можете запустить такую ​​команду:

s3cmd put ./myfile s3://mybucket

8
digitaljoel

Используйте s3cmd для этого:

s3cmd get s3://AWS_S3_Bucket/dir/file

Посмотрите, как установить s3cmd здесь :

Это работает для меня ...

5
Prasad D

Все попытки монтировать s3 как псевдофайловую систему проблематичны. Это хранилище объектов, а не блочное устройство. Если вам нужно смонтировать его, потому что у вас есть устаревший код, который должен иметь локальные пути к файлам, попробуйте goofys. Это примерно в 50 раз быстрее, чем s3fs. https://github.com/kahing/goofys

s3cmd немного длиннее в зубе в эти дни. AWS cli - лучший вариант в наши дни. Синтаксис немного менее удобен, но это еще один инструмент, который вам нужно держать в руках.

Если вы можете придерживаться http доступа. Это сделает вашу жизнь легче в долгосрочной перспективе.

4
Bruce Edge

В AWS CLI я использовал следующую команду для копирования файла Zip из экземпляра EC2 в S3

aws s3 cp file-name.Zip s3://bucket-name/
0
DKboss

Я думаю, что лучший ответ на самом деле выше - использовать команду aws, но для случаев, когда вы не хотите беспокоиться об установке чего-либо еще, также стоит упомянуть, что вы можете просто загрузить файл через HTTPS, например, откройте браузер и перейдите к:

https://s3.amazonaws.com/ (bucketName) / (относительный путь) / (fileName)

Это также означает, что вы можете просто использовать wget или curl для передачи из приглашений Shell.

0
Appurist-PaulW