Amazon s3 在S3中的lambda函数中上载图像后更改图像的权限

Amazon s3 在S3中的lambda函数中上载图像后更改图像的权限,amazon-s3,aws-lambda,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) {

可能吗?在我上传图像后,它没有权限。我认为它应该能够将
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,
上传数据时出错:{AccessDenied:访问被拒绝
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)
在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
应请求。(/var/runtime/node_modules/aws sdk/lib/Request.js:38:9)
应请求。(/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)
消息:“访问被拒绝”,
代码:“访问被拒绝”,
区域:空,
时间:2017-05-17T11:16:29.747Z,

bucket本身拥有所有权限。

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

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

谢谢,但我发现了问题。我不知道我必须在策略中添加“S3:PutObjectAcl”。谢谢,但我发现了问题。我不知道我必须添加“S3:PutObjectAcl”加入到政策中。