Skip to content

Releases: aws/aws-sdk-js-v3

v3.4.1

29 Jan 23:02
Compare
Choose a tag to compare

3.4.1 (2021-01-29)

Chores
  • merge remote-tracking branch 'origin/master' into master (df957082)
New Features
  • use git-sync action to sync with private mirror (#1965) (10ab6a1d)
Bug Fixes

Updated packages:

Read more

v3.4.0

29 Jan 01:13
Compare
Choose a tag to compare

3.4.0 (2021-01-29)

Chores
Documentation Changes
  • credential-provider-imds:
New Features
  • util-dynamodb: add option to convert class instance to map (#1969) (1783c690)
  • middleware-stack: allow adding middleware to override an existing one (#1964) (9c21f144)
  • use downlevel-dts to generate TS 3.4 compatible types (#1943) (63ad2151)
  • run prettier in parallel in generate-clients (#1949) (878617a9)
Bug Fixes
  • allow packages/types in gitignore (#1942) (b4b6fad2)
  • credential-provider-cognito-identity: remove duplicate declarationDir (#1944) (d75488a7)
  • generate-clients: call mergeManifest when constructor.name is Object (#1937) (601c03bb)

Updated packages:

Read more

v3.3.0

15 Jan 02:05
Compare
Choose a tag to compare

3.3.0 (2021-01-15)

Chores
  • clients: update yarn lock with types from @aws-crypto (#1914) (f41e199b)
New Features
  • clients: update README with documentation, usage and more (#1907) (03be111a)
Bug Fixes
  • util-waiters: waiters should call operation once before entering waiting (#1915) (2a6ac11c)
  • url-parser: merge browser and node url parser, add rn url parser (#1903) (99be092f)
  • clients:
Tests

Updated packages:

Read more

v3.2.0

09 Jan 03:25
Compare
Choose a tag to compare

3.2.0 (2021-01-08)

Chores
Documentation Changes
New Features
  • use lock-threads GH action for inactive issues/PRs (#1881) (fc226825)
  • util-dynamodb: enable undefined values removal in marshall (#1840) (314d3b37)
Bug Fixes
Tests

Updated packages:

Read more

v3.1.0

24 Dec 00:44
Compare
Choose a tag to compare

3.1.0 (2020-12-24)

Chores
  • clients:
    • retain structure members' iteration order (#1838) (aa396a00)
    • remove clientName and commandName logging from Command (#1787) (04d9cf26)
  • docs: use bug and needs-triage labels (#1818) (dd04fa37)
  • deps: [security] bump node-notifier from 8.0.0 to 8.0.1 (#1815) (d4cb977c)
  • remove httpHeaders from metadata (#1811) (960c89e2)
Documentation Changes
New Features
  • credential-provider-node: use credential_process from profile (#1773) (842e2a01)
  • standardize user agent value (#1775) (388b1807)
  • cucumber: use waiters in integration tests (#1792) (e151aee1)
  • middleware-logger: log clientName, commandName, input, output (#1788) (4f9e56f1)
Bug Fixes
  • clients:
  • util-waiter: fix compiling error with waiter (#1812) (ca1f0d6f)
  • middleware-user-agent: add middleware to final step of build (#1833) (e7dce39e)
  • codegen: strip names from enums (#1837) (0711503c)
  • log requestId, extendedRequestId, cfId in $metadata (#1819) (f2a47e80)
  • lib-storage: cleanup stream listeners to prevent memory leak (3d366825)
  • signature-v4: add secrets to signing key cache key (#1776) (8785ad47)

Updated packages:

Read more

v3.0.0

15 Dec 23:07
Compare
Choose a tag to compare

3.0.0 (2020-12-15)

What’s New

Modular Packages

AWS SDK for Javascript v2 publishes a single npm package that supports all the AWS services. This makes it easy to use multiple services in a project at the cost of a large dependency when only using a handful of services or operations. In resource constrained environment such as mobile devices, having separate packages for each service client allows optimizing the dependency. The AWS SDK for Javascript v3 provides such modular packages. We have also split up the core parts of the SDK so that service clients only pull in what they need. For example, a service that sends responses in JSON will no longer need to also have an XML parser as a dependency.

Here’s a quick example comparing v2 and v3 of the AWS SDK for Javascript. In v2, the S3 client can be created using single monolithic package:

const AWS = require("aws-sdk");

const s3Client = new AWS.S3({});
await s3Client.createBucket(params);

In v3, the service clients are prefixed with client- followed by service name. So you can create the modular S3 client by importing @aws-sdk/client-s3:

const { S3 } = require("@aws-sdk/client-s3");

const s3Client = new S3({});
await s3Client.createBucket(params);

The blog post on modular packages in AWS SDK for JavaScript provides details on other modular packages in the SDK and shows an example of performance improvement due to bundle size reduction.

Middleware Stack

Version 2 of the SDK allows modifying a request throughout multiple stages of a request’s lifecycle by attaching event listeners to a request. It can be difficult to debug what went wrong during a request’s lifecycle using event listeners.

In version 3, we’ve switched to using a middleware stack to control the lifecycle of an operation call. This gives us several benefits: each middleware in the stack calls the next middleware after making any changes to the request object. This makes debugging issues in the stack much easier since you can see exactly which middleware was called leading up to an error.

Here’s an example of adding a custom header using middleware:

const { S3 } = require("@aws-sdk/client-s3");
const client = new S3({ region: "us-west-2" });`

client.middlewareStack.add(
  (next, context) => async (args) => {
    args.request.headers["x-amz-meta-foo"] = "bar";
    const result = next(args);
    // result.response contains data returned from next middleware.
    return result;
  },
  {
    step: "build",
    name: "addFooMetadataMiddleware",
    tags: ["METADATA", "FOO"],
  }
);

await client.putObject(params);

The blog post on Middleware Stack in Modular AWS SDK for JavaScript does a deep dive on writing middleware and plugins.

First-class TypeScript support

Version 2 of the SDK is written in vanilla JavaScript. Typescript definition files were added in late 2016, when our customers requested type support after Angular 2 started recommending TypeScript as a primary language for application development. The internal components of the SDK are still written in vanilla JavaScript, and type definitions can go out of date.

The TypeScript programming language extends JavaScript by adding types, and saves you time catching errors and providing fixes before you run your code. We used TypeScript in the JavaScript SDK to benefit from its static type definitions, latest ECMAScript features, IDE support like Intellisense and improved documentation support. The blog post on first-class TypeScript support covers the benefits of TypeScript in the SDK in detail. Although the SDK is written in TypeScript, you can use vanilla JavaScript in your code.

Additional features

We also added many other features, which we are planning to cover in detail in future blog posts:

  • New retry behavior with congestion control to accommodate throttling responses, and retry quotas to limit the number of failed retries.
  • Pagination using async generators.
  • Extensive logging support to record API input/output and corresponding metadata.
  • Utility functions to operate with JavaScript objects in DynamoDB.
  • Higher order operation for multipart upload.
  • Bi-directional transcribe streaming over WebSockets.
  • Support for HTTP/2.
  • AbortController interface to abort requests as and when desired.
  • Keep Node.js HTTP connections alive by default.

Platform Support

The modular AWS SDK for JavaScript officially supports Node.js, browser and React Native environments.

Minimum supported version for Node.js is 10.x

On December 31st, 2019 Node.js 8.x reached End of Life (EOL). We have therefore updated the minimum requirements for AWS SDK for JavaScript version 3 to Node.js 10.x. If you are currently using earlier versions of Node.js, please upgrade and refer to the Node.js 10.x release announcement for notable changes.

Minimum supported version for browsers is ECMAScript version 5 (ES5)

We continue to support ECMAScript version 5 (ES5) on browsers, including these minimum versions.

Browser Version
Internet Explorer 10+
Microsoft Edge 12+
Mozilla Firefox 21+
Google Chrome 23+
Apple Safari 6+
Opera 15+
Android browser 4.4+

Minimum supported version for React Native is 0.59.0

The React Native support in the SDK is added to assist AWS Amplify – a high level library built on top of the SDK. We support React Native versions 0.59.0 and above.

What’s missing in v3

The following features are not available in version 3 yet, we are working to add support for them::

Further reading

To get started with JavaScript SDK version 3, visit our Developer Guide or API Reference.

You can also visit our self-guided workshop, which builds a simple note taking application using JavaScript SDK version 2 and provides step-by-step migration instructions to version 3.

To test your universal JavaScript code in Node.js, browser and react-native environments, visit our code samples repo.

Updated packages:

Read more

v1.0.0-rc.10

15 Dec 03:05
Compare
Choose a tag to compare

1.0.0-rc.10 (2020-12-15)

Chores
  • protocol_tests: updates for latest protocol tests (#1770) (e22d9ef7)
New Features
Bug Fixes

Updated packages:

Read more

v1.0.0-rc.9

12 Dec 00:13
Compare
Choose a tag to compare

1.0.0-rc.9 (2020-12-12)

Chores
  • url-parser-node: use WHATWG URL instead of url.parse (#1766) (7e7feb16)
  • deps:
    • [security] bump ini from 1.3.5 to 1.3.7 (#1762) (bfbc78b3)
    • [security] bump highlight.js from 10.4.0 to 10.4.1 (#1743) (56c36395)
  • deps-dev:
  • merge remote-tracking branch 'origin/master' into master (fab1c1f3)
New Features
Bug Fixes
  • shared-ini-file-loader: ignore prohibited profile name (#1764) (a209082d)
  • codegen: import SENSITIVE_STRING only when used (#1761) (92962836)
  • middleware-sdk-sqs: call next() exactly once in sendMessageMiddleware (#1752) (dc63e375)

Updated packages:

Read more

v1.0.0-rc.8

05 Dec 01:38
Compare
Choose a tag to compare

1.0.0-rc.8 (2020-12-05)

Chores
Documentation Changes
New Features
Bug Fixes
  • codegen: checkstyle errors in AddBuiltinPlugins.java (#1731) (48c02f48)
  • client-s3: fix union serialization (#1730) (6437e242)
  • client-sts: disable auth for public assumeRole commands (#1706) (891eae20)
  • s3-request-presigner: skip hoisting SSE headers (#1701) (1ec70ff0)
  • middleware-sdk-sqs: Fix MD5 verification on SendMessageBatch. (#1666) (049f45e4)
Tests
  • client-iam: check for IAM.getUser instead of listUsers (#1710) (4e02fbd9)
  • client-cloudwatch-logs: pass logGroupNamePrefix in describeLogGroups (#1708) (2fe5d142)

Updated packages:

Read more

v1.0.0-rc.7

20 Nov 01:13
Compare
Choose a tag to compare

1.0.0-rc.7 (2020-11-20)

Chores
  • service-error-classification: alphabetically order THROTTLING_ERROR_CODES (#1689) (75cd258f)
New Features
  • update clients as of 11/18/2020 (#1700) (8adfed16)
  • api-reference: add typedoc plugins for api reference (#1694) (2cb016f2)
  • node-http-handler: update timeout code and tests (#1691) (9e58bbb9)
  • service-error-classification: add 429 response as Throttling (#1690) (9a62c0a1)
  • ci: add GitHub Action to test codegen (#1684) (41e9359f)
Bug Fixes
  • fetch-http-handler: omit body for HEAD/GET methods (#1698) (778b3051)
  • abort-controller: make AbortSignal WHATWG Spec compliant (#1699) (723ec4df)
  • node-http-handler: throw TimeoutError for Node.js timeouts (#1693) (96f61bbe)
  • change paginators to export paginateOperationName (#1692) (6d029356)
  • codegen: add aws-iam-traits dependency (#1686) (d6fb1f61)

Updated packages:

Read more