Skip to content

AWS for QA (with a touch of Ansible) โ€‹

The environments you test against increasingly live in the cloud. A QA doesn't need to be an AWS architect, but does need bearings: knowing where the logs, the data and the artifacts are, and moving through them without depending on anyone.

The five services a QA actually touches โ€‹

ServiceWhat it isWhat a QA uses it for
EC2Virtual machinesWhere test environments (or the CI runner itself) usually run
S3Object storageTest reports, artifacts, datasets, evidence
RDSManaged databasesConnecting to validate data with SQL
CloudWatchLogs and metricsDiagnosing why that E2E failed: the real error lives in the service log
IAMIdentities and permissionsUnderstanding what you can touch (and why you can't touch the rest)

The CLI: just enough to be autonomous โ€‹

bash
# Download the report the pipeline left behind
aws s3 cp s3://my-bucket/reports/run-1234/ ./reports --recursive

# Follow a service's logs live (the cloud's "docker logs")
aws logs tail /ecs/my-service --follow --since 15m

# Which environments are up?
aws ec2 describe-instances --filters "Name=tag:env,Values=qa" \
  --query "Reservations[].Instances[].[InstanceId,State.Name]"

aws s3 and aws logs tail cover 80 % of a QA's day-to-day in AWS.

Ideas worth internalizing โ€‹

  • Credentials: always temporary (SSO/roles) and never in the repo or in test code โ€” the Git doesn't forget rule applies double here.
  • Least privilege: if you can't touch production, that's on purpose. Ask for the role you need, not the master key.
  • Environments cost money: an instance spun up "to try something" and forgotten is the classic leak. Ephemeral environments (created for the test, destroyed after) are the healthy pattern.
  • Regions: resources live in one specific region; "I can't find the bucket" usually means "you're looking in the wrong region".

And Ansible? โ€‹

Ansible is a configuration automation tool: it describes in YAML (playbooks) the desired state of machines โ€” which packages, which configuration, which services โ€” and applies it idempotently (running it twice breaks nothing). It matters to a QA for one concrete reason: test environments are often built with it. When an environment "feels off", the playbook is the specification of how it should be โ€” reading it is the fast way to know what to expect from the machine.

Common mistakes โ€‹

  • Asking for help before checking CloudWatch: the reason for the failure is almost always in the service log, not in the test output.
  • Assuming the environment is the same as yesterday: in the cloud, environments get recreated; verify version and configuration before reporting a "bug" that's a half-finished deployment.
  • Shared or hardcoded personal credentials โ€” no shortcut justifies this.

Key idea

In the cloud, a QA's autonomy comes down to two questions: can I reach the log of the service that failed? Can I reach my test's data and artifacts? With S3, CloudWatch and an RDS connection, the answer is yes.

References โ€‹