@nesn/commons-api-gateway-tools v1.2.0
API Gateway Tools
The api-gateway-tools
package provides utilities for managing API Gateway documentation and API keys. It includes modules for downloading and uploading API Gateway documentation, generating HTML wrappers for documentation, and storing API keys in AWS Systems Manager Parameter Store (SSM).
Installation
To install the package, use npm or yarn:
npm install api-gateway-tools
or
yarn add api-gateway-tools
Modules
1. API Gateway Docs Processor
This module provides functions to download API Gateway documentation assuming that a Serverless.js project is using the serverless-aws-documentation plugin to generate the documentation, upload it to an S3 bucket, and generate an HTML wrapper for viewing the documentation.
Functions
downloadAPIGatewayDocs
: Downloads API Gateway documentation for a specified stage and saves it to a specified file path.downloadAPIGatewayDocs({ outputFilePath: string, stage: string }): Promise<{ success: boolean, message: string }>
uploadAPIGatewayDocsToS3
: Uploads the downloaded API Gateway documentation to an S3 bucket.uploadAPIGatewayDocsToS3({ filePath: string, bucketName: string, key: string, contentType: AllowedContentType, clientOptions: AWSClientOptions }): Promise<{ success: boolean, message: string }>
generateApiDocsHtmlWrapper
: Generates an HTML wrapper for the API Gateway documentation using a presigned URL.generateApiDocsHtmlWrapper( bucketName: string, key: string, clientOptions: AWSClientOptions, expiresIn?: number ): Promise<string>
processApiDocs
: A utility function that combines downloading, uploading, and cleaning up the API Gateway documentation.processApiDocs({ outputFilePath: string, stage: string, bucketName: string, key: string, contentType: AllowedContentType, clientOptions: AWSClientOptions }): Promise<void>
2. API Keys Storage
This module provides functions to retrieve API keys from API Gateway and store them securely in AWS Systems Manager Parameter Store (SSM).
Functions
storeProjectAPIKeysToSSM
: Stores API keys for a project in SSM as secure strings.storeProjectAPIKeysToSSM({ projectName: string, clientOptions: AWSClientOptions, stage?: string, normalizeName?: boolean }): Promise<void>
getProjectAPIKeys
: Retrieves all API keys for a specified project from API Gateway.getProjectAPIKeys({ projectName: string, clientOptions: AWSClientOptions, stage?: string }): Promise<ApiKey[]>
Usage
Downloading and Uploading API Gateway Docs
import { processApiDocs } from 'api-gateway-tools/src/api-gateway-docs/processor';
await processApiDocs({
outputFilePath: 'path/to/docs.json',
stage: 'dev',
bucketName: 'your-s3-bucket',
key: 'docs.json',
contentType: 'application/json',
clientOptions: { region: 'us-east-1' }
});
Storing API Keys in SSM
import { storeProjectAPIKeysToSSM } from 'api-gateway-tools/src/api-keys/storage';
await storeProjectAPIKeysToSSM({
projectName: 'my-project',
clientOptions: { region: 'us-east-1' },
stage: 'dev'
});
Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
License
This project is licensed under the MIT License.
</rewritten_file>