node.js AWS SDK for JavaScript で http proxy経由のリクエストを発行する方法
忘れそうなのでメモしておく。忘れても良さそうな気はしているけれど。
意外とググっても見つからない。グーグル力が足りない。
概要
AWS SDK for JavaScript は npm install aws-sdk
でインストールできる。
社内LAN等のhttp proxyを経由させる場合は、tunnel
ライブラリを用いて aws-sdk
の agent
に仕込みを入れればOK。
セットアップ
事前準備は以下のとおり。実施済みであること。
- node.jsインストールされていること
- node, npmコマンドが実行できること
準備できたら以下のように aws-sdk
とtunnel
をインストールした環境を作る
# 適当にワーキングディレクトリ作ってください $ 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); } });
まとめ
サンプルコードは以下にまとめた。