开场:

查了两天文档,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. 程序员教程-9章-C程序设计

    目录结构: 9.1 C语言基础 9.1.1 数据类型 1 基本数据类型 2 数组.字符数组与字符串 3 枚举类型 4 结构体.共用体和typedef 9.1.2 运算符与表达式 9.1.3 输入/输出 ...

  2. Nagios自定义扩展

    原理:监控端通过check_nrpe把要监控的指令发送给被监控端,被监控端在本机执行监控任务,并把执行的结果发送回监控端. 如何扩展Nagios,以实现自定义监控? 借助插件进行的每一次有效的Nagi ...

  3. [ERR] Not all 16384 slots are covered by nodes.

    redis集群开不起来,用redis-cli连接的时候出现如下错误: CLUSTERDOWN The cluster is down 然后使用redis-trib.rb检查: ./redis-trib ...

  4. adb连接过程中常见问题解决方法

    在测试过程中经常会遇到需要使用adb连接服务器的问题,但是有时候经常会遇到连不上的情况,总结两种解决方式 1)error: unknown host service 此问题是由于端口号已经被占用了,可 ...

  5. JavaScript eval_r() 函数

    定义和用法 eval_r() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval_r(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的  ...

  6. js 获取input选择的图片的信息

    1JS $("#btn").click(function () { var imageEle = document.getElementById("images" ...

  7. Fb 第三方接口

    1.Facebook ID? User ID / https://www.piliapp.com/facebook/id/?url=https%3A%2F%2Fwww.facebook.com%2Fz ...

  8. jquery parents用法

    之前一直用find 现在用parents var w = $("div"); w = $("div").parents('.class'); //在Parent ...

  9. HTML的实际演练2

    1.html 换行: 如果你想在不产生新的段落下换行,就使用<br/><p>tishi is a praskdjf<br/>ldkfldj</p> 2. ...

  10. 在winsshd 中添加id_rsa.pub 实现Windows 服务器主机自动信任Linux 客户端

    文章一. 生成密钥: 在Linux主机(ssh客户端),通过ssh-keygen在建立SSH keys# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)将在 ...