tanacasinoのメモ

what are you waiting for ?

node.js AWS SDK for JavaScript で http proxy経由のリクエストを発行する方法

忘れそうなのでメモしておく。忘れても良さそうな気はしているけれど。

意外とググっても見つからない。グーグル力が足りない。

概要

AWS SDK for JavaScriptnpm install aws-sdkでインストールできる。 社内LAN等のhttp proxyを経由させる場合は、tunnelライブラリを用いて aws-sdkagentに仕込みを入れればOK。

セットアップ

事前準備は以下のとおり。実施済みであること。

  1. node.jsインストールされていること
  2. node, npmコマンドが実行できること

準備できたら以下のように aws-sdktunnelをインストールした環境を作る

# 適当にワーキングディレクトリ作ってください
$ mkdir node-aws-example
$ cd node-aws-example
$ npm install tunnel aws-sdk

コード例

AWSのconfigに httpOptions.agentを仕込む。 仕込むためのagentは、tunnelさんの力を借りる。 proxyAuthユーザ名:パスワード は、不要な場合はなくてもよい。

var AWS = require('aws-sdk')
   ,tunnel = require('tunnel');

AWS.config.loadFromPath('./config.json');

var tunAgent = tunnel.httpsOverHttp({
  proxy: {  // your proxy server infomation
    host: "localhost",
    port: 8888,
    proxyAuth: "user:password"
  }
})

AWS.config.update({httpOptions: { agent: tunAgent }})

var s3 = new AWS.S3();

s3.listBuckets(function(err, data) {
    if (err) {
      console.log(err, err.stack);
    } else {
      console.log(data);
    }
});

まとめ

サンプルコードは以下にまとめた。