AWSLive-testedreceipt

AWS CLI v2, Signature Checked Before Unpacking

The AWS CLI v2 from the upstream zip, verified with gpg against the AWS CLI Team key (pinned by fingerprint, in a GnuPG home of its own) before it is unpacked. EL 10 has no package; most installs run curl | unzip and never read the signature. Pinned version, tab completion, and a live test that runs an API call to 'Unable to locate credentials'. Original role, live-tested on Rocky Linux 10.

ansibleCloud Toolingaws

Verification

Live-tested

Really deployed to a container sandbox, proven idempotent (a second run changes nothing), verified against the role’s assertions, then torn down.

Conformance

  • Static validation (yamllint · ansible-lint)

Provenance

  • SHA-256 checksum
  • Signature (pending)

Functional

  • Live-tested - applied, verified, destroyed

Last verified 2026-09-19 · podman 4.9.3 · ansible 2.21.4 · how we verify

Documentation

aws-cli-v2

The AWS CLI v2 from the upstream zip, verified against the AWS CLI Team's OpenPGP key before a byte of it is unpacked, pinned to a version, with tab completion for every login shell. Original role for EL 10, live-tested with podman on Rocky Linux 10.

There is no package. EL 10 carries no awscli, and the v1 package that EPEL used to ship is gone. AWS distributes v2 as a zip plus a detached signature. Most installs run curl | unzip | ./aws/install and never look at the signature; this role downloads both files, checks the signature with gpg, and refuses to unpack on anything but "Good signature" from the expected fingerprint.

The key is pinned, and it lives in a GnuPG home of its own. The AWS CLI Team key (FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C, from the AWS CLI User Guide) ships with the role and is imported into /usr/local/src/aws-cli-gnupg, which holds nothing else - never into root's keyring. The role asserts the fingerprint before it trusts a verification, and the live test asserts that home holds exactly one key.

Pinned, and updated on purpose. aws_cli_v2_version is the version that gets installed; a newer one is a variable change and a run, not whatever latest happened to be that morning. Re-running with the same version is changed=0.

Proven to run, not just to exist. The live test calls sts get-caller-identity with no credentials and expects the CLI to get all the way to "Unable to locate credentials" - the binary, its bundled Python and its endpoint resolution all worked; only the credentials were missing.

License

Commercial - IaC Bazaar EULA. (c) IaC Bazaar.

Usage code & full reference need an account

The complete copy-paste usage, the full input/output reference, and operational notes are free with an account - shown here and bundled in the download. Sign in and this section fills in.

  • Variables
  • Test

Related modules

Static validatedLive test pending

aws-codebuild

privileged_mode hands the build the Docker socket, so anything it runs can read every environment variable and assume the service role. Off by default, and a PLAINTEXT variable whose name looks like a secret is refused.

View module
Static validatedLive test pending

aws-fis

FIS refuses a template with no stop condition, which reads like a guarantee - and source = 'none' is a legal stop condition meaning the experiment never halts by itself. Refused here, along with targets that grow at run time and an empty-target mode that reports success for having tested nothing.

View module
Static validatedLive test pending

aws-codeartifact

A repository with a public external connection serves whatever the public registry holds for any name it does not. This puts the connection on its own repository, reached through an upstream, and emits the origin-control commands Terraform cannot apply.

View module
Static validatedLive test pending

aws-appconfig

AppConfig exists to deploy a configuration slowly and roll it back automatically, and both halves are opt-in - the predefined AllAtOnce strategy is 100% of the fleet with zero bake time. Gradual here, and a precondition refuses an environment with no alarms, where automatic rollback has nothing to fire on.

View module
Static validatedLive test pending

aws-mwaa

webserver_access_mode defaults to PUBLIC_ONLY, and the Airflow UI is not a dashboard: anyone who reaches it can trigger a DAG, which is arbitrary Python running as the execution role. PRIVATE_ONLY here, all five log streams on, and a precondition refuses an unpinned requirements.txt or plugins.zip - where bucket write access is otherwise the same permission as code execution.

View module
Live-tested

aws-codedeploy

CodeDeploy application, deployment groups, and the platform-correct service role for automated EC2/ECS/Lambda rollouts with auto-rollback on failure.

View module