Skip to content

Prerequisites

Install and version-check tooling before the first deploy.

Tools and access

Requirement Detail
AWS CLI v2 ≥ 2.37.3 (aws eventsv2)
Python 3 3.14 (packaging + Lambda python3.14)
Profiles lab and dev — distinct accounts, same org (share is lab → dev)
Region ap-southeast-2
Mutation gate export EB_ENHANCED_ALLOW_AWS=1 before teardown scripts
Live feed Existing iot_talk_* events/telemetry rules in lab (devices + fleet); Verify can also smoke with CLI put-events

Install AWS CLI v2

Official install guide. Require ≥ 2.37.3 (this lab uses 2.37.4).

curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
aws --version
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
mkdir -p "$HOME/.local/bin" "$HOME/.local/share/aws-cli"
./aws/install \
  --bin-dir "$HOME/.local/bin" \
  --install-dir "$HOME/.local/share/aws-cli" \
  --update
export PATH="$HOME/.local/bin:$PATH"
aws --version

Keep $HOME/.local/bin ahead on PATH. On ARM use awscli-exe-linux-aarch64.zip.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
hash -r
aws --version

Confirm the version

which aws
aws --version
~/.local/bin/aws
aws-cli/2.37.4 Python/3.14.6 Linux/7.0.0-30-generic exe/x86_64.ubuntu.24
python3 - <<'PY'
import subprocess
v = subprocess.check_output(["aws", "--version"], text=True)
ver = v.split("/")[1].split(" ")[0]
maj, minor, patch = (int(x) for x in ver.split(".")[:3])
assert (maj, minor, patch) >= (2, 37, 3), v
print("ok:", v.strip())
PY
aws eventsv2 help >/dev/null && echo eventsv2_ok
python3 --version
ok: aws-cli/2.37.4 Python/3.14.6 Linux/7.0.0-30-generic exe/x86_64.ubuntu.24
eventsv2_ok
Python 3.14.6

eventsv2

CLI 2.37.2 introduced aws eventbridgev2; 2.37.3 renamed it to aws eventsv2. Prefer eventsv2. Tear-down helpers in scripts/lib.sh accept either name via eb_cli.

Mutation gate

Tear-down scripts refuse to change AWS unless EB_ENHANCED_ALLOW_AWS=1 is set. Deploy and Verify are plain AWS CLI in the Demo pages (no deploy scripts). Read-only helpers (capture-accounts.sh) do not need the gate.

Set it in the same shell as the profile when tearing down:

export AWS_PROFILE=lab AWS_REGION=ap-southeast-2 EB_ENHANCED_ALLOW_AWS=1
(no output)

Unset gate

Without it, teardown scripts stop with Refusing to mutate AWS and change nothing — a deliberate guard, not an error.

Next: Check profiles.

References