Как передавать файлы между AWS s3 и AWS ec2
Я использую экземпляр AWS ec2. В этом экземпляре я получаю некоторые файлы. Эти операции выполняются с помощью пользовательских данных.
Теперь я хочу сохранить эти файлы на s3, написав код в самих пользовательских данных.
- Итак, как я могу хранить эти файлы на s3?
- Есть ли у него учебники?
Ответы
Ответ 1
Используя самый последний AWS CLI (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
Это попросит вас ввести ключ доступа и секрет, а также указать область по умолчанию.
Ответ 2
Существует несколько способов отправки файлов на S3. Я перечислил их ниже вместе с установкой и документацией, если это необходимо.
Пример реализации 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
Ответ 3
Установите s3cmd Пакет как:
yum install s3cmd
или
sudo apt-get install s3cmd
в зависимости от вашей ОС. Затем скопируйте данные следующим образом:
s3cmd get s3://tecadmin/file.txt
также ls
может отображать файлы.
Для получения дополнительной информации см. this
Ответ 4
Я использую s3cmd для хранения файлов резервных копий базы данных, загруженных из моего экземпляра ec2. После настройки s3cmd, о котором вы можете прочитать на своем сайте, вы можете запустить команду, например:
s3cmd put ./myfile s3://mybucket
Ответ 5
Для этого используйте s3cmd
:
s3cmd get s3://AWS_S3_Bucket/dir/file
Посмотрите, как установить s3cmd здесь:
Это работает для меня...
Ответ 6
Все попытки монтировать s3 в качестве псевдо файловой системы являются проблематичными. Это хранилище объектов, а не блок-устройство.
Если вы должны установить его, потому что у вас есть устаревший код, который должен иметь локальные пути к файлу, попробуйте goofys. Это примерно в 50 раз быстрее, чем s3fs. https://github.com/kahing/goofys
s3cmd немного длиннее в зубе в эти дни. AWS cli - лучший вариант в наши дни. Синтаксис немного менее удобен, но это еще один инструмент, который вам нужно поддерживать.
Если вы можете придерживаться доступа к http. Это облегчит вам жизнь в долгосрочной перспективе.
Ответ 7
В AWS CLI я использовал следующую команду для копирования файла zip из экземпляра EC2 в S3
aws s3 cp file-name.zip s3://bucket-name/
Ответ 8
Я думаю, что лучший ответ на самом деле выше - использовать команду aws
, но для случаев, когда вы не хотите беспокоиться об установке чего-либо еще, также стоит упомянуть, что вы можете просто загрузить файл через HTTPS, например, открыть браузер и перейдите к:
https://s3.amazonaws.com/
(имя_кармана) /
(относительный_путь) /
(имя_файла)
Это также означает, что вы можете просто использовать wget
или curl
для переноса из приглашений оболочки.