Node.js s3通过获取元数据检查文件是否存在
我试图使用AWS javascript sdk检查文件是否存在于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",
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
权限
有关更多信息,请参阅