开场:

查了两天文档,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. JSTL标签库学习3-fn

    fn的全称为functions, 就是提供一些方法,函数等. 主要是一些操作字符串的函数. fn:contains(str, str)显示用户浏览器,操作系统.可以从header中获取user-age ...

  2. 安装oracle后java -version命令显示 jdk version "1.3.1"的原因

    因为先装的JDK,后装了oracle,oracle的JDK配置把原来的jdk路径替换掉了. 我的电脑->属性->高级->环境变量->系统变量->PATH ,把JDK的路径 ...

  3. JDK5并发(1) Locks-AQS

    AbstractQueuedSynchronizer @(Base)[JDK, locks, ReentrantLock, AbstractQueuedSynchronizer, AQS] 转载请写明 ...

  4. 多个jsp页面共享Java bean

    通过jsp的内置对象—request对象获取参数: 通过超链接传参: 例:把a.jsp中i的值传到b.jsp中: 在a.jsp页面中的核心代码为: <a href="b.jsp?i=1 ...

  5. textbox显示定位到最后一行(最新一行)

    this.textBox1.Select(this.txtMsgInfo.TextLength, 0); this.textBox1.ScrollToCaret();

  6. php socket 函数

    创建基于socket的应用程序,就需要详细了解socket的操作方法,这里列举PHP中一些重要的socket函数.   1. socket_create ( int $domain , int $ty ...

  7. Mysql update 一个表中自己的数据

    update  table ucf, table t2 set ucf.pcid = t2.pcid where t2.name = 'liming' and t2.gid= ucf.gid and ...

  8. 用R包来下载sra数据

    1)介绍 我们用SRAdb library来对SRA数据进行处理. SRAdb 可以更方便更快的接入  metadata associated with submission, 包括study, sa ...

  9. select 1 与 select null (转)

    1.Select 1 在这里我主要讨论的有以下几个select 语句: table表是一个数据表,假设表的行数为10行,以下同. 1:select  1 from table 2:select cou ...

  10. mysql异常

    一.Can't connect to MySQL server on 'localhost' (10061)翻译:不能连接到 localhost 上的mysql分析:这说明“localhost”计算机 ...