

S3 にアップロードはできるのですが、node.jsで書いたサーバコードがgetObjectしてS3からファイルを取得しようと思ってるのですが403
Forbiddenエラーになります。

やりたいことはS3にアップロードした写真を読み込んで画面表示させたいのですが、肝心のS３からの画像の取得がうまくいきません。どなたかご教授願えたらと思っています。  
どうぞよろしくお願いします。

[code]

    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);
            }
        });
    },
    
[/code]

S3のバケットポリシーは以下のように指定しています。

[code]

    {
        "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/*"
                ]
            }
        ]
    }
    
[/code]


CC BY-SA 3.0
2015-08-09T05:18:21.520
14200
2017-11-25T00:55:54.617
9611
question
javascript node.js aws amazon-s3
node.js でS3からイメージファイルを取得したいが、s3.getObject で　Forbidden 403 のエラーになる。


403 Forbiddenということは権限がないということなのでS3側で画像ファイルの設定を公開にしないと行けないかと思います。  
S3での設定を一度ご確認してみるのがいいかと思います。

<https://ja.wikipedia.org/wiki/HTTP_403>


CC BY-SA 3.0
2017-08-29T01:20:19.960
37553
2017-08-29T01:20:19.960
7585
14200
answer