MFA設定時のAWS SDK for JavaScriptのチュートリアル

awsのドキュメント通りでやると以下のようなエラーが出て困った.

  message: 'The specified bucket does not exist',
  code: 'NoSuchBucket',

エラーがわかりにくいが、これはpermission errorで、単純に管理者から権限を与えられてないかMFA設定してるため、apiアクセスがドキュメントにあるaccessKeyIdとsecretAccessKeyだけだとできない設定になっている場合などが考えられる.

例えばMFAが設定されている場合はsessionTokenも渡してあげる必要がある.まずはsession tokenを取得する必要があるがそれはawsのtutorialにわかりやすく解説されているので省略する(動画を見ると早い). 

session tokenを取得したら,configuration.jsonを作成しaws-nodejs-sampleに書かれたコードを以下のように修正し、globalなconfigをconfig.loadFromPathを使ってlocalなconfigで上書きすると便利だ.

{
        "accessKeyId": "xxxxxxxxxx",
        "secretAccessKey": "xxxxxxxxxx",
        "sessionToken": "xxxxxxxxxx"
}
// Load the SDK and UUID
var AWS = require('aws-sdk');
AWS.config.loadFromPath('configuration.json')
var uuid = require('node-uuid');

// Create an S3 client
var s3 = new AWS.S3();

// Create a bucket and upload something into it
var bucketName = 'node-sdk-sample-' + uuid.v4();
var keyName = 'hello_world.txt';

s3.createBucket({Bucket: bucketName}, function() {
  var params = {Bucket: bucketName, Key: keyName, Body: 'Hello World!'};
  s3.putObject(params, function(err, data) {
    if (err)
      console.log(err)
    else
      console.log("Successfully uploaded data to " + bucketName + "/" + keyName);
  });
});


この記事が気に入ったらサポートをしてみませんか?