Node.js s3通过获取元数据检查文件是否存在

Node.js s3通过获取元数据检查文件是否存在,node.js,amazon-web-services,amazon-s3,Node.js,Amazon Web Services,Amazon S3,我试图使用AWS javascript sdk检查文件是否存在于s3存储桶中。 我已将我的策略定义为允许我的s3 bucket使用HeadBucket { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:HeadBucket",

我试图使用AWS javascript sdk检查文件是否存在于
s3
存储桶中。 我已将我的策略定义为允许我的s3 bucket使用
HeadBucket

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:HeadBucket",
            "Resource": "*"
        }
    ]
}
我已将上述策略附加到一个用户,我正在使用该用户设置
s3
的配置,如下所示:

var AWS = require('aws-sdk');
var s3Config = require("../data/aws-config.json").user1;
AWS.config.update(s3Config); 
var s3 = new AWS.S3;

var params = {
    Bucket: "my-bucket",
    Key: "mykey.PNG"
};
s3.headObject(params, function (err, metadata) {
    console.log(err);   
});
aws config.json

{
    "user1": {
        "bucket": "my-bucket",
        "region": "us-east-2",
        "accessKey": "********",
        "secretKey": "*********"
    }
}
在我的
node.js
code中,我试图使用
headObject
获取对象的元数据,如下所示:

var AWS = require('aws-sdk');
var s3Config = require("../data/aws-config.json").user1;
AWS.config.update(s3Config); 
var s3 = new AWS.S3;

var params = {
    Bucket: "my-bucket",
    Key: "mykey.PNG"
};
s3.headObject(params, function (err, metadata) {
    console.log(err);   
});
这是给我的
403禁止
错误。我尝试了一切,从更改AWS策略到允许所有
s3
操作,再到允许访问所有资源,似乎都不起作用

编辑


我检查了
AWS.config.credentials
,它正在加载一些随机accessKey和secretKey,而不是从我的配置文件加载。我不知道为什么会发生这种情况。

您正试图
引导对象。没有IAM策略授予的
HEAD
bucket操作

要对对象执行
HEAD
操作,您需要
s3:GetObject
权限

有关更多信息,请参阅