如何在AWS s3和AWS ec2之间传输文件
我正在使用AWS ec2实例。 在这个例子中,我产生了一些文件。 这些操作是由用户数据完成的。
现在我想通过在用户数据本身编写代码来将这些文件存储在s3上。
- 那么如何将这些文件存储在s3上呢?
- 有任何教程呢?
使用最新的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
如果这是您首次使用aws
CLI工具,那么您需要运行:
aws configure
这将要求您input您的访问密钥和秘密,并指定一个默认区域。
有很多方法可以将文件发送到S3。 我在下面列出了他们的安装和相关文件。
-
S3CMD :( http://s3tools.org/s3cmd )你可以通过apt-get install s3cmd轻松地在debian / ubuntu上安装,然后从命令行运行。 你可以把它合并到一个bash脚本或你的程序中。
-
S3FS :( http://www.pophams.com/blog/howto-setups3fsonubuntu1104x64和https://code.google.com/p/s3fs/wiki/InstallationNotes )…这个挂载一个s3桶,以便它看起来就像本地磁盘一样。 它需要更多的努力来设置,但一旦磁盘被安装,你不需要做任何特殊的事情来获取你的存储桶中的文件。
-
如果你使用CMS(以Drupal为例),你可以select使用模块来处理对你的存储桶的访问,例如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同步网站
http://docs.aws.amazon.com/cli/latest/reference/s3api/index.html与S3交互;
我使用s3cmd从我的ec2实例存储每晚导出的数据库备份文件。 在s3cmd的configuration完成后,你可以在他们的站点上阅读,然后运行一个命令:
s3cmd put ./myfile s3://mybucket
安装s3cmd软件包为:
yum install s3cmd
要么
sudo apt-get install s3cmd
取决于你的操作系统。 然后用这个复制数据:
s3cmd get s3://tecadmin/file.txt
也可以列出文件。
更多detils看到这一点
使用s3cmd
:
s3cmd get s3://AWS_S3_Bucket/dir/file
看看如何在这里安装s3cmd:
这适用于我…
所有将s3挂载为伪文件系统的尝试都是有问题的。 这是一个对象存储,而不是一个块设备。 如果你必须装载它,因为你有遗留的代码必须有本地文件path,尝试愚蠢。 它比s3fs快50倍。 https://github.com/kahing/goofys
这些天s3cmd在牙齿上有点长。 AWS cli是最近的一个更好的select。 语法稍微不方便,但它是一个你需要保持的less一个工具。
如果你可以坚持http访问。 从长远来看,这会让你的生活更轻松。