Help us understand the problem. What is going on with this article?

Node.js で AWSを操作する環境を作る(Mac)

More than 5 years have passed since last update.

Lambdaも出たことだし、node.jsもやってみようということで環境構築します。

1. Nodeのインストール

http://qiita.com/ryosy383/items/2ea9c92a792302b159b0

これみてやる。

$ brew update
$ brew install nodebrew
$ nodebrew install latest (データダウンロードとコンパイルに超時間かかる…)

$ nodebrew list
v0.12.2

current: none


$ nodebrew use v0.12.2

$ echo 'export PATH=$PATH:/Users/ユーザー名/.nodebrew/current/bin' >> ~/.bashrc

nodebrew使うと時間かかるので、サクッと試したいだけなら、 nodebrewではなく、brew installでいいかもしんない。

$ brew install node

2. AWS SDKのインストール

インストールするパッケージの定義作成 (package.json)

cat << EOT > package.json
{
    "dependencies": {
        "aws-sdk": ">= 2.0.9",
        "node-uuid": ">= 1.4.1"
    }
}
EOT

インストール

$ npm install

npm WARN package.json @ No description
npm WARN package.json @ No repository field.
npm WARN package.json @ No README data
node-uuid@1.4.3 node_modules/node-uuid

aws-sdk@2.1.23 node_modules/aws-sdk
├── xmlbuilder@0.4.2
├── xml2js@0.2.8
└── sax@0.5.3

3. サンプルを見てみる

下記にサンプルがあるので見てみる。

http://aws.amazon.com/jp/developers/getting-started/nodejs/

$ git clone https://github.com/awslabs/aws-nodejs-sample.git
$ cd aws-nodejs-sample
$ cat sample.js
// Load the SDK and UUID
var AWS = require('aws-sdk');
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);
  });
});

S3にバケット作ってファイル上げる例ですね。

実行すると、下記のような感じでUUID付きの長いバケットが作られてその中にhello_world.txt が置かれるようです。

$ node sample.js
Successfully uploaded data to node-sdk-sample-a0038ade-1189-45be-84ca-c19ff5685644/hello_world.txt

確認してみる。

$ aws s3 ls s3://node-sdk-sample-a0038ade-1189-45be-84ca-c19ff5685644/

2015-04-14 20:45:43         12 hello_world.txt

4. APIリファレンスで学ぶ

それぞれのサービス(S3とかDynamoDBとか)の操作方法は下記リファレンスを見てみる。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/index.html

5. 試しにDynamoDB

$ vim dynamodb.js
var AWS = require('aws-sdk');

var dynamodb = new AWS.DynamoDB({region: 'ap-northeast-1'});

// テーブルリストを取得する

var params = {
    ExclusiveStartTableName: 'STRING_VALUE',
    Limit: 10
};

dynamodb.listTables(params, function(err, data) {
    if (err) {
        console.log(err, err.stack); // an error occurred
    } else {
        console.log(data);           // successful response
    }
});
$ node dynamodb.js

{ LastEvaluatedTableName: 'test9',
  TableNames:
   [ 'test1',
     'test2',
      :
      :
     'test9' ] }

とりあえずテーブル一覧取り出せた。なんとかなりそう。

開発環境構築

ローカルの開発環境として、WebStromを入れて、下記の設定をした。

WebStorm の Node.js 開発環境を構築する

すごくまとまってて良い記事。

mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away