2013-04-09 60 views
41

我正在使用AWS ec2实例。在这个例子中,我产生了一些文件。这些操作由用户数据完成。如何在AWS s3和AWS ec2之间传输文件

现在我想通过在用户数据本身编写代码在s3上存储这些文件。

  • 那么如何将这些文件存储在s3上?
  • 有任何教程吗?
+0

你有没有这个运气? – 2014-01-24 07:55:21

回答

8

我使用s3cmd来存储从我的ec2实例中每晚导出的数据库备份文件。 s3cmd,你可以在他们的网站上读到的配置之后,你就可以运行像这样的命令:

s3cmd put ./myfile s3://mybucket

+0

它的工作原理,但我无法在我的PHP代码中使用s3cmd。 – Asghar 2013-07-30 12:29:19

+0

你见过我的答案吗? – 2013-11-21 11:22:30

31

有多种方式将文件发送到S3。我在下面列出了它们以及相关的安装和文档。

文档中的PHP IM的例子plementation:

<?php 

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

?> 

s3cmd的例子:这是被广泛使用,例如,它已经包含在AmazonLinux并能

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

编辑

另一种选择值得一提的是AWS CLI http://aws.amazon.com/cli/ 可以通过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

交互
+0

大ans的朋友..只是在寻找这个:) – 2015-06-23 06:12:05

4

使用s3cmd为:

s3cmd get s3://AWS_S3_Bucket/dir/file 

见浩w至s3cmd here安装:

这对我的作品......

9

安装为s3cmd包装:根据您的操作系统

yum install s3cmd 

sudo apt-get install s3cmd 

。然后用此复制数据:

s3cmd get s3://tecadmin/file.txt 

ls可以列出文件。

更多detils看到this

50

采用最新的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

这将要求您输入您的访问密钥&秘密,并指定一个默认区域。

+1

aws cli比s3cmd好多了。 – 2016-12-17 19:58:15

+0

@ajtrichards有没有办法使用命令行参数提供访问密钥和秘密? – EmptyData 2017-06-21 16:36:08

+0

@EmptyData您可以使用'--profile PROFILE_NAME'标志来指示要使用哪组证书?如果您已在您的命令行上设置多个AWS配置文件。 – ajtrichards 2017-06-21 18:28:28

3

所有将s3挂载为伪文件系统的尝试都是有问题的。它是一个对象存储,而不是块设备。 如果您必须安装它,因为您的遗留代码必须具有本地文件路径,请尝试欺骗。它比s3fs快50倍。 https://github.com/kahing/goofys

s3cmd在牙齿这些天有点长。 AWS cli目前是更好的选择。语法稍微不方便,但它是一个你需要保留的少一个工具。

如果你可以坚持http访问。从长远来看,它会让你的生活更轻松。