UNPKG

aws-sdk-v3-proxy

Version:

A wrapper for adding proxy support to AWS SDK v3 clients

179 lines (123 loc) 5.2 kB
# AWS SDK v3 Proxy [![npm package][npm-img]][npm-url] [![Build Status][build-img]][build-url] [![Downloads][downloads-img]][downloads-url] [![Issues][issues-img]][issues-url] [![Code Coverage][codecov-img]][codecov-url] [![Commitizen Friendly][commitizen-img]][commitizen-url] [![Semantic Release][semantic-release-img]][semantic-release-url] > A wrapper for adding proxy support to [AWS SDK v3](https://github.com/aws/aws-sdk-js-v3) clients This wrapper adds a proxy configuration to AWS SDK clients by checking environment variables and attaching the necessary request handler. By default, an error will be thrown if no proxy is found in `process.env`, but also has options to not throw which can be useful when developing other node utilities using this library. **Note:** `http_proxy` and `HTTP_PROXY` take precedence over `https_proxy` and `HTTPS_PROXY`. If you would like to change this behavior it can be specified in the [options](#options). ## Install ```bash npm install aws-sdk-v3-proxy ``` ## Usage ### HTTP Proxy ```ts // process.env.HTTP_PROXY = 'http://127.0.0.1' import { S3Client } from '@aws-sdk/client-s3'; import { addProxyToClient } from 'aws-sdk-v3-proxy'; const client = addProxyToClient(new S3Client({})); // `client` now has HTTP proxy config at 'http://127.0.0.1' ``` or ```ts import { S3Client } from '@aws-sdk/client-s3'; import { addProxyToClient } from 'aws-sdk-v3-proxy'; const client = addProxyToClient(new S3Client({}), { httpProxy: 'http://127.0.0.1', }); // `client` now has HTTP proxy config at 'http://127.0.0.1' ``` ### HTTPS Proxy ```ts // process.env.HTTPS_PROXY = 'https://127.0.0.1' import { S3Client } from '@aws-sdk/client-s3'; import { addProxyToClient } from 'aws-sdk-v3-proxy'; const client = addProxyToClient(new S3Client({})); // `client` now has HTTPS proxy config at 'https://127.0.0.1' ``` or ```ts import { S3Client } from '@aws-sdk/client-s3'; import { addProxyToClient } from 'aws-sdk-v3-proxy'; const client = addProxyToClient(new S3Client({}), { httpsProxy: 'https://127.0.0.1', }); // `client` now has HTTPS proxy config at 'https://127.0.0.1' ``` ### No Proxy with exception disabled ```ts // process.env.HTTPS_PROXY = undefined // process.env.HTTP_PROXY = undefined import { S3Client } from '@aws-sdk/client-s3'; import { addProxyToClient } from 'aws-sdk-v3-proxy'; const client = addProxyToClient(new S3Client({}), { throwOnNoProxy: false }); // `client` has no proxy assigned and no error thrown ``` ### Proxy with certs in header ```ts // process.env.HTTPS_PROXY = 'https://127.0.0.1' import { readFileSync } from 'fs'; import { S3Client } from '@aws-sdk/client-s3'; import { addProxyToClient } from 'aws-sdk-v3-proxy'; const client = addProxyToClient(new S3Client({}), { agentOptions: { ca: [readFileSync('custom-proxy-cert.pem').toString()], }, }); // `client` now has HTTPS proxy config at 'https://127.0.0.1' with ca `custom-proxy-cert.pem` ``` ## API ### addProxyToClient(client, options?) #### client Type: `Object` Any client from [@aws-sdk](https://github.com/aws/aws-sdk-js-v3). #### options Type: `object` ##### throwOnNoProxy Type: `boolean` Default: `true` Throw an error if no proxy is found in the environment. ##### httpsOnly Type: `boolean` Default: `false` Can be specified in cases where you have both http_proxy and https_proxy set, and would like to override the default behavior of the http_proxy taking precedence. ##### debug Type: `boolean` Default: `false` Toggles additional logging for debugging. ##### httpProxy Type: `string` The URL for the HTTP proxy server. If not specified, the value of `process.env.http_proxy` or `process.env.HTTP_RPOXY` will be used. ##### httpsProxy The URL for the HTTPS proxy server. If not specified, the value of `process.env.https_proxy` or `process.env.HTTPS_RPOXY` will be used. ##### agentOptions Type: `HttpsProxyAgentOptions` Used to pass specific options to the proxy agent. ## Security See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. ## License This project is licensed under the Apache-2.0 License. [build-img]: https://github.com/awslabs/aws-sdk-v3-js-proxy/actions/workflows/release.yml/badge.svg [build-url]: https://github.com/awslabs/aws-sdk-v3-js-proxy/actions/workflows/release.yml [downloads-img]: https://img.shields.io/npm/dt/aws-sdk-v3-proxy [downloads-url]: https://www.npmtrends.com/aws-sdk-v3-proxy [npm-img]: https://img.shields.io/npm/v/aws-sdk-v3-proxy [npm-url]: https://www.npmjs.com/package/aws-sdk-v3-proxy [issues-img]: https://img.shields.io/github/issues/awslabs/aws-sdk-v3-js-proxy [issues-url]: https://github.com/awslabs/aws-sdk-v3-js-proxy/issues [codecov-img]: https://codecov.io/gh/awslabs/aws-sdk-v3-js-proxy/branch/main/graph/badge.svg [codecov-url]: https://codecov.io/gh/awslabs/aws-sdk-v3-js-proxy [semantic-release-img]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg [semantic-release-url]: https://github.com/semantic-release/semantic-release [commitizen-img]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg [commitizen-url]: http://commitizen.github.io/cz-cli/