如何帮EC2摸到S3上的数据

一般来说,因为s3的存储成本优势,我们都会把数据如bcl,fastq,bam,sam等全部丢到s3上长期保存,然后需要分析的时候,开启一台服务器EC2,拷贝这些数据到EC2连接的EBS/EFS上,再进行下一步的分析,那么问题来了,我怎么才能帮EC2摸到s3上的数据呢?

-- D.C

你该知道的

你该掌握的

方式1 - GET 或 wget

这两个命令我们一定不陌生吧,wget是HTTP和FTP客户端的常用下载方式,默认在Amazon Linux中都安装好的。所以如果我们知道要下载对象的URL,就可以用这个命令下载:

wget https://my_bucket.s3.amazonaws.com/path-to-file

需要注意:

方式2 - AKSK访问

什么是AKSK? 简单来说,我们在aws账户下新建user的时候,都会给我们一个csv格式文件,里面保存的就是AKSK两个key,在向云端发起访问时向它证明你就是你。

通过配置EC2上的AWS CLI 访问S3上的桶和文件,AWS CLI默认都在EC2上装好的。在这台EC2上配置好CLI的AKSK信息,就可以向S3进行数据交互了,而且无须申请S3的ICP备案 白名单,缺点是每台EC2都要配置一次AKSK密钥信息,不太安全。

$ aws configure
AWS Access Key ID [****************xxxx]:   # 输入你的AK key
AWS Secret Access Key [****************xxxx]: # 输入你的SK key
Default region name [cn-northwest-1]:  # 宁夏:cn-northwest-1,北京:cn-north-1
Default output format [json]:   # 默认json

配置完之后利用aws cli中的S3模块命令进行数据拷贝:

aws s3 cp s3://my_bucket/my_folder/my_file.ext my_copied_file.ext

aws s3 cp my_copied_file.ext s3://my_bucket/my_folder/my_file.ext

aws s3 sync s3://remote_S3_bucket ./

aws s3 sync s3://remote_S3_bucket/myfolder ./myfolder

aws s3 sync myfolder s3://remote_S3_bucket/myfolder

方式3 - IAM角色设置(推荐)

以上两种方式有利有弊,用IAM角色来控制EC2的权限是官方推荐的最佳实践 哦。

什么是AWS IAM?全称AWS Identity and Access Management ,用于集中管理用户、访问密钥等安全凭证,以及控制用户和应用程序可以访问哪些 AWS 资源的权限。(这里仅作简要介绍,后面会开专贴详解)

iamrolecreate

iamroleec2

iamrolepolicy

iamroletag