{"id":37157117,"url":"https://github.com/awslabs/amazon-ec2-instance-qualifier","last_synced_at":"2026-01-14T18:42:13.573Z","repository":{"id":47021228,"uuid":"281738336","full_name":"awslabs/amazon-ec2-instance-qualifier","owner":"awslabs","description":"A CLI tool that automates benchmarking on a range of EC2 instance types.","archived":true,"fork":false,"pushed_at":"2021-09-16T21:21:59.000Z","size":161,"stargazers_count":19,"open_issues_count":0,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-05-20T11:06:41.129Z","etag":null,"topics":["aws","aws-ec2","ec2","ec2-instance","ec2-spot"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awslabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-22T17:12:42.000Z","updated_at":"2024-12-09T16:02:53.000Z","dependencies_parsed_at":"2022-08-23T12:31:06.077Z","dependency_job_id":null,"html_url":"https://github.com/awslabs/amazon-ec2-instance-qualifier","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/awslabs/amazon-ec2-instance-qualifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Famazon-ec2-instance-qualifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Famazon-ec2-instance-qualifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Famazon-ec2-instance-qualifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Famazon-ec2-instance-qualifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awslabs","download_url":"https://codeload.github.com/awslabs/amazon-ec2-instance-qualifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Famazon-ec2-instance-qualifier/sbom","scorecard":{"id":219507,"data":{"date":"2025-08-11","repo":{"name":"github.com/awslabs/amazon-ec2-instance-qualifier","commit":"3924ef3b5a94984b7b048d32ec709f94a4234ec0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.8,"checks":[{"name":"Code-Review","score":8,"reason":"Found 15/17 approved changesets -- score normalized to 8","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":"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":"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":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/awslabs/.github/SECURITY.md:1","Info: Found linked content: github.com/awslabs/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/awslabs/.github/SECURITY.md:1","Info: Found text in security policy: github.com/awslabs/.github/SECURITY.md:1"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: test/go-report-card-test/Dockerfile:1: pin your Docker image by updating golang:1 to golang:1@sha256:034848561f95a942e2163d9017e672f0c65403f699336db4529a908af00dfc98","Warn: containerImage not pinned by hash: test/license-test/Dockerfile:1: pin your Docker image by updating golang:1 to golang:1@sha256:034848561f95a942e2163d9017e672f0c65403f699336db4529a908af00dfc98","Warn: containerImage not pinned by hash: test/readme-test/Dockerfile:1: pin your Docker image by updating golang:1 to golang:1@sha256:034848561f95a942e2163d9017e672f0c65403f699336db4529a908af00dfc98","Warn: goCommand not pinned by hash: test/go-report-card-test/Dockerfile:5","Warn: downloadThenRun not pinned by hash: test/go-report-card-test/Dockerfile:6","Warn: goCommand not pinned by hash: test/go-report-card-test/Dockerfile:8","Warn: goCommand not pinned by hash: test/go-report-card-test/Dockerfile:10","Warn: goCommand not pinned by hash: test/license-test/Dockerfile:7","Warn: goCommand not pinned by hash: test/readme-test/Dockerfile:3","Warn: goCommand not pinned by hash: test/license-test/gen-license-report.sh:10","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   6 goCommand dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0391 / GHSA-6jvc-q2x7-pchv / GHSA-76wf-9vgp-pj7w","Warn: Project is vulnerable to: GO-2022-0635 / GHSA-7f33-f4f5-xwgw","Warn: Project is vulnerable to: GO-2022-0646 / GHSA-f5pg-7wfw-84q9"],"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-17T02:12:43.813Z","repository_id":47021228,"created_at":"2025-08-17T02:12:43.813Z","updated_at":"2025-08-17T02:12:43.813Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28430880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"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":["aws","aws-ec2","ec2","ec2-instance","ec2-spot"],"created_at":"2026-01-14T18:42:12.708Z","updated_at":"2026-01-14T18:42:13.554Z","avatar_url":"https://github.com/awslabs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eAmazon EC2 Instance Qualifier\u003c/h1\u003e\n\n\u003ch4\u003eA CLI tool that automates benchmarking on a range of EC2 instance types.\u003c/h4\u003e\n\n\u003cp\u003e\n\t\u003ca href=\"https://golang.org/doc/go1.14\"\u003e\n\t\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/awslabs/amazon-ec2-instance-qualifier?color=blueviolet\" alt=\"go-version\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-ff69b4.svg?color=orange\" alt=\"license\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://goreportcard.com/report/github.com/awslabs/amazon-ec2-instance-qualifier\"\u003e\n\t\u003cimg src=\"https://goreportcard.com/badge/github.com/awslabs/amazon-ec2-instance-qualifier\" alt=\"go-report-card\"\u003e\n\t\u003c/a\u003e\n  \u003ca href=\"https://travis-ci.com/awslabs/amazon-ec2-instance-qualifier\"\u003e\n\t\u003cimg src=\"https://travis-ci.com/awslabs/amazon-ec2-instance-qualifier.svg?branch=main\" alt=\"build-status\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n\n\n\u003cdiv\u003e\n  \u003chr\u003e\n\u003c/div\u003e\n\n## Summary\n\nHow do users know which EC2 instance types are compatible with their application? Currently, there exists no tooling or baselining of any kind provided by AWS. If a user wants to see which of the 250+ different instance types are acceptable, then the user must spin up each instance type individually and test their application’s performance. Spot users often find themselves asking this question when they are told to utilize as many different instance types as possible in order to reduce the chance of spot interruptions. Still, most users will only ever choose a small subset of what could be acceptable due to the pain and cost of manual testing.\n\nThe instance qualifier is an open source command line tool that automates benchmarking on a range of EC2 instance types. The user will use the CLI to provide a test suite and a list of EC2 instance types. Instance qualifier will then run the input on all designated types, test against multiple metrics, and output the results in a user friendly format. In this way, instance qualifier will automate testing across instance types and address a severe pain point for spot users and EC2 users looking to venture into other instance type families.\n\n## Major Features\n\n* Executes test suite on a range of EC2 instance types in parallel and persists test results and execution times\n* Installs and configures [CloudWatch Agent](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html) on each instance type for capturing benchmark data\n  * Instance-Qualifier uses the following for benchmarking: `cpu_usage_active` and `mem_used_percent`\n  * More information on these metrics can be found [here](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html)\n* Provides an ingress point for users to add their own logic to be executed in instance user data via `--custom-script` flag\n* Supports asynchronous functionality, which means users can exit the CLI after tests begin and resume the session at a later time to fetch the results\n* Uses [AWS CloudFormation](https://aws.amazon.com/cloudformation/) to manage all resources\n* Creates an S3 bucket to store test results, instance logs, user configuration and CloudFormation template\n* Implements mechanisms to ensure infrastructure deletion for various edge cases\n\n## Impact to AWS Account\n\n* The CLI creates a CloudFormation stack with a series of resources during the run and deletes the stack at the end by default. Resources include:\n  * A **VPC + Subnet + Internet Gateway**: used to launch instances. Note that they are **only created if you don't specify `vpc`/`subnet` flags or provide invalid ones**\n  * A **Security Group**: same as the default security group when you create one using AWS Console.  It has an inbounding rule which opens all ports for all traffic and all protocols, but the source must be within the same security group. With this rule, the instances can access the bucket, but won't be affected by any other traffic coming outside of the security group\n  * An **IAM Role**: attached with AmazonS3FullAccess and CloudWatchAgentServerPolicy policies to allow instances to access the bucket and emit CloudWatch metrics, respectively\n  * **Launch Templates**: used to launch auto scaling group and instances\n  * An **Auto Scaling Group**: the reason we use auto scaling group to manage all instances is that an one-time action can be scheduled to terminate all instances in the group after timeout to ensure the user is not excessively charged\n  * **EC2 Instances**\n* An **S3 bucket** containing the raw data of an Instance-Qualifier run is also created; however, this artifact is persisted by default\n* A sample of this CloudFormation stack can be found [here](https://github.com/awslabs/amazon-ec2-instance-qualifier/blob/main/pkg/templates/master_sample.template) \n* If a fatal error occurs or the user presses Ctrl-C during the run, the CLI deletes the resources appropriately. Note that if the CLI is interrupted when the tests have begun on all instances, it thinks that the user may resume the session at a later time, thus won't delete any resources\n* No impact to any original resources or settings of the AWS account\n\n**Disclaimer: All associated costs are the user's responsibility.**\n\n## Configuration\n\nTo execute the CLI, you will need AWS credentials configured. Take a look at the [AWS CLI configuration documentation](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#config-settings-and-precedence) for details on the various ways to configure credentials. An easy way to try out the ec2-instance-qualifier CLI is to populate the following environment variables with your AWS API credentials.\n\n```\nexport AWS_ACCESS_KEY_ID=\"...\"\nexport AWS_SECRET_ACCESS_KEY=\"...\"\n```\n\nIf you already have an AWS CLI profile setup, you can pass that directly into ec2-instance-qualifier:\n\n```\n$ ./ec2-instance-qualifier --instance-types=m4.large --test-suite=test-folder --cpu-threshold=30 --mem-threshold=30 --profile=my-aws-cli-profile --region=us-east-1\n```\n\nYou can set the `AWS_REGION` environment variable if you don't want to pass in `--region` on each run.\n\n```\nexport AWS_REGION=\"us-east-1\"\n```\n\n## Examples\n\n**Note: the working directory where you execute `ec2-instance-qualifier` must contain the `agent` binary file**\n\n**All CLI Options**\n\n```bash#help\n$ ./ec2-instance-qualifier --help\nec2-instance-qualifier is a CLI tool that automates testing on a range of EC2 instance types.\nProvided with a test suite and a list of EC2 instance types, ec2-instance-qualifier will then\nrun the input on all designated types, test against multiple metrics, and output the results\nin a user friendly format\n\nUsage:\n  ec2-instance-qualifier [flags]\n\nExamples:\n./ec2-instance-qualifier --instance-types=m4.large,c5.large,m4.xlarge --test-suite=path/to/test-folder --cpu-threshold=30 --mem-threshold=30 --vpc=vpc-294b9542 --subnet=subnet-4879bf23 --timeout=2400\n./ec2-instance-qualifier --instance-types=m4.xlarge,c1.large,c5.large --test-suite=path/to/test-folder --cpu-threshold=30 --mem-threshold=30 --profile=default\n./ec2-instance-qualifier --bucket=qualifier-Bucket-123456789abcdef\n\nFlags:\n  -ami string\n        [OPTIONAL] ami id\n  -bucket string\n        [OPTIONAL] the name of the Bucket created in the last run. When provided with this flag, the CLI won't create new resources, but try to grab test results from the Bucket. If you provide this flag, you don't need to specify any required flags\n  -config-file string\n        [OPTIONAL] path to config file for cli input parameters in JSON\n  -cpu-threshold int\n        [REQUIRED] % cpu utilization that should not be exceeded measured by cpu_usage_active. ex: 30 means instances using 30% or less CPU SUCCEED\n  -custom-script string\n        [OPTIONAL] path to Bash script to be executed on instance-types BEFORE agent runs test-suite and monitoring\n  -instance-types string\n        [REQUIRED] comma-separated list of instance-types to test\n  -mem-threshold int\n        [REQUIRED] % of memory used that should not be exceeded measured by mem_used_percent. ex: 30 means instances using 30% or less MEM SUCCEED\n  -persist\n        [OPTIONAL] set to true if you'd like the tool to keep the CloudFormation stack after the run. Default is deleting the stack\n  -profile string\n        [OPTIONAL] AWS CLI Profile to use for credentials and config\n  -region string\n        [OPTIONAL] AWS Region to use for API requests\n  -subnet string\n        [OPTIONAL] subnet id\n  -test-suite string\n        [REQUIRED] folder containing test files to execute\n  -timeout int\n        [OPTIONAL] max seconds for test-suite execution on instances (default 3600)\n  -vpc string\n        [OPTIONAL] vpc id\n```\n\n**Example 1: Test against m4.large and m4.xlarge with cpu and memory thresholds of 80% and 30%, respectively in an existing VPC and subnet** *(logs not included in output below)*\n\n```\n$ ./ec2-instance-qualifier --instance-types=m4.large,m4.xlarge --test-suite=test-folder --cpu-threshold=80 --mem-threshold=30 --timeout=3600 --vpc=vpc-294b9542 --subnet=subnet-4879bf23\nRegion Used: us-east-2\nTest Run ID: opcfxoss0uyxym4\nBucket Created: qualifier-bucket-opcfxoss0uyxym4\nStack Created: qualifier-stack-opcfxoss0uyxym4\nThe execution of test suite has been kicked off on all instances. You may quit now and later run the CLI again with the bucket name flag to get the result\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n| INSTANCE TYPE | STATUS  | CPU_USAGE_ACTIVE | CPU_THRESHOLD | MEM_USED_PERCENT | MEM_THRESHOLD | ALL TESTS PASS? | TOTAL EXECUTION TIME (sec) |\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n|   m4.xlarge   | SUCCESS |      50.11       |     80.00     |       0.82       |     10.00     |      true       |           130.71           |\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n|   m4.large    | SUCCESS |      100.00      |     80.00     |       1.44       |     10.00     |      true       |           130.70           |\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n\n\n\nDetailed test results can be found in s3://qualifier-bucket-opcfxoss0uyxym4/Instance-Qualifier-Run-opcfxoss0uyxym4\nUser configuration and CloudFormation template are stored in the root directory of the bucket. You may check them if you want\nThe process of cleaning up stack resources has started. You can quit now\nCompleted!\n```\n\nA unique ID is assigned to each test run and the bucket and stack names also contain the ID. From the results, we know that all instances ran the whole test suite successfully, but only m4.xlarge succeeded to operate below both cpu and memory thresholds.\n\n\n\n**Example 2: Same as Example 1, but using a config file instead of CLI args**\n\n```\n$ cat iq-config.json\n{\n\t\"instance-types\": \"m4.large,m4.xlarge\",\n\t\"test-suite\": \"test-folder\",\n\t\"cpu-threshold\": 80,\n\t\"mem-threshold\": 10,\n\t\"vpc\": \"vpc-294b9542\",\n\t\"subnet\": \"subnet-4879bf23\",\n\t\"ami\": \"\",\n\t\"timeout\": 3600,\n\t\"persist\": false,\n\t\"profile\": \"\",\n\t\"region\": \"us-east-2\",\n\t\"bucket\": \"\",\n\t\"custom-script\": \"\"\n}\n\n\n$ ./ec2-instance-qualifier --config-file=iq-config.json\n(Same output as Example 1)\n\n```\n\n**Example 3: Prompt due to an instance-type not supporting AMI**\n\n```\n$ ./ec2-instance-qualifier --instance-types=m4.xlarge,a1.large --test-suite=test-folder --cpu-threshold=95 --mem-threshold=30\nRegion Used: us-east-2\nTest Run ID: n3lytbolzfaq3np\nBucket Created: qualifier-bucket-n3lytbolzfaq3np\nInstance types [a1.large] are not supported due to AMI or Availability Zone. Do you want to proceed with the rest instance types [m5n.large] ? y/N\ny\nStack Created: qualifier-stack-n3lytbolzfaq3np\nThe execution of test suite has been kicked off on all instances. You may quit now and later run the CLI again with the bucket name flag to get the result\n```\nThe default AMI (Amazon Linux 2) is not compatible with `a1.large` architecture; therefore, the CLI prompts the user whether to continue the instance-qualifier run with compatible instance types only.\n\n\n**Example 3.5: Exit CLI after stack creation, then resume**\n\n```\n(...continued from above)\nThe execution of test suite has been kicked off on all instances. You may quit now and later run the CLI again with the bucket name flag to get the result\n^C\n\n$ ./ec2-instance-qualifier --bucket=qualifier-bucket-n3lytbolzfaq3np\nRegion Used: us-east-2\nTest Run ID: n3lytbolzfaq3np\nBucket Used: qualifier-bucket-n3lytbolzfaq3np\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n| INSTANCE TYPE | STATUS  | CPU_USAGE_ACTIVE | CPU_THRESHOLD | MEM_USED_PERCENT | MEM_THRESHOLD | ALL TESTS PASS? | TOTAL EXECUTION TIME (sec) |\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n|   m4.xlarge   | SUCCESS |      50.11       |     80.00     |       0.82       |     10.00     |      true       |           130.71           |\n+---------------+---------+------------------+---------------+------------------+---------------+-----------------+----------------------------+\n\n\nDetailed test results can be found in s3://qualifier-bucket-n3lytbolzfaq3np/Instance-Qualifier-Run-n3lytbolzfaq3np\nUser configuration and CloudFormation template are stored in the root directory of the bucket. You may check them if you want\nThe process of cleaning up stack resources has started. You can quit now\n^C\n```\nThe CLI is interrupted after tests began executing on instances, then resumed by providing the bucket flag. Quitting before the *you may quit now* messaging results in both the CloudFormation stack and S3 bucket getting deleted.\n\n## Interpreting Results\n\n### Table Headers\n\n* `INSTANCE TYPE`: instance type\n* `STATUS`: SUCCESS if max CPU and max MEM are less than their respective thresholds; FAIL otherwise\n* `CPU_USAGE_ACTIVE`: max `cpu_usage_active` recorded (p100) over the duration of instance-qualifier run\n* `CPU_THRESHOLD`: cpu threshold set by user\n* `MEM_USED_PERCENT`: max `mem_used_percent` recorded (p100) over the duration of instance-qualifier run\n* `MEM_THRESHOLD`: mem threshold set by user\n* `ALL TESTS PASS?`: true if **all** tests execute successfully (without an error code); false otherwise\n* `TOTAL EXECUTION TIME`: how long it took the instance to execute all tests in seconds\n\n## Building\nFor build instructions please consult [BUILD.md](./BUILD.md).\n\n## Communication\nIf you've run into a bug or have a new feature request, please open an [issue](https://github.com/awslabs/amazon-ec2-instance-qualifier/issues/new).\n\n##  Contributing\nContributions are welcome! Please read our [guidelines](./CONTRIBUTING.md) and our [Code of Conduct](./CODE_OF_CONDUCT.md).\n\n## License\nThis project is licensed under the [Apache-2.0](LICENSE) License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawslabs%2Famazon-ec2-instance-qualifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawslabs%2Famazon-ec2-instance-qualifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawslabs%2Famazon-ec2-instance-qualifier/lists"}