1.2.0 • Published 8 months ago

@nesn/commons-api-gateway-tools v1.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

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>