1. ホーム
  2. node.js

[解決済み] AWS s3 api error: specified bucket does not exist.

2022-01-28 05:13:20

質問

node AWS SDKを使用して、画像をs3に保存しています。バケットが存在し、正しいパーミッションがあるにもかかわらず、以下のエラーが出続けます。

{ [NoSuchBucket: The specified bucket does not exist]
  message: 'The specified bucket does not exist',
  code: 'NoSuchBucket',
  time: Tue Oct 21 2014 12:32:50 GMT-0400 (EDT),
  statusCode: 404,
  retryable: false }

私のnodejsのコードです。

var fs = require('fs');

var AWS = require('aws-sdk'); //AWS library (used to provide temp credectials to a front end user)
AWS.config.loadFromPath('./AWS_credentials.json'); //load aws credentials from the     authentication text file



var s3 = new AWS.S3();

fs.readFile(__dirname + '/image.jpg', function(err, data) {

var params = {
    Bucket: 'https://s3.amazonaws.com/siv.io',
    Key: 'something',
};

s3.putObject(params, function(err, data) {

    if (err) {

        console.log(err);

    } else {
        console.log("Successfully uploaded data to myBucket/myKey");
    }
});
});

バケット名は siv.io.s3-website-us-east-1.amazonaws.com も試しています。どなたか、何が間違っているのか教えていただけませんか?必要であれば、もっと情報を提供できます。

解決方法は?

バケットがまだ存在しないというエラーです。あなたのコードを見たところ、バケット名が正しくないので、ファイルが見つからないのでしょう。以下のどちらかを実行してください。 createBucket() またはAWSコンソールでバケットを作成してください。

APIコールだけでなく、ファイルを追加する場合もあります。を確認してください。 AWS API ドキュメント をクリックすると、どこに何を書けばいいのかがわかります。彼らのドキュメントは本当に素晴らしいです。

以下は、私の場合です。

    var stream = fs.createReadStream( 'path/to/file' );
    stream.on( 'error', function( error ) {
      seriesCb( error );
    } );
    //TODO: Other useful options here would be MD5 hash in the `ContentMD5` field,
    s3.putObject( {
      "Bucket": 'siv.io',
      "Key": 'name_of/new_file',
      "ContentType": "application/pdf", //might not apply to you
      "Body": stream
    }, function( s3err, s3results ) {
      if ( s3err ) return console.log('Bad stuff. ' + s3err.toString() );
      console.log( "Saved to S3. uri:" + s3uri);
    } );