service-discovery
Fetches Service Discovery instances to be used when connecting to other AWS services.
Install
To install this middleware you can use NPM:
- npm
- Yarn
- pnpm
- Bun
npm install --save @middy/service-discovery
npm install --save-dev @aws-sdk/client-servicediscovery
yarn add @middy/service-discovery
yarn add --dev @aws-sdk/client-servicediscovery
pnpm add @middy/service-discovery
pnpm add --save-dev @aws-sdk/client-servicediscovery
bun add @middy/service-discovery
bun add --dev @aws-sdk/client-servicediscovery
Options
AwsClient(object) (defaultServiceDiscoveryClient): ServiceDiscoveryClient class constructor (i.e. that has been instrumented with AWS XRay). Must be from@aws-sdk/client-servicediscovery.awsClientOptions(object) (defaultundefined): Options to pass to ServiceDiscoveryClient class constructor.awsClientAssumeRole(string) (defaultundefined): Internal key where secrets are stored. See @middy/sts on to set this.awsClientCapture(function) (defaultundefined): Enable XRay by passingcaptureAWSv3Clientfromaws-xray-sdkin.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. SettingawsClientAssumeRoledisables prefetch.cacheKey(string) (defaultsts): 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
servicediscovery:DiscoverInstances
Sample usage
import middy from '@middy/core'
import serviceDiscovery from '@middy/service-discovery'
const lambdaHandler = (event, context) => {
const response = {
statusCode: 200,
headers: {},
body: JSON.stringify({ message: 'hello world' })
}
return response
}
export const handler = middy()
.use(
serviceDiscovery({
fetchData: {
instances: {
NamespaceName: '...',
ServiceName: '...'
}
}
})
)
.handler(lambdaHandler)
Bundling
To exclude @aws-sdk add @aws-sdk/client-servicediscovery to the exclude list.