@specialblend/aws-sdk-promise

Functional, promisifed, easily mockable wrapper around aws-sdk.

Usage no npm install needed!

<script type="module">
  import specialblendAwsSdkPromise from 'https://cdn.skypack.dev/@specialblend/aws-sdk-promise';
</script>

README

@specialblend/aws-sdk-promise

Functional, promisifed, easily mockable wrapper around aws-sdk.

This library wraps aws-sdk as a peer dependency, so it will use whatever version of aws-sdk you installed in your project.

Installation

npm i @specialblend/aws-sdk-promise aws-sdk

Usage

require

const S3 = require('@specialblend/aws-sdk-promise/dist/S3').default

or

const { listBuckets } = require('@specialblend/aws-sdk-promise/dist/S3')

ES6+

import S3 from '@specialblend/aws-sdk-promise/dist/S3'

or

import { listBuckets } from '@specialblend/aws-sdk-promise/dist/S3'

Examples

Service factory syntax

// foo.js

import S3 from '@specialblend/aws-sdk-promise/dist/S3'

const config = {
    // service config ...
    region: 'us-east-2',
}

const s3 = S3(config)

const foo = async() => {
    const testObj = await s3.getObject({ Bucket:  'example-bucket', Key: 'example-key'})
    return testObj.Body.toString()
}

export default foo

Curried service method syntax

// foo.js

import { getObject } from '@specialblend/aws-sdk-promise/dist/S3'

export const config = {
    region: 'us-east-2',
}

const s3GetObject = getObject(config)

const foo = async Key => {
    const testObj = await s3GetObject({ Bucket: 'example-bucket', Key })
    return testObj.Body.toString()
}

export default foo

Testing/Mocking

Instead of mocking @specialblend/aws-sdk-promise, mock aws-sdk directly.

See the aws-sdk-mock CLI tool to generate mocks easily.

// foo.test.js

import { S3 } from 'aws-sdk'
import foo from './foo'

jest.mock('aws-sdk')

describe('foo', () => {
    const Key = 'example-key'
    const mockedBody = 'example body'
    const mockedResult = {
        Body: Buffer.from(mockedBody),
    }
    const expectedPayload = {
        Bucket: 'example-bucket',
        Key,
    }
    beforeAll(() => {
        S3.getObject.mockResolvedValueOnce(mockedResult)
    })
    test('calls S3.getObject with expected params', async() => {
        const result = await foo(Key)
        expect(S3.getObject).toHaveBeenCalledWith(expectedPayload)
        expect(result).toBe(mockedBody)
    })
})

Available AWS SDK Services (185)

  • ACM
  • ACMPCA
  • AlexaForBusiness
  • Amplify
  • APIGateway
  • ApiGatewayManagementApi
  • ApiGatewayV2
  • ApplicationAutoScaling
  • ApplicationInsights
  • AppMesh
  • AppStream
  • AppSync
  • Athena
  • AutoScaling
  • AutoScalingPlans
  • Backup
  • Batch
  • Budgets
  • Chime
  • Cloud9
  • CloudDirectory
  • CloudFormation
  • CloudFront
  • CloudHSM
  • CloudHSMV2
  • CloudSearch
  • CloudSearchDomain
  • CloudTrail
  • CloudWatch
  • CloudWatchEvents
  • CloudWatchLogs
  • CodeBuild
  • CodeCommit
  • CodeDeploy
  • CodePipeline
  • CodeStar
  • CognitoIdentity
  • CognitoIdentityServiceProvider
  • CognitoSync
  • Comprehend
  • ComprehendMedical
  • ConfigService
  • Connect
  • CostExplorer
  • CUR
  • DataPipeline
  • DataSync
  • DAX
  • DeviceFarm
  • DirectConnect
  • DirectoryService
  • Discovery
  • DLM
  • DMS
  • DocDB
  • DynamoDB
  • DynamoDBStreams
  • EC2
  • EC2InstanceConnect
  • ECR
  • ECS
  • EFS
  • EKS
  • ElastiCache
  • ElasticBeanstalk
  • ElasticTranscoder
  • ELB
  • ELBv2
  • EMR
  • ES
  • Firehose
  • FMS
  • FSx
  • GameLift
  • Glacier
  • GlobalAccelerator
  • Glue
  • Greengrass
  • GroundStation
  • GuardDuty
  • Health
  • IAM
  • ImportExport
  • Inspector
  • Iot
  • IoT1ClickDevicesService
  • IoT1ClickProjects
  • IoTAnalytics
  • IotData
  • IoTEvents
  • IoTEventsData
  • IoTJobsDataPlane
  • IoTThingsGraph
  • Kafka
  • Kinesis
  • KinesisAnalytics
  • KinesisAnalyticsV2
  • KinesisVideo
  • KinesisVideoArchivedMedia
  • KinesisVideoMedia
  • KMS
  • Lambda
  • LexModelBuildingService
  • LexRuntime
  • LicenseManager
  • Lightsail
  • MachineLearning
  • Macie
  • ManagedBlockchain
  • MarketplaceCommerceAnalytics
  • MarketplaceEntitlementService
  • MarketplaceMetering
  • MediaConnect
  • MediaConvert
  • MediaLive
  • MediaPackage
  • MediaPackageVod
  • MediaStore
  • MediaStoreData
  • MediaTailor
  • MigrationHub
  • Mobile
  • MobileAnalytics
  • MQ
  • MTurk
  • Neptune
  • OpsWorks
  • OpsWorksCM
  • Organizations
  • Personalize
  • PersonalizeEvents
  • PersonalizeRuntime
  • PI
  • Pinpoint
  • PinpointEmail
  • PinpointSMSVoice
  • Polly
  • Pricing
  • QuickSight
  • RAM
  • RDS
  • RDSDataService
  • Redshift
  • Rekognition
  • ResourceGroups
  • ResourceGroupsTaggingAPI
  • RoboMaker
  • Route53
  • Route53Domains
  • Route53Resolver
  • S3
  • S3Control
  • SageMaker
  • SageMakerRuntime
  • SecretsManager
  • SecurityHub
  • ServerlessApplicationRepository
  • ServiceCatalog
  • ServiceDiscovery
  • ServiceQuotas
  • SES
  • Shield
  • Signer
  • SimpleDB
  • SMS
  • Snowball
  • SNS
  • SQS
  • SSM
  • StepFunctions
  • StorageGateway
  • STS
  • Support
  • SWF
  • Textract
  • TranscribeService
  • Transfer
  • Translate
  • WAF
  • WAFRegional
  • WorkDocs
  • WorkLink
  • WorkMail
  • WorkSpaces
  • XRay