开场:

查了两天文档,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. 推荐的 MongoDB 安装文档

    简介: MongoDB 是一个由 C++ 语言编写的基于分布式文件存储的数据库,是目前最像关系型数据库的非关系型数据库. 最近写爬虫, 思来想去觉得还是用 MongoDB 比较方便. 一.安装 # 官 ...

  2. hibernate事务隔离机制

    事务的基本概念 ACID:A是atomicity(原子性),C是consistency(一致性),I是isolation(隔离性),D是durability(持久性) 事务隔离级别从低到高: 读取未提 ...

  3. Containerpilot 配置文件 之 Jobs

    ContainerPilot job是用户定义的进程和规则,用于何时执行它,如何进行健康检查,以及如何向Consul做广告. 这些规则旨在允许灵活性覆盖几乎可能要运行的任何类型的进程. 一些可能的jo ...

  4. Structs配置文件 zg项目介绍

    Structs配置文件 1.以系统代码为名称 例:

  5. Nexus 安装 使用说明

    1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部 ...

  6. print 不换行

    [print 不换行] 参考:http://zhidao.baidu.com/link?url=-qC2RyT5_GWzW_N-SyqJYgegVt2sSXwmMWGvHfk_4MjErhm_Pj23 ...

  7. EasyUI 列表展示及基本格式

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. Ubuntu Server17.10配置静态IP

    今天心血来潮,装个虚拟机Ubuntu打算学点东西,遇到了一些问题,同时借助百度的力量解决了,下面是配置的过程. 一. 安装virtualbox 不知道从哪个版本开始,安装虚拟盒子的时候没有了安装虚拟网 ...

  9. Usage of “symmetrical” and “symmetric”

    What is the appropriate usage of "symmetrical" and "symmetric" (using the geomet ...

  10. SpringMVC入门(基于注解方式实现)

    ---------------------siwuxie095                             SpringMVC 入门(基于注解方式实现)         SpringMVC ...