{"id":22382411,"url":"https://github.com/jcoreio/cloudformation-tools","last_synced_at":"2026-04-02T15:45:09.952Z","repository":{"id":33508578,"uuid":"158905380","full_name":"jcoreio/cloudformation-tools","owner":"jcoreio","description":"Tools to generate CloudFormation templates and launch stacks","archived":false,"fork":false,"pushed_at":"2026-02-12T01:15:23.000Z","size":726,"stargazers_count":2,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-12T11:43:18.404Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcoreio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-24T05:28:45.000Z","updated_at":"2026-02-12T01:14:12.000Z","dependencies_parsed_at":"2024-05-21T01:46:13.633Z","dependency_job_id":"9f03ba22-0216-4626-9e8c-13233f86e92e","html_url":"https://github.com/jcoreio/cloudformation-tools","commit_stats":{"total_commits":101,"total_committers":3,"mean_commits":"33.666666666666664","dds":0.306930693069307,"last_synced_commit":"41b800e036acba2988af2b94e9b7d9e8a96b29f3"},"previous_names":[],"tags_count":90,"template":false,"template_full_name":null,"purl":"pkg:github/jcoreio/cloudformation-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcoreio%2Fcloudformation-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcoreio%2Fcloudformation-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcoreio%2Fcloudformation-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcoreio%2Fcloudformation-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcoreio","download_url":"https://codeload.github.com/jcoreio/cloudformation-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcoreio%2Fcloudformation-tools/sbom","scorecard":{"id":511688,"data":{"date":"2025-08-11","repo":{"name":"github.com/jcoreio/cloudformation-tools","commit":"0ea569a9d48906a3dc66c995ace9232b220885a7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":1,"reason":"2 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T00:42:38.732Z","repository_id":33508578,"created_at":"2025-08-20T00:42:38.733Z","updated_at":"2025-08-20T00:42:38.733Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29490360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T19:29:10.908Z","status":"ssl_error","status_checked_at":"2026-02-15T19:29:10.419Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T00:12:54.424Z","updated_at":"2026-02-15T22:06:38.631Z","avatar_url":"https://github.com/jcoreio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @jcoreio/cloudformation-tools\n\n[![CircleCI](https://circleci.com/gh/jcoreio/cloudformation-tools.svg?style=svg)](https://circleci.com/gh/jcoreio/cloudformation-tools)\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)\n[![npm version](https://badge.fury.io/js/%40jcoreio%2Fcloudformation-tools.svg)](https://badge.fury.io/js/%40jcoreio%2Fcloudformation-tools)\n\n# API\n\n- [`deployCloudFormationStack(options)`](#deploycloudformationstackoptions)\n- [`deployCloudFormationStacks(options)`](#deploycloudformationstacksoptions)\n- [`describeCloudFormationFailure(options)`](#describecloudformationfailureoptions)\n- [`getStackOutputs(options)`](#getstackoutputsoptions)\n- [`getStackResources(options)`](#getstackresourcesoptions)\n- [`getCurrentStackEvents(options)`](#getcurrentstackeventsoptions)\n- [`watchStackResources(options)`](#watchstackresourcesoptions)\n- [`printStackResources(options)`](#printstackresourcesoptions)\n\n## `deployCloudFormationStack(options)`\n\n```js\nimport { deployCloudFormationStack } from '@jcoreio/cloudformation-tools'\n```\n\nDeploys a stack. Code is adapted from `aws-cli`'s\n`deploy` command. However, it can display stack resources\nas they are getting created/updated\n(if you set `watchResources: true`), and if the update\nfails, it will log the failure events.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `watchResources` (`boolean`, _optional_)\n\nIf truthy, will watch and print out resource status\nwhile the stack create/update is in progress\n\n#### `watcher` (`StackResourceWatcher`, _optional_)\n\nAlternative to `watchResources`. If given, will watch and print out resource status while the stack create/update is in progress.\n\n#### `region` (`string`, _optional_)\n\nDestination AWS region for CloudFormation stack\n\n#### `approve` (`boolean`, _optional_)\n\nIf `true`, lists changes and prompts for approval before deploying. Defaults to `false`.\n\n#### `StackName` (`string`, **required**)\n\nThe name or the unique ID of the stack for which you are creating a change set. AWS CloudFormation generates the change set by comparing this stack's information with the information that you submit, such as a modified template or different parameter input values.\n\n#### `TemplateFile` (`string`, _optional_)\n\nThe path to the file containing the CloudFormation template. You must specify either `TemplateFile` or\n`TemplateBody`.\n\n#### `TemplateBody` (`string`, _optional_)\n\nA structure that contains the body of the revised template, with a minimum length of 1 byte and a maximum length of 51,200 bytes. AWS CloudFormation generates the change set by comparing this template with the template of the stack that you specified.\n\n#### `Parameters` (`{[string]: any} | Array\u003c{ParameterKey: string, ParameterValue: string, UsePreviousValue?: boolean, ResolvedValue?: string}\u003e`, _optional_)\n\nA list of Parameter structures that specify input parameters for the change set.\n\n#### `Capabilities` (`Array\u003cstring\u003e`, _optional_)\n\nIn some cases, you must explicity acknowledge that your stack template contains certain capabilities in order for AWS CloudFormation to create the stack.\n\n#### `RoleARN` (`string`, _optional_)\n\nThe Amazon Resource Name (ARN) of an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes when executing the change set. AWS CloudFormation uses the role's credentials to make calls on your behalf. AWS CloudFormation uses this role for all future operations on the stack. As long as users have permission to operate on the stack, AWS CloudFormation uses this role even if the users don't have permission to pass it. Ensure that the role grants least privilege.\n\nIf you don't specify a value, AWS CloudFormation uses the role that was previously associated with the stack. If no role is available, AWS CloudFormation uses a temporary session that is generated from your user credentials.\n\n#### `NotificationARNs` (`Array\u003cstring\u003e`, _optional_)\n\nThe Amazon Resource Names (ARNs) of Amazon Simple Notification Service (Amazon SNS) topics that AWS CloudFormation associates with the stack. To remove all associated notification topics, specify an empty list.\n\n#### `Tags` (`{[string]: any} | Array\u003c{Key: string, Value: string}`, _optional_)\n\nKey-value pairs to associate with this stack. AWS CloudFormation also propagates these tags to resources in the stack. You can specify a maximum of 50 tags.\n\n#### `s3` (`{ Bucket: string, prefix?: ?string, SSEKMSKeyId?: ?string, forceUpload?: ?boolean }`, _optional_)\n\nIf given, will upload the template body the given S3 bucket.\n\n#### `readOutputs` (`boolean`, _optional_)\n\nIf `true`, stack outputs will be read and returned in the `Outputs` property. Defaults to `false`.\n\n#### `replaceIfCreateFailed` (`boolean`, _optional_)\n\nIf `true`, will replace an existing stack of the same name if it's in `CREATE_FAILED`, `ROLLBACK_FAILED`,\n`ROLLBACK_COMPLETE` or `ROLLBACK_IN_PROGRESS` state (note that these only refer to rollback after\ncreate failure, and are distinct from the `UPDATE_ROLLBACK_...` states)\n\n#### `signalWatchable` (`() =\u003e mixed`, _optional_)\n\nIf given, this function will be called once the stack create/update is ready to be watched.\n\n### Returns\n\nA `Promise` that resolves or rejects when the deployment succeeds or fails\n\n## `deployCloudFormationStacks(options)`\n\n```js\nimport { deployCloudFormationStacks } from '@jcoreio/cloudformation-tools'\n```\n\nDeploys multiple stacks in parallel.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `stacks` (`Array`, **required**)\n\nAn array of arguments for `deployCloudFormationStack`, without the other options below or the `approve` option.\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `watchResources` (`boolean`, _optional_)\n\nIf truthy, will watch and print out resource status\nwhile the stacks are being created or updated.\n\n#### `s3` (`{ Bucket: string, prefix?: ?string, SSEKMSKeyId?: ?string, forceUpload?: ?boolean }`, _optional_)\n\nIf given, will upload the template bodies the given S3 bucket.\n\n### Returns\n\nA `Promise` that will resolve after all stacks are deployed successfully, or reject immediately when any stack\ndeployment fails. If one stack deployment fails, the other deployments will not be canceled.\n\n## `describeCloudFormationFailure(options)`\n\n```js\nimport { describeCloudFormationFailure } from '@jcoreio/cloudformation-tools'\n```\n\nScans stack events for failures and prints them out\nwith nice formatting, to help you debug.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `StackName` (`string`, **required**)\n\nThe name or unique id of a stack to describe failures for\n\n#### `stream` (`Writable`, _optional_)\n\nThe writable stream to output to. Defaults to `process.stderr`.\n\n### Returns\n\nA `Promise` that resolves when done logging, or rejects\nif it failed to get stack events\n\n## `getStackOutputs(options)`\n\n```js\nimport { getStackOutputs } from '@jcoreio/cloudformation-tools'\n```\n\nGets a stack's outputs as an object\ninstead of an array of `{OutputKey, OutputValue}` objects.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `StackName` (`string`, **required**)\n\nThe name or unique id of a stack to get outputs of\n\n### Returns\n\nA `Promise` that resolves to an `{[OutputKey]: OutputValue}` object, or rejects if it failed to get\nthe outputs.\n\n## `getStackResources(options)`\n\n```js\nimport { getStackOutputs } from '@jcoreio/cloudformation-tools'\n```\n\nGets all of a stack's resources, handling\nthe paging for you.\n\n### `options` object\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `StackName` (`string`, **required**)\n\nThe name or unique id of a stack to get resources of\n\n### Returns\n\nA `Promise` that resolves to array of stack resources,\nor rejects if it failed ot get the resources.\n\n## `getCurrentStackEvents(options)`\n\n```js\nimport { getCurrentStackEvents } from '@jcoreio/cloudformation-tools'\n```\n\nGets all of the events from the most recent changeset,\nhandling paging for you.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `StackName` (`string`, **required**)\n\nThe name or unique id of a stack to get events of\n\n### Returns\n\nA `AsyncIterable` that yields stack events.\n\n## `watchStackResources(options)`\n\n### `options` object\n\nPrints out one or more stacks' resources and their status in a\ntable every 5 seconds, or on an interval you specify.\n\n#### `cloudformation` (`AWS.CloudFormation`, _optional_)\n\nAn `AWS.CloudFormation` instance. Will create one with the default options if you don't provide one\n\n#### `StackName` (`string`, `StackName` or `StackNames` is **required**)\n\nThe name or unique id of a stack to watch\n\n#### `StackNames` (`Array\u003cstring\u003e`, `StackName` or `StackNames` is **required**)\n\nThe names or unique ids of stacks to watch\n\n#### `delay` (`number`, _optional_)\n\nThe interval delay in milliseconds\n\n#### `whilePending` (`Promise\u003cany\u003e, _optional_)\n\nIf given, the interval will be cleared once this promise resolves or rejects.\n\n### Returns\n\nThe interval ID from `setInterval`.\n\n## `printStackResources(options)`\n\nPrints the given resources and their status in a table.\n\n### `options` object\n\n#### `resources` (`Array\u003cResource\u003e`, **required**)\n\nThe resources to print out\n\n#### `stream` (`Writable`, _optional_)\n\nThe stream to print to. Defaults to `process.stderr`.\n\n## `upsertSecurityGroup(options)`\n\nEnsures that a security group with the specified name exists in the VPC, creating\nit if needed.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `securityGroupName` (`string`, **required**)\n\nName of the security group\n\n#### `securityGroupDescription` (`string`, _optional_)\n\nDescription to use when creating the security group\n\n#### `vpcId` (`string`, **required**)\n\nID of the VPC. Required because security groups exist within a VPC.\n\n#### `ec2` (`AWS.EC2`, **conditional**)\n\nOptional EC2 class instance to use for API calls. If no EC2 class instance\nis provided, one will be created using the `region` property. Either\n`ec2` or `region` must be provided.\n\n#### `region` (`string`, **conditional**)\n\nAWS region. Either `ec2` or `region` must be provided.\n\n### Returns\n\nA `Promise` that resolves to a `{securityGroupId}` object, or rejects if it failed to\nensure the security group exists.\n\n## `getVPCIdBySubnetId(options)`\n\nFetches and returns the ID of the VPC where the specified subnet is located.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `subnetId` (`string`, **required**)\n\nID of the subnet\n\n#### `ec2` (`AWS.EC2`, **conditional**)\n\nOptional EC2 class instance to use for API calls. If no EC2 class instance\nis provided, one will be created using the `region` property. Either\n`ec2` or `region` must be provided.\n\n#### `region` (`string`, **conditional**)\n\nAWS region. Either `ec2` or `region` must be provided.\n\n### Returns\n\nA `Promise` that resolves to a `string` with the ID of the VPC\n\n## `getCIDRByVPCId(options)`\n\nFetches and returns the CIDR block IP address range of the specified VPC.\n\n### `options` object\n\n#### `awsConfig` (`ConfigurationOptions`, _optional_)\n\nGeneral AWS service configuration options like `region` and `credentials`\n\n#### `vpcId` (`string`, **required**)\n\nID of the VPC\n\n#### `ec2` (`AWS.EC2`, **conditional**)\n\nOptional EC2 class instance to use for API calls. If no EC2 class instance\nis provided, one will be created using the `region` property. Either\n`ec2` or `region` must be provided.\n\n#### `region` (`string`, **conditional**)\n\nAWS region. Either `ec2` or `region` must be provided.\n\n### Returns\n\nA `Promise` that resolves to a `string` with the IP address range of the VPC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcoreio%2Fcloudformation-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcoreio%2Fcloudformation-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcoreio%2Fcloudformation-tools/lists"}