zoukankan      html  css  js  c++  java
  • 用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:UsersUSER_NAME.awscredentials 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流程了。

    我好饿。。。

  • 相关阅读:
    关于音视频同步
    redis JedisConnectionException: Could not get a resource from the pool
    ping指定IP的指定端口号
    如何查看端口号是否被占用
    mongodb增删改查基础语法
    mongodb重置密码
    本地MongoDB服务开启与连接本地以及远程服务器MongoDB服务
    MongoDB服务的安装与删除
    可视化
    Elasticsearch下载安装
  • 原文地址:https://www.cnblogs.com/alex1128/p/awsUpload.html
Copyright © 2011-2022 走看看