node.js でS3からイメージファイルを取得したいが、s3.getObject で Forbidden 403 のエラーになる。
S3 にアップロードはできるのですが、node.jsで書いたサーバコードがgetObjectしてS3からファイルを取得しようと思ってるのですが403 Forbiddenエラーになります。
やりたいことはS3にアップロードした写真を読み込んで画面表示させたいのですが、肝心のS3からの画像の取得がうまくいきません。どなたかご教授願えたらと思っています。
どうぞよろしくお願いします。
getImage: function(req, res) {
var fileName = req.param('filename');
sails.log.info('fileName = ' + fileName);
var s3 = new AWS.S3({
region: 'ap-northeast-1'
});
var s3Params = {
Bucket: コンスタントから取得したバケット名,
Key: fileName
};
s3.getObject(s3Params, function (err, data) {
if (err === null) {
sails.log.info('ok!');
res.send(data.Body);
} else {
sails.log.error('err = ' + err.message);
res.status(500).send(err);
}
});
},
S3のバケットポリシーは以下のように指定しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReading",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxxxxxxxxx:user/myusername"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::bucketName",
"arn:aws:s3:::bucketName/*"
]
}
]
}