Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AnomalyInnovations/aws-api-gateway-cli-test
A simple CLI to test API Gateway endpoints with IAM authorization
https://github.com/AnomalyInnovations/aws-api-gateway-cli-test
Last synced: 2 days ago
JSON representation
A simple CLI to test API Gateway endpoints with IAM authorization
- Host: GitHub
- URL: https://github.com/AnomalyInnovations/aws-api-gateway-cli-test
- Owner: AnomalyInnovations
- License: mit
- Created: 2017-07-03T01:50:40.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-04-08T14:18:36.000Z (over 2 years ago)
- Last Synced: 2024-10-31T16:47:00.284Z (3 days ago)
- Language: JavaScript
- Size: 101 KB
- Stars: 121
- Watchers: 7
- Forks: 30
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A simple CLI to test API Gateway endpoints with IAM authorization. Uses the AWS SDK, AWS Cognito JS SDK, and the generic [API Gateway Client][apiGClient]. Using the login information given, this tool logs a user into the Cognito User Pool, gets the temporary IAM credentials, and makes the API request. It can be difficult to do these steps by hand without scripting them.
### Installation
To install globally run the following:
```
$ npm install -g aws-api-gateway-cli-test
```You can also use it locally using:
```
$ npx aws-api-gateway-cli-test
```### Usage
If you have it globally installed:
``` bash
$ apig-test \
--username='johndoe' \
--password='password' \
--user-pool-id='us-east-1_Xxxxxxxx' \
--app-client-id='29xxyyxxyxxxyyxxxyy' \
--cognito-region='us-east-1' \
--identity-pool-id='us-east-1:99xxyyx-9999-9999-xx0x-99xxxxxxxx' \
--invoke-url='https://99xxxxxxx.execute-api.us-east-1.amazonaws.com' \
--api-gateway-region='us-east-1' \
--api-key='x3xaacea33DCDA3aqafae28aCdaeEWXX1ada3acx' \
--path-template='/users' \
--method='GET' \
--params='{}' \
--additional-params='{}' \
--access-token-header='cognito-access-token' \
--body='{}'
```If you have it locally installed:
``` bash
$ npx aws-api-gateway-cli-test --options
```This command takes the following options:
- `username`
The username of the Cognito User Pool user.- `password`
The password of the Cognito User Pool user.- `user-pool-id`
The Cognito User Pool Id.- `app-client-id`
The Cognito User Pool App Client Id.- `cognito-region`
The Cognito User Pool region. Defaults to `us-east-1`.- `identity-pool-id`
The Cognito Identity Pool Id.- `invoke-url`
The API Gateway root endpoint.- `api-gateway-region`
The API Gateway region. Defaults to `us-east-1`.
- `api-key`
The API key if required by the method. Defaults to none.- `path-template`
The path template of the API.- `method`
The API method. Defaults to `GET`.- `params`
The API path params as a JSON string. Defaults to `'{}'`.- `additional-params`
Any additional params (including the headers and querystring) as a JSON string. Defaults to `'{}'`.- `access-token-header`
Header field on which to pass the access token.- `body`
The request body as a JSON string. Defaults to `'{}'`. Alternatively, reference a file with a JSON string using `--body='@mocks/create.json'` where `mocks/create.json` is the file with the request body.For additional documentation on the format for `params` and `additional-params`; refer to the generic [API Gateway Client][apiGClient] docs.
### Examples
To pass in path parameters with your request.
``` bash
$ npx aws-api-gateway-cli-test \
--username='[email protected]' \
--password='password' \
--user-pool-id='abc' \
--app-client-id='def' \
--cognito-region='us-east-1' \
--identity-pool-id='ghi' \
--invoke-url='https://123.execute-api.us-east-1.amazonaws.com/prod' \
--api-gateway-region='us-east-1' \
--path-template='/notes/{id}' \
--params='{"id":"456"}' \
--method='GET'
```To pass in query parameters and headers with your request.
``` bash
$ npx aws-api-gateway-cli-test \
--username='[email protected]' \
--password='password' \
--user-pool-id='abc' \
--app-client-id='def' \
--cognito-region='us-east-1' \
--identity-pool-id='ghi' \
--invoke-url='https://123.execute-api.us-east-1.amazonaws.com/prod' \
--api-gateway-region='us-east-1' \
--path-template='/notes' \
--additional-params='{"queryParams":{"param0":"abc"},"headers":{"param1":"123"}}' \
--method='GET'
```### Local Development
Clone the repo and initialize the project.
```
$ git clone https://github.com/AnomalyInnovations/aws-api-gateway-cli-test
$ cd aws-api-gateway-cli-test
$ npm install
```Test the command using `node index.js`.
To install the `apig-test` command, run the following:
```
$ npm link
```[apiGClient]: https://github.com/kndt84/aws-api-gateway-client
[fTwitter]: https://twitter.com/fanjiewang
[jTwitter]: https://twitter.com/jayair
[email]: mailto:[email protected]