Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
    David Pfeffer
    Hello all, hopefully this is something stupidly simple that I'm just not understanding. I am using a pretty vanilla instantiation of the SNS client, but when I tell it to publish a message, it tries to connect to localhost:443. It does this regardless of whether or not I specify an endpoint at construction.
    David Pfeffer
    Solved it, I was using a much older release of the library (alpha.x, not gamma.x) and there was a bug. Its now been fixed.
    Oliver Salzburg
    Where is the documentation for the v3 SDK?
    Hi, I was trying the new gamma-10 release, and was trying to use the function ec2.modifyTransitGateway(params, function(err, data) mentioned in the SDK documentation. However, seems that function do not exist in the V3 SDK. Does anyone know if it was replaced by something else?
    Robert Wawrzyniak

    Hi everyone,
    I was thinking it might be better to ask this question here first, before opening an issue. Checking out the current gamma release there is a lot to like in the v3 SDK, however when trying it out I was left a bit disappointed by the proposed new API. It doesn't feel like an API designed for node... yet there is no description in the README or the issues giving insight into the design.
    I'm not sure if this is just my personal biases regarding API design talking though. Hence this long question here:
    Why is the "modular" API designed as a pattern of const c = new Client() and c.send(new Command())? I would have anticipated an API more in line with patterns in other libraries like const result = await command(options, client()), that way we could easily curry SDK-functions with project-specific configuration etc.
    Please ignore my non-usage of new this question is really not about "why classes".
    The current API feels very much like it is wrapping a set of RPC endpoints... which is absolutely fine, but wouldn't it be preferable to more closely align with other projects in this space.

    On a related note:
    Maybe the SDK could ship with a babel plugin or macro to rewrite the "enhanced v2" syntax to the "modular" one? The v2 syntax in many ways feels like a rather cohesive OOP-API, making it much easier to teach to juniors or team members who are not as familiar with AWS. The v3 API already raised questions like "what's a command" when we presented the v3 SDK as something new in a knowledge session.

    Robert Wawrzyniak
    I cross-posted my question above to Github: aws/aws-sdk-js-v3#1557
    Martin Juhasz
    Hey, is the v3 api reference already online somewhere?
    Oliver Salzburg
    @martinjuhasz The last time I looked, it wasn't and nobody here answered me regarding where to find it
    Lauri Svan

    Hi, also awaiting for the v3 api. Meanwhile - how does the "assume role" functionality work in V3 API? Our current setup requires assuming a role from another account, and somehow v2 API was able to do it under the hood. When calling commands with the v3 API, I get "Profile <profile> requires a role to be assumed, but no role assumption callback was provided.".

    How to define such a callback?

    Would anyone happen to know why when using the S3Client with v3 it seems to be asking for credentials when being ran on an ec2? Usually the AWS SDK doesn't need to be provided credentials as long as the IAM profile has sufficient access (which it does)
    Chris Kalafarski
    Do v3 DynamodbClient commands work like the v2 DocumentClient? I.e., do they work with standard JSON data, or does it need to be typed S: foo, etc
    Steven Aerts
    @laurisvan this is how I got it working:
    {credentials: fromIni({
            roleAssumer: async (credentials, params) => {
                // no idea why we have to implement this ourselves.
                const sts = new STSClient({credentials});
                const response = await sts.send(new AssumeRoleCommand(params));
                return {
                    accessKeyId: response.Credentials.AccessKeyId,
                    secretAccessKey: response.Credentials.SecretAccessKey,
                    sessionToken: response.Credentials.SessionToken,
                    expiration: response.Credentials.Expiration,
    Boris V.Kuznetsov
    Hello! I'm new to aws-sdk-v3 Javascript. Evaluating this new lib for our new project. Currently, I'm trying to getObject with the following:
    downloadFile = async (src: String, dst: String) => {
        this.params.Key = path.basename(src);
        var outFile = fs.createWriteStream(dst);
        try {
          const data = await this.s3
            .send(new GetObjectCommand(this.params))
            .Contents.array.forEach((element) => {
          console.log("Success", data);
        } catch (err) {
          console.log("Error", err);
    I was able to reuse v2 js uploadFile, which works fine. However, this my impl creates a dstfile, but its empty (zero size). Could anybody point to my mistake? Thanks in advance !
    Boris V.Kuznetsov

    Alright... After looking at solution of @Mousaka, I came up with the working solution:

    const data = await this.s3.send(new GetObjectCommand(this.params)).then((response) => {
            const receiveObject = new Promise<Buffer>((resolve) => {
              const forBuffer = new PassThrough();
              forBuffer.on("data", (chunk) => {
              forBuffer.on("finish", () => {
          console.log("Success", data);
        } catch (err) {
          console.log("Error", err);

    Thanks for building and supporting the v3 API !

    Boris V.Kuznetsov

    Hello! How to instantiate S3Client in a browser with custom credentials? I'd like to use .env to pass creds to my JS code. Here's what I'm doing now:

    const cfg = {
      accessKeyId: process.env.KEY,
      secretAccessKey: process.env.SECRET,
      endpoint: process.env.HOST,
      s3ForcePathStyle: true,
      signatureVersion: "v4",
    const s3 = new S3Client(cfg);

    This works in Node, but fails in the browser with the following error: "vue.runtime.esm.js?5593:619 [Vue warn]: Error in created hook: "Error: Credential is missing"
    How do I work around this? Thank you!

    Cristian Barrientos Montoya
    Hi there, has anyone sign request to ElasticSearch using the sdk v3 ?
    2 replies
    Benjamin Tamasi
    Is there an example of how I can use the sdk-js-v3 to do a GraphQL query on my AppSync api?
    @aws-sdk/client-appsync seems to be for manipulating AppSync itself, I just want to query the GraphQL API
    Isaac Levy
    Is the v3 included in the node lambda enviroment -- i.e. should I mark all @aws-sdk packages as external in my webpack build?
    2 replies
    Imaduddin Haetami
    On dealing with dynamodb ProvisionedThroughputExceededException error, I am using the same approach as this second answer of the given stackoverflow question. However, it seems that v3 doesn't support it as even though I have changed maxRetries to 5 the most number of attempts logged stuck at 3 and the error still occurred. Is there any suggestion to handle this issue?
    Imaduddin Haetami
    Well, I solve the issue by provisioning higher write capacity of the dynamodb table
    Dean Shelton
    For anyone wondering how to use the new S3 getObject with Readable streams: This worked for me:
    (it's in Typescript but should work with raw JS aswell)
    import { Readable } from 'stream';
    const readStream = (stream: Readable): Promise<string> => {
      return new Promise((res, rej) => {
        let data = '';
        stream.on('data', function (chunk) { data += chunk; });
        stream.on('end', function () { res(data); });
        stream.on('error', rej);
    const params = { Bucket, Key };
    logger.debug('S3 getObject >', params);
    const result = (await s3.getObject(params)).Body as any;
    const stream = Readable.from(result);
    return readStream(stream);
    Ognjen Palija
    I've done in this way (NodeJS)
        const response = await s3.getObject({ Bucket: BUCKET, Key: imageName } );
        let file_stream = response.Body;
        let content_buffer = Buffer.from([]);
        if (file_stream instanceof Readable) {
            for await (const chunk of file_stream) {
                content_buffer = Buffer.concat([content_buffer,chunk]);
        } else {
            throw new Error('Unknown object stream type.');
    Hi guy
    Hi gals and guys, I'm getting my head arround the new Cognito interface
    I've managed login and some requests, but I'm struggling with security. Any best practices how to preserve a session in a static web application (Java Script using V3 via Webpack) so that my user doesn't have to log in every time he jumps between my various HTML files?
    Cognito side "session" function seems to be gone
    Saving Tokens in browser session seems to break OWASP best practices. Any hint appreciated.
    Eli B. Duhon
    I keep getting typescript compilation errors when attempting to use @aws-sdk/client-s3 any suggestions as to which version works?
    to be clear im trying to use it via nodejs
    Eli B. Duhon

    I keep getting typescript compilation errors when attempting to use @aws-sdk/client-s3 any suggestions as to which version works?

    After uninstalling all the @aws-sdk packages and reinstalling @aws-sdk/client-s3-node works but @aws-sdk/client-sqs no longer works and I am getting Typescript errors when attempting to use the ListQueuesCommand. ListQueuesCommand incorrectly implements interface 'Command...

    to be clear i am attempting to now use the @aws-sdk/client-sqs-node package
    Eli B. Duhon
    Are there any stable AWS-SDK V3 for JavaScript & Node.js packages?
    Eli B. Duhon
    S3CreateBucketCommand LocationConstraint does not default to "us-east-1" as indicated by the API docs and must be specified otherwise an error InvalidLocationConstraint occurs
    Emanuele Fumagalli
    Hi, I'm using the sdk 3 with DynamoDB. How is it possible to specify the endpoint when using dynamoDB running in Docker?
    Emanuele Fumagalli
    I just needed to add endpoint to DynamoDBClient
    const client = new DynamoDBClient({
    region: "us-east-1",
    endpoint: "http://localhost:8001",
    Gerard Downes
    Hi, I've just started using the client. Amazing work. The below util was great for simplifying the PutItemCommand.
    const { marshall } = require("@aws-sdk/util-dynamodb");
    Currently stuck on creating the UpdateItemCommand key parameter.
    I'm looking for an example of using the UpdateItemCommand. Any pointers/resource would be greatly appreciated.
    @laurisvan I'm having the same issue with serverless invoke local and aws-sdk v3.
    error - Profile xxxxxxxxx requires a role to be assumed, but no role assumption callback was provided.
    did you ever solve your problem?
    Eli B. Duhon
    @aws-sdk/client-dynamodb-node is missing the command TransactGetItemsCommand and TransactWriteItemsCommand
    Hello, folks. I'm trying to figure out how to turn on debug logging for the S3 client (I suspect any client would work the same way) in AWS SDK v3 for JS, so I can troubleshoot an issue I have. I couldn't find the right piece of documentation. Can anyone point me in the right direction?
    I tried setting https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/interfaces/clientdefaults.html#logger to {debug: some_function}, but that didn't have the desired effect.
    Ok, now that works. I guess it was a stale client object. Never mind!
    Filip Figiel
    I'm writing a middleware for the deserialize step. I receive a HttpRequest object, but I have no idea how to send it to get the response. Please help?
    before upgrading to v3, the v2 results had a $response field I could use instead of writing a middleware
    Filip Figiel
    solved using axios, aws4 package and browser xml parser. My app serves handles non-standard IAM actions so I had most of these already in place
    Raymond Feng
    Hi, does @aws-sdk/client-dynamodb allow use of @aws-sdk/client-dax?
    Does anyone have an example of how to supply parameters to authenticate a user with cognito?
    const { CognitoIdentityClient, CreateIdentityPoolCommand } = require("@aws-sdk/client-cognito-identity");
    const client = new CognitoIdentityClient({ region: "us-east-1" });
    const params = {
        /** input parameters.  Example? */
      const command = new CreateIdentityPoolCommand(params);
      .then((data) => {
        // process data.
      .catch((error) => {
        // error handling.
        const { requestId, cfId, extendedRequestId } = error.$metadata;
        console.log({ requestId, cfId, extendedRequestId });
      .finally(() => {
        // finally.
    Jan Brauer
    Why doesn't unmarshall from @aws-sdk/util-dynamodb take a type argument like unmarshall<Foo>(item). That would be extremely helpful. Currently it's kind of hard to put the thing I get back from unmarshall to use.