用Node完成AWS S3的Upload流程之全世界最简版
开场:
查了两天文档,Error了38次,最后索性去掉所有附加条件,
连界面也不要了,在命令行里跑通了一坨最干瘪的Upload流程!
还冒着热气……
在此先做记录,明天可以搭配美美的界面继续调试了。
近来压抑的心情顿时舒畅了百分之十。
1. 注册以及相关配置:
注册一枚Amazon账户,如果你经常在Amazon上买买买,
那你其实已经有了Amazon的Retail账户,可以直接登录为AWS账户,
但要变身为这么高大上的账户,不出血怎么可能?
在这过程中,需要花费1美元的认证费用……
我把信用卡的信息输入后,未经验证就扣掉了1美元,吓尿,幸好是1美元而已!
登录后进到Security Credentials,新建一个Access Key。
如果你用Linux或OS X,在 ~/.aws/credentials 文件里写:
[default]
aws_access_key_id = Your Key Id
aws_secret_access_key = Your Access Key
如果你用Windows,我们不要做朋友了……
C:\Users\USER_NAME\.aws\credentials for Windows users 。。。
2. 安装依赖
mkdir 一枚目录比如名字叫:myAWS
创建package.json并写:
{
"dependencies": {
"aws-sdk": ">= 2.0.9",
"node-uuid": ">= 1.4.1"
}
}
这是我们需要用到的两个依赖。
保存后就可以帅帅的去 npm install 了!
3. 在Command Line里测试Upload
新建app.js,用node当然是先 require 了:
var AWS = require('aws-sdk');
var uuid = require('node-uuid');
然后缓存你的Bucket名字:var BUCKET_NAME = "testUpload";
(可以用uuid的v4给Bucket的name后面加随机字符串,后经测试发现不加它也能通过)
这个Bucket可以在AWS的console管理后台手动创建,
也可以在JS代码里createBucket(建议先 checkBucketExists)。
然后var s3 = new AWS.S3(); 创建了一个S3 client。
由于时间关系,今天只在命令行里完成了Upload,没有用到界面,
所以只写一个最简单的txt文件作为测试:
var keyName = "download-me.txt";
var keyBody = "Thank you for downloading me!";
现在可以妥妥的上床了:
……上传了:
s3.createBucket({Bucket: BUCKET_NAME}, function() {
var params = {
Bucket: BUCKET_NAME,
Key: keyName,
ACL: 'public-read',
Body: keyBody
};
// (我只是注释T_T: ) s3.putObject(params, function(err, data){ /* putObject can only send back Etag, no Location. */
s3.upload(params, function(err, data){
if(err){
console.log("Error! err =====> ", err);
}else{
var url = data['Location'];
console.log("Successfully uploaded! URL =====> ", url );
}
});
});
注释的那句:putObject 由于它的回调只返回了Etag,没有Location,所以我用upload替代它。
参数ACL可以设置文件的访问权限,如果在这里不做设置,就必须在Console里找到对应的Bucket去添加Policy,
否则无法访问到上传后的文件。
添加Policy是一个无比虐心的过程,今天就不细说了,避免呕吐……
4. 结语
这是最简单最干瘪的Upload流程了。
我好饿。。。
用Node完成AWS S3的Upload流程之全世界最简版的更多相关文章
- aws.s3的 upload 和putObject有什么区别
相同点:上传或新增一个object : <template> <div class="page"> <!-- 参考:https://blog.csdn ...
- Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...
- Upload a file with $.ajax to AWS S3 with a pre-signed url
转载自:https://gist.github.com/guumaster/9f18204aca2bd6c71a24 生成预签名的Demo文档:https://docs.aws.amazon.com/ ...
- aws s3文件上传设置accesskey、secretkey、sessiontoken
背景: 最近跟进的项目会封装aws S3资源管理细节,对外提供获取文件上传凭证的API,业务方使用获取到的凭证信息直接请求aws进行文件上传.因此,测试过程需要验证S3文件上传的有效性.aws官网有提 ...
- Amazon AWS S3 操作手册
Install the SDK The recommended way to use the AWS SDK for Java in your project is to consume it fro ...
- Java通过aws java sdk在AWS S3上进行操作客户端
有两种方式可以安装aws java sdk:方式一:可以在这个网站上下载适用于 Java 的 AWS 开发工具包https://aws.amazon.com/cn/sdk-for-java/点击网页右 ...
- AWS S3 对象存储服务
虽然亚马逊云非常牛逼,虽然亚马逊云财大气粗,虽然亚马逊用的人也非常多,可是这个文档我简直无法接受,特别是客服,令人发指的回复速度,瞬间让人无语,可是毕竟牛逼.忍了,躺一次坑而已 1.图片上传 1.1 ...
- [AWS] S3 Bucket
云存储服务 2.1 为网站打开属性 属性和权限设置 设置bucket属性,打开功能:Static website hosting(静态网站托管) 设置bucket权限,Permissions ---- ...
- 【原创】aws s3 lambda缩略图生成
参考资料: https://github.com/sagidm/s3-resizer https://aws.amazon.com/cn/blogs/compute/resize-images-on- ...
随机推荐
- CSS选择器学习小结
关于CSS选择器的问题,在实际项目中,以及一般的前端面试中会经常遇到.下面对此做一小结,梳理和巩固相关方面知识.(如有不妥之处,还望大家及时批评指正,以免误导他人) 一.选择器种类 1.id选择器(# ...
- Hibernate Annotation 设置字段的默认值
很简单,不过有点莫名其妙的意思 @Column(name="powerLoad",columnDefinition="bit(1) default 1 ") p ...
- 【346】TF-IDF
Ref: 文本挖掘预处理之向量化与Hash Trick Ref: 文本挖掘预处理之TF-IDF Ref: sklearn.feature_extraction.text.CountVectorizer ...
- HTML CSS + DIV实现整体布局 part2
9.盒模型的层次关系 我们通过一个经典的盒模型3D立体结构图来理解,如图: 从上往下看,层次关系如下: 第1层:盒子的边框(border), 第2层:元素的内容(content).内边 ...
- plot绘图
plot绘图 坐标系图(折线图) 折线图用于显示随时间或有序类别的变化趋势 plt.plot(x,y,format_string,**kwargs) y:Y轴数据,列表或数组,必选 x:X轴数据,列表 ...
- python获取当前日期
今天群里一个人问了怎么获取当前时间的问题,以前接触过计算日期之差的,具体代码如下: import datetime d1=datetime.datetime(2014,3,14) d2=datetim ...
- js base64转二进制
base64 编码规则 1.把3个字符变成4个字符.2.每76个字符加一个换行符.3.最后的结束符也要处理. 转换前 11111101, 11111111, 11111111 (二进制) 转换后 00 ...
- IIS7web服务器调试ASP.net程序遇到的一些故障的解决办法
1. [由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面] 故障描述:[由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面] ...
- Django的admin介绍
我们看到我们创建一个默认的django的项目,他在project的urls有一个admin的url的路径 我们访问这个路径,他是一个登陆框,需要输入用户名和密码 我们就需要创建这个用户名和密码,如果你 ...
- Linux之常用命令
1.cd命令 这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切换到 ...