@specialblend/aws-sdk-promise
v0.0.10
Published
Functional, promisifed, easily mockable wrapper around aws-sdk.
Downloads
2
Maintainers
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