dynamodb
Fetches DynamoDB stored configuration and parses out JSON.
Install
To install this middleware you can use NPM:
- npm
- Yarn
npm install --save @middy/dynamodb
npm install --save-dev @aws-sdk/client-dynamodb @aws-sdk/util-dynamodb
yarn add @middy/dynamodb
yarn add --dev @aws-sdk/client-dynamodb @aws-sdk/util-dynamodb
Options
AwsClient
(object) (defaultDynamoDBClient
): DynamoDBClient class constructor (i.e. that has been instrumented with AWS XRay). Must be from@aws-sdk/client-dynamodb
.awsClientOptions
(object) (defaultundefined
): Options to pass to DynamoDBClient class constructor.awsClientAssumeRole
(string) (defaultundefined
): Internal key where secrets are stored. See @middy/sts on to set this.awsClientCapture
(function) (defaultundefined
): Enable XRay by passingcaptureAWSv3Client
fromaws-xray-sdk
in.fetchData
(object) (required): Mapping of internal key name to API request parameters.disablePrefetch
(boolean) (defaultfalse
): On cold start requests will trigger early if they can. SettingawsClientAssumeRole
disables prefetch.cacheKey
(string) (defaultdynamodb
): Cache key for the fetched data responses. Must be unique across all middleware.cacheExpiry
(number) (default-1
): How long fetch data responses should be cached for.-1
: cache forever,0
: never cache,n
: cache for n ms.setToContext
(boolean) (defaultfalse
): Store credentials torequest.context
.
NOTES:
- Lambda is required to have IAM permission for
dynamodb:BatchGetItemCommand
Sample usage
import middy from '@middy/core'
import dynamodb from '@middy/dynamodb'
const handler = middy((event, context) => {
const response = {
statusCode: 200,
headers: {},
body: JSON.stringify({ message: 'hello world' })
}
return response
})
handler.use(
dynamodb({
fetchData: {
config: {
TableName: '...'
Key: {
pk: '0000'
}
}
}
})
)
Bundling
To exclude @aws-sdk
add @aws-sdk/client-dynamodb
to the exclude list.