AWS-CLI调用HeadObject操作时发生错误(403):禁止

时间:2017-11-24 09:19:42

标签: node.js bash amazon-s3 amazon-ec2 aws-cli

我托管了一个nodejs Server AWS EC2实例。我的目的是从我的AWS S3私有桶下载(复制)一个zip文件(请注意我需要S3 repo才能私有访问)。对于我的业务需求,我必须在nodejs中使用shell命令(aws-cli)从S3 Bucket复制zip文件。

var executeShellCommand = require('child_process').exec,child;

executeShellCommand("aws s3 cp s3://<BUCKET_NAME>/<ZIP_FILE_KEY>",
function (error, stdout, stderr){
if(error){
console.log(error);
}else{
console.log("ZIP file downloaded successfully");
}
});

当shell命令尝试执行时,我收到以下错误:

{ Error: Command failed: aws s3 cp s3://<BUCKET_NAME>/<ZIP_FILE_KEY> .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

    at ChildProcess.exithandler (child_process.js:204:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:891:16)
    at Process.ChildProcess._handle.onexit     (internal/child_process.js:226:5)
  killed: false,
  code: 1,
  signal: null,
  cmd: 'aws s3 cp s3://<BUCKET_NAME>/<ZIP_FILE_KEY> .' }

当我尝试在EC2实例命令行中运行cp命令时,它正在运行,文件也被下载了。此外,我发现bash命令应该知道 aws_access_key_id aws_secret_access_key 凭据以访问私有S3。如果我错了,请纠正我。

我缺少什么配置才能通过nodejs使aws cp成功?

0 个答案:

没有答案