HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
aws
aws-cli
Python2012–2025
aws / aws-cli

aws-cli

Universal Command Line Interface for Amazon Web Services

36Distinct people
39Mentions
0Explicit recommenders
17.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Universal Command Line Interface for Amazon Web Services

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year39 dated mentions

Observed mentions: 2012-12-22 08:37:30 UTC to 2025-09-03 03:06:50 UTC.

0510152012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 13 mentions; 2 submissions, 11 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC211
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC413
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC000
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC110
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC404
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC13211
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC716
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC514

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
aws-cli This package provides a unified command line interface to Amazon Web Services. The aws-cli package works on Python versions: 3.9.x 3.10.x 3.11.x 3.12.x 3.13.x 3.14.x Attention! We recommend that all customers regularly monitor the Amazon Web Services Security Bulletins website for any important security bulletins related to aws-cli. Jump to: Notices Installation Getting Started Getting Help More Resources Notices On 2024-11-13, support for macOS version 10.15 was dropped. To use up-to-date versions of AWS CLI v2, customers using macOS 10.15 or prior should upgrade to macOS 11 or later. For more information, please see this blog post. Installation AWS CLI v2 can easily be installed on most standard platforms: MacOS pkg installer Linux x86-64 executable installer Linux arm64 (aarch64) executable installer Windows MSI installer You can find more detailed installation instructions here. If you want to run the v2 development branch of the CLI, see the "CLI Dev Version" section below. CLI Releases The release notes for the AWS CLI can be found here. Command Completion The aws-cli package includes a very useful command completion feature. This feature is not automatically installed so you need to configure it manually. To enable tab completion for bash either use the built-in command complete: $ complete -C aws_completer aws Or add bin/aws_bash_completer file under /etc/bash_completion.d, /usr/local/etc/bash_completion.d or any other bash_completion.d location. For tcsh: $ complete aws 'p/*/`aws_completer`/' You should add this to your startup scripts to enable it for future sessions. For zsh, run bashcompinit and compinit, then use the built-in complete command: $ autoload bashcompinit && bashcompinit $ autoload -Uz compinit && compinit $ complete -C '/usr/local/bin/aws_completer' aws Replace /usr/local/bin/aws_completer with the path returned by which aws_completer if different. Add these commands to your ~/.zshrc to enable completion in future sessions. Getting Started Before using aws-cli, you need to tell it about your AWS credentials. You can do this in several ways: Environment variables Shared credentials file Config file IAM Role The quickest way to get started is to run the aws configure command: $ aws configure AWS Access Key ID: foo AWS Secret Access Key: bar Default region name [us-west-2]: us-west-2 Default output format [None]: json To use environment variables, do the following: $ export AWS_ACCESS_KEY_ID=<access_key> $ export AWS_SECRET_ACCESS_KEY=<secret_key> To use the shared credentials file, create an INI formatted file like this: [default] aws_access_key_id=foo aws_secret_access_key=bar [testing] aws_access_key_id=foo aws_secret_access_key=bar and place it in ~/.aws/credentials (or in %UserProfile%\.aws/credentials on Windows). If you wish to place the shared credentials file in a different location than the one specified above, you need to tell aws-cli where to find it. Do this by setting the appropriate environment variable: $ export AWS_SHARED_CREDENTIALS_FILE=/path/to/shared_credentials_file To use a config file, create a configuration file like this: [default] aws_access_key_id=<default access key> aws_secret_access_key=<default secret key> # Optional, to define default region for this profile. region=us-west-1 [profile testing] aws_access_key_id=<testing access key> aws_secret_access_key=<testing secret key> region=us-west-2 and place it in ~/.aws/config (or in %UserProfile%\.aws\config on Windows). If you wish to place the config file in a different location than the one specified above, you need to tell aws-cli where to find it. Do this by setting the appropriate environment variable: $ export AWS_CONFIG_FILE=/path/to/config_file As you can see, you can have multiple profiles defined in both the shared credentials file and the configuration file. You can then specify which profile to use by using the --profile option. If no profile is specified the default profile is used. In the config file, except for the default profile, you must prefix each config section of a profile group with profile. For example, if you have a profile named "testing" the section header would be [profile testing]. The final option for credentials is highly recommended if you are using aws-cli on an EC2 instance. IAM Roles are a great way to have credentials installed automatically on your instance. If you are using IAM Roles, aws-cli will find them and use them automatically. Other Configurable Variables In addition to credentials, a number of other variables can be configured either with environment variables, configuration file entries or both. The following table documents these. Variable Option Config Entry Environment Variable Description profile --profile profile AWS_PROFILE Default profile name region --region region AWS_DEFAULT_REGION Default AWS Region config_file     AWS_CONFIG_FILE Alternate location of config credentials_file     AWS_SHARED_CREDENTIALS_FILE Alternate location of credentials output --output output AWS_DEFAULT_OUTPUT Default output style ca_bundle --ca-bundle ca_bundle AWS_CA_BUNDLE CA Certificate Bundle access_key   aws_access_key_id AWS_ACCESS_KEY_ID AWS Access Key secret_key   aws_secret_access_key AWS_SECRET_ACCESS_KEY AWS Secret Key token   aws_session_token AWS_SESSION_TOKEN AWS Token (temp credentials) cli_timestamp_format   cli_timestamp_format   Output format of timestamps metadata_service_timeout   metadata_service_timeout AWS_METADATA_SERVICE_TIMEOUT EC2 metadata timeout metadata_service_num_attempts   metadata_service_num_attempts AWS_METADATA_SERVICE_NUM_ATTEMPTS EC2 metadata retry count parameter_validation   parameter_validation   Toggles local parameter validation Examples If you get tired of specifying a --region option on the command line all of the time, you can specify a default region to use whenever no explicit --region option is included using the region variable. To spe
Read the full README on GitHub

What Hacker News says

39 sources
I believe they're discussing that awscli was targeting Python 2.x for the longest time, e.g. https://github.com/aws/aws-cli/blob/0.4.1/setup.py#L48 up through https://github.com/aws/aws-cli/blob/1.19.112/setup.py#L64 from 4 years ago, seemingly cutting over to Py3-only starting with https://github.com/aws/aws-cli/blob/1.20.0/setup.py#L62 I didn't go digging into it, but I'd guess they used the ubiquitous "six" library for backporting unicode functionality, but the point is likely "but why start underwater?!"
In Python has had async for 10 years – why isn't it more popular?
I got bit by this a month ago. You can disable the new behavior by setting 2 environment variables export AWS_REQUEST_CHECKSUM_CALCULATION=when_required export AWS_RESPONSE_CHECKSUM_CALCULATION=when_required or adding the following 2 lines to a profile in ~/.aws/config request_checksum_calculation=when_required response_checksum_validation=when_required Or just pin your AWS SDK to version before the following. <https://github.com/aws/aws-sdk-go-v2/blob/release-2025-01-15...> <https://github.com/boto/boto3/issues/4392> <https://github.com/aws/aws-cli/blob/1.37.0/CHANGELOG.rst#L19> <https://github.com/aws/aws-cli/blob/2.23.0/CHANGELOG.rst#223...> <https://github.com/aws/aws-sdk-java-v2/releases/tag/2.30.0> <https://github.com/aws/aws-sdk-net/releases/tag/3.7.963.0> <https://github.com/aws/aws-sdk-php/releases/tag/3.337.0> and wai
Read the rest
t for your S3 Compatible Object store to add a fix to support this.
In AWS S3 SDK breaks its compatible services
Interesting example given you can no longer do that with the latest (v2) version of the AWS CLI, since it isn't published to PyPI due to how big of a nightmare AWS found supporting that to be. There is a very nice comment talking through some of the reasoning here that is worth a read: https://github.com/aws/aws-cli/issues/4947#issuecomment-5860... I am quite annoyed v2 isn't in PyPI as it makes updating to v2 a sizable project in some cases and v1 does not support all services, but also quite understand their reasoning. Granted the tradeoffs may be weigh out differently for an internal tool as the post describes, or if distributing the tool to a more constrained audience.
In Common Infrastructure Errors I've Made

Ask HN: What unexpected behaviors persist in software you use?

I just got bitten by a problem in AWS CLI where S3 files won't sync when you expect them to: https://github.com/aws/aws-cli/issues/3273 This got me thinking. What are the major unexpected behaviors, or "gotchas", exist in the software you use? Where do you see the "Principle of Least Astonishment" violated? https://en.wikipedia.org/wiki/Principle_of_least_astonishment I think we may all benefit from sharing with each other. Hopefully it'll save some of us from being bitten by odd software behavior. I'm referring to tools, programming languages, database and server software, etc. I think it would be really useful to raise awareness of these issues.
1 points · Open discussion
I will argue until the day I die: curl | bash is actually more secure than most traditional software delivery mechanisms. Slightly, but meaningfully. With curl | bash, the URL of the bash script is right there. I can copy it, plug it into my browser, and inspect with ease the shell script that will run. If its on Github or a similar site, I can see in plain language the exact organization who published it (I wouldn't implicitly trust whoever "armosec" is, but I would trust, for example, "kubernetes", "microsoft", or "google" e.g.). Alternatives? - For something like this, to generate a report on whether you're affected? Maybe just a copy-paste bit of code? Isn't that the same thing, but less convenient? - apt-get install something. Who published it? Does apt have security scanning (no lol)? Where's the source code for that package (scatte
Read the rest
red to the wind no doubt)? Does it have reproducible builds so I can be certain the code I eventually find is what I install (lol no. but bash scripts do!) - Let's talk about `snap` for a second; Did you know that there's a `snap install aws-cli` package available [1], published by "Amazon Web Services", with a verified checkmark. Sounds great. Except, for years, no one on the actual aws-cli team had any idea where it came from [2]. They didn't authorize it, and they don't maintain it. It turns out, it was probably the result of a hackathon project by one AWS engineer. "Better security practices" for sure! The only legitimate risk I've heard about 'curl | bash' is that web servers can detect whether the site is being accessed by a browser versus curl, and serve different content. Legit risky, good to educate about; don't curl | bash from sites you don't recognize. But this is a GitHub link! I would agree that package managers are superior from a security angle, if most package managers had strong security review processes, on both the package content and the publisher. The problem is: they don't. They're all lacking in this regard, from apt to flatpak to the Apple App Store. The most sophisticated is probably the Play Store, but binary command line distribution channels are nowhere close to having reproducible builds, verified Real ID developers, static analysis on distributed binaries, etc. Package managers are literally just "curl | bash" with some steps added. By and large, anyone can publish anything under any name; educating people that they're "safe" is actually a massive disservice. [1] https://snapcraft.io/aws-cli [2] https://github.com/aws/aws-cli/issues/5142
In Kubernetes ingress-nginx controller vulnerability

Showing the 15 most recent of 39 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.