在S3中的lambda函数中上传图像后更改图像的权限

时间:2017-05-17 11:22:47

标签: amazon-s3 aws-lambda

有可能吗?我上传图片后没有权限。我认为应该将ACL: 'public-read'放在数据中。 这是我的代码:

var data = {ACL: 'public-read', Bucket: 's3.bucket', Key: 'latest.png', Body: result.Body, ContentLength: result.ContentLength};

s3.putObject(data, function(err, output_data) {
   if (err) {
              console.log('Error uploading data: ', err); 
            }
            else {
             console.log('succesfully uploaded the image!');
            }
  });

但是我收到了这个错误:

Error uploading data:  { AccessDenied: Access Denied
    at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:539:35)
    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:673:14)
    at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
    at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
    at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:675:12)
    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
  message: 'Access Denied',
  code: 'AccessDenied',
  region: null,
  time: 2017-05-17T11:16:29.747Z,

存储桶本身具有所有权限。

1 个答案:

答案 0 :(得分:2)

您的错误显示region:null。 S3具有唯一的全局端点,但它会将您的数据保存在某个特定位置,并且您必须在将内容上载到s3存储桶时提供区域。