代码之家  ›  专栏  ›  技术社区  ›  Tom Bom

AWS S3预签名URL错误

  •  0
  • Tom Bom  · 技术社区  · 6 年前

    我正在建立一个节点应用程序,我有一个现有的AWS帐户上传图像。

    这是我的代码,我遵循了之前在这里发布的文档和其他一些问题:

    const AWS = require('aws-sdk');
    
    const s3 = new AWS.S3();
    AWS.config.update({
      accessKeyId: 'string',
      secretAccessKey: 'string',
      region: 'string'
     });
    const myBucket = 'string-bucket';
    const myKey = 'file-name.png';
    const signedUrlExpireSeconds = 60 * 5;
    
    const params = { Bucket: 'string-bucket' };
    s3.headBucket(params, function(err, data) {
      if (err) console.log('there is an error!!!!', err, err.stack);
      else     console.log('this is what i got', data);
    });
    
    const url = s3.getSignedUrl('getObject', {
      Bucket: myBucket,
      Key: myKey,
      Expires: signedUrlExpireSeconds
    });
    
    console.log(url);
    

    首先它记录了url: https://s3.amazonaws.com/ ,就这个,没有任何附加条件,因为桶上写着 CredentialsError: Missing credentials in config .

    我看不出我丢失了什么,它们的钥匙是正确的(我复制并粘贴了它们)

    1 回复  |  直到 6 年前
        1
  •  0
  •   MaiKaY    6 年前

    问题是您正在更新aws配置 之后 您初始化了s3 sdk。把下面的片段放在上面 const s3 = new AWS.S3(); :

    AWS.config.update({
      accessKeyId: 'string',
      secretAccessKey: 'string',
      region: 'string'
    });
    

    最后你应该有这样的东西:

    const AWS = require('aws-sdk');
    AWS.config.update({
      accessKeyId: 'string',
      secretAccessKey: 'string',
      region: 'string'
    });
    const s3 = new AWS.S3();