开场:

查了两天文档,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流程之全世界最简版的更多相关文章

  1. aws.s3的 upload 和putObject有什么区别

    相同点:上传或新增一个object : <template> <div class="page"> <!-- 参考:https://blog.csdn ...

  2. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

    背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...

  3. 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/ ...

  4. aws s3文件上传设置accesskey、secretkey、sessiontoken

    背景: 最近跟进的项目会封装aws S3资源管理细节,对外提供获取文件上传凭证的API,业务方使用获取到的凭证信息直接请求aws进行文件上传.因此,测试过程需要验证S3文件上传的有效性.aws官网有提 ...

  5. Amazon AWS S3 操作手册

    Install the SDK The recommended way to use the AWS SDK for Java in your project is to consume it fro ...

  6. Java通过aws java sdk在AWS S3上进行操作客户端

    有两种方式可以安装aws java sdk:方式一:可以在这个网站上下载适用于 Java 的 AWS 开发工具包https://aws.amazon.com/cn/sdk-for-java/点击网页右 ...

  7. AWS S3 对象存储服务

    虽然亚马逊云非常牛逼,虽然亚马逊云财大气粗,虽然亚马逊用的人也非常多,可是这个文档我简直无法接受,特别是客服,令人发指的回复速度,瞬间让人无语,可是毕竟牛逼.忍了,躺一次坑而已 1.图片上传 1.1 ...

  8. [AWS] S3 Bucket

    云存储服务 2.1 为网站打开属性 属性和权限设置 设置bucket属性,打开功能:Static website hosting(静态网站托管) 设置bucket权限,Permissions ---- ...

  9. 【原创】aws s3 lambda缩略图生成

    参考资料: https://github.com/sagidm/s3-resizer https://aws.amazon.com/cn/blogs/compute/resize-images-on- ...

随机推荐

  1. Struts和Hibernate使用总结

    1   struts.xml重定向时报错    action cannot be found in the namespace/     http://blog.csdn.net/greetturin ...

  2. box2d 计算下一帧的位置/角度

    var dt:Number=1/30; var y0:Number=_body.GetPosition().y; var y:Number=y0+_body.GetLinearVelocity().y ...

  3. one by one 项目 part 4

    出现异常”The last packet sent successfully to the server was 0 milliseconds ago.“的大部分原因是由于数据库回收了连接,而系统的缓 ...

  4. WinForm多线程编程与Control.Invoke的应用浅谈

    在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的方式在WinForm开发中必不可 ...

  5. 进程间通信-Queue

    进程间通信-Queue Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信. 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传 ...

  6. 6.ZigZag Conversion(Graph, traverse)

    The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like ...

  7. Escape(状态压缩+最大流,好题)

    Escape http://acm.hdu.edu.cn/showproblem.php?pid=3605 Time Limit: 4000/2000 MS (Java/Others)    Memo ...

  8. codeblocks不支持c++11的有效解决办法

    首先cb支持c++11编程开发,但是不支持编译 看了网上好多,说setting里面设置一下就好了,16.01版本我安装了带ide的不带IDE的,安了好多次,但是就是没有那个选项 找不到c++11那个选 ...

  9. gridview 级联删除、dataset

    gridview编辑列(不使用控件绑定数据源)需要如下代码:<asp:GridView ID="GridView1" runat="server" Aut ...

  10. OpenStack概念架构简述

    什么是OpenStack OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云 ...