まくろぐ

AWS SDK for Node.js でプロキシ環境変数 (https_proxy) を反映させる

更新:
作成:

AWS SDK for Node.js のプロキシ設定

社内のプロキシ環境下などから AWS SDK (for Node.js) を使って API 呼び出しを行うには、次のようにプロキシエージェント設定を行います。 ここでは、AWS SDK version 2 の設定例を示しています。

プロキシ設定の例 (AWS SDK v2)
import * as AWS from 'aws-sdk';
import { HttpsProxyAgent } from 'https-proxy-agent';

AWS.config.update({
  httpOptions: {
    agent: new HttpsProxyAgent('http://proxy.example.com:8080')
  }
});

これで、それ以降の AWS サービス (AWS.S3 など)の API 呼び出しがプロキシ経由で行われるようになります。

環境変数 https_proxy の設定を使用する

次のようにすれば、環境変数 https_proxy に設定されたプロキシアドレスを、AWS SDK にも反映させることができます(といっても、process.env.https_proxy を参照しているだけです)。

import * as AWS from 'aws-sdk';
import { HttpsProxyAgent } from 'https-proxy-agent';

// プロキシ設定を反映
function setupAwsProxy() {
  const proxy = process.env.https_proxy;
  if (proxy) {
    AWS.config.update({
      httpOptions: { agent: new HttpsProxyAgent(proxy) },
    });
  }
}

あとは、AWS の各種サービス用の API を使用するだけです。

async function putObjectToBucket() {
  setupAwsProxy();  // 環境変数のプロキシ設定を反映

  const s3 = new AWS.S3();
  try {
    const output = await s3.putObject({
      Bucket: 'my-s3-bucket-name',
      Key: 'key-1',
      Body: 'body-1'
    }).promise();
    console.log('SUCCESS - Object added:', output);
  } catch (err) {
    console.error('ERROR:', err);
  }
}

putObjectToBucket();

関連記事

まくろぐ
サイトマップまくへのメッセージ