Skip to content

Repository files navigation

AWS and DevOps portfolio

Each consulting service has a card that identifies the client problem, links the supporting public repository, points to the first artifact to review, and explains what the repository can verify without an AWS account.

CI License: MIT Portfolio index

AWS and DevOps consulting portfolio: services, artifacts, and make verify

What this proves

  • The catalog lists fourteen services backed by sixteen public repositories: one per service, one additional lab and this index. Each service repository holds a report, runbook or working code as evidence beyond the service description.
  • A single make verify command in each service repository checks its evidence offline without an AWS account or credentials.
  • Common requirements govern repository files, README section order, ADR format and descriptions. This repository checks compliance across the collection.
  • Every repository marks its deliverables as fictional, using Harbor Goods, a fictional mid-size retailer, and example account IDs from AWS documentation.

Inspect the deliverable

Choose the service closest to your problem, then follow its card to the repository, the first artifact to review and the service on Upwork.

Service Repository Strongest artifact
Terraform on AWS audit and fix terraform-aws-rescue-lab Diagnosis report
CI/CD pipeline to AWS github-actions-aws-oidc-lab Deploy workflow
AWS security and IAM review aws-iam-security-review-sample Security review report
Kubernetes on Amazon EKS terraform-aws-eks-gitops-lab EKS module
Containerize and deploy to ECS Fargate aws-ecs-fargate-deploy-lab ECS service definition
AWS landing zone for a new project terraform-aws-landing-zone-lab Service control policies
DevOps and Well-Architected assessment aws-well-architected-assessment-sample Assessment report
AWS cost optimization audit aws-cost-optimization-audit-sample Cost audit report
Migration to AWS aws-migration-runbook-sample Wave 1 cutover runbook
AWS workshop and mentoring aws-devops-workshop-labs Labs
RAG on Amazon Bedrock terraform-aws-bedrock-rag-lab Evaluation report
AI agents on Amazon Bedrock AgentCore terraform-aws-agentcore-agent-lab Cedar policies
GenAI release pipeline and evaluations bedrock-genaiops-release-gate-lab Release gate report
GenAI architecture and cost review aws-genai-architecture-review-sample Review report

Terraform on AWS audit and fix

Terraform on AWS audit and fix

  • Client problem: Terraform nobody trusts: local state, copy-pasted environments and plans that could delete production data.
  • Repository: terraform-aws-rescue-lab, lab
  • Strongest artifact: Diagnosis report. 10 findings ranked by risk, each with evidence and a fix, plus the repair order and a state migration.
  • Verification scope: Checkov and tflint counts before and after, terraform test with a mocked provider and plan-gate fixtures, all offline; make demo replays the state migration against a local emulator.
  • Upwork offer: Terraform on AWS audit and fix on Upwork

CI/CD pipeline to AWS

CI/CD pipeline to AWS

  • Client problem: Long-lived AWS keys in CI, and deploys that can ship an image nobody scanned.
  • Repository: github-actions-aws-oidc-lab, lab
  • Strongest artifact: Deploy workflow. Build once, Trivy gate, OIDC role, push by digest, deploy, then fail the run if ECS rolled back.
  • Verification scope: pytest policy tests, mocked terraform test, tflint, Checkov, actionlint and zizmor, with no AWS credentials.
  • Upwork offer: CI/CD pipeline to AWS on Upwork

AWS security and IAM review

AWS security and IAM review

  • Client problem: An account that grew without an access model, with administrator CI roles, root keys and public buckets.
  • Repository: aws-iam-security-review-sample, fictional sample deliverable
  • Strongest artifact: Security review report. 9 ranked findings with evidence, impact and policy rewrites, then quick wins and a baseline SCP.
  • Verification scope: 17 offline checks and Checkov run on the account before and after the fixes; CI regenerates the evidence and diffs it.
  • Upwork offer: AWS security and IAM review on Upwork

Kubernetes on Amazon EKS

Kubernetes on Amazon EKS

  • Client problem: A team that needs Kubernetes on AWS without a hand-built cluster or a branch per environment.
  • Repository: terraform-aws-eks-gitops-lab, lab
  • Strongest artifact: EKS module. Cluster, access entries, add-ons and Pod Identity per controller, with mocked terraform test runs.
  • Verification scope: Mocked terraform test, Helm lint and render assertions, and kubeconform schema checks; helm test needs a cluster and runs only live.
  • Upwork offer: Kubernetes on Amazon EKS on Upwork

Containerize and deploy to ECS Fargate

Containerize and deploy to ECS Fargate

  • Client problem: An application that runs on one machine and needs a repeatable, reversible path to AWS.
  • Repository: aws-ecs-fargate-deploy-lab, lab
  • Strongest artifact: ECS service definition. Task hardening, the deployment circuit breaker and alarm-based rollback in one Terraform file.
  • Verification scope: App tests, mocked terraform test, Checkov, Trivy and hadolint, plus a smoke test of the image under ECS constraints.
  • Upwork offer: Containerize and deploy to ECS Fargate on Upwork

AWS landing zone for a new project

AWS landing zone for a new project

DevOps and Well-Architected assessment

DevOps and Well-Architected assessment

  • Client problem: A team that ships often, recovers slowly and cannot tell which risk to fix first.
  • Repository: aws-well-architected-assessment-sample, fictional sample deliverable
  • Strongest artifact: Assessment report. Scores across six pillars and the DevOps lens, the ranked backlog, the roadmap and an evidence register.
  • Verification scope: Scripts regenerate every table from the recorded answers, and an independent test implementation recomputes each number.
  • Upwork offer: DevOps and Well-Architected assessment on Upwork

AWS cost optimization audit

AWS cost optimization audit

  • Client problem: An AWS bill that grows every month with no owner for most of the spend.
  • Repository: aws-cost-optimization-audit-sample, fictional sample deliverable
  • Strongest artifact: Cost audit report. Ranked savings split into quick wins and planned work, commitment sizing, tagging plan and assumptions.
  • Verification scope: Calculation tests derive each saving again from hours, rates and gigabytes; CI checks the evidence and the PDF against a fresh run.
  • Upwork offer: AWS cost optimization audit on Upwork

Migration to AWS

Migration to AWS

  • Client problem: A data-center application that must move to AWS with a short outage and a way back.
  • Repository: aws-migration-runbook-sample, fictional sample deliverable
  • Strongest artifact: Wave 1 cutover runbook. Timed steps with checkpoints, rollback triggers, validation queries and acceptance criteria.
  • Verification scope: Plan and runbook rules, pytest, mocked terraform test, TFLint and Checkov, with no AWS credentials.
  • Upwork offer: Migration to AWS on Upwork

AWS workshop and mentoring

AWS workshop and mentoring

  • Client problem: A team that needs hands-on practice with AWS, Terraform, CDK or CI/CD before it changes its own systems.
  • Repository: aws-devops-workshop-labs, teaching labs
  • Strongest artifact: Labs. Numbered labs, each with objectives, starter code, a solution, tests and reset steps.
  • Verification scope: Each lab's tests run against its solution with no AWS account.
  • Upwork offer: AWS workshop and mentoring on Upwork

RAG on Amazon Bedrock

RAG on Amazon Bedrock

  • Client problem: Staff answer policy questions by searching hundreds of documents by hand, and answers are slow and inconsistent.
  • Repository: terraform-aws-bedrock-rag-lab, lab
  • Strongest artifact: Evaluation report. Evaluation results, the chunking decision, guardrail evidence, cost per question and risks.
  • Verification scope: Retrieval and answer evaluations against a golden set with a stubbed Bedrock client, pytest, mocked terraform test, tflint, Checkov and Semgrep, with no AWS credentials.
  • Upwork offer: RAG on Amazon Bedrock on Upwork

AI agents on Amazon Bedrock AgentCore

AI agents on Amazon Bedrock AgentCore

  • Client problem: An assistant that must act on orders and returns, not just answer, with every action authorized per person.
  • Repository: terraform-aws-agentcore-agent-lab, lab
  • Strongest artifact: Cedar policies. The policies the gateway enforces, tested against an allow and deny table.
  • Verification scope: Scripted agent sessions, including a model that misbehaves on purpose, Cedar policy tests, mocked terraform test and an image smoke test, with no AWS credentials.
  • Upwork offer: AI agents on Amazon Bedrock AgentCore on Upwork

GenAI release pipeline and evaluations

GenAI release pipeline and evaluations

  • Client problem: Prompt, model and guardrail changes that can quietly make answers worse, weaken safety or raise the bill.
  • Repository: bedrock-genaiops-release-gate-lab, lab
  • Strongest artifact: Release gate report. What the gate decided for each change, cost per request and the risks it leaves.
  • Verification scope: The gate replays recorded runs for six changes, with pytest, mocked terraform test, actionlint and zizmor, and no AWS credentials.
  • Upwork offer: GenAI release pipeline and evaluations on Upwork

GenAI architecture and cost review

GenAI architecture and cost review

  • Client problem: A generative AI workload on Amazon Bedrock that works, but costs too much and leaks risk nobody ranked.
  • Repository: aws-genai-architecture-review-sample, fictional sample deliverable
  • Strongest artifact: Review report. Findings ranked by risk, each with the code that fixes it, and a monthly cost model before and after.
  • Verification scope: Scripted checks recompute each finding and the cost model from the exports; mocked terraform test covers the fixes, all offline.
  • Upwork offer: GenAI architecture and cost review on Upwork

More

  • cdk-python-nag-pipeline-lab, lab: An AWS CDK v2 app in Python whose pipeline stops on any unacknowledged cdk-nag finding during synth.

Scenario and acceptance criteria

A buyer or CTO needs to assess the work supporting a service in a few minutes, while an engineer needs to run it before a call. Both depend on this index keeping its information accurate as its repositories evolve on separate schedules.

Each repository in this portfolio is a separate engagement with Harbor Goods, a fictional mid-size retailer. Details such as its accounts and systems belong to that engagement and do not carry over between repositories.

For the index to pass its checks:

  • each service listed in data/catalog.yaml must have a corresponding card with matching information;
  • each catalog entry must point to an existing repository containing README.md, LICENSE, CHANGELOG.md, two or more ADRs and docs/assets/cover.png;
  • each README must use the prescribed section order and include a link to this index;
  • each card must use a cover derived from its repository's current cover;
  • each artifact link must resolve to the file at the specified path;
  • each repository must follow the description template "Demonstrates capability through artifact; verified scope." and include aws, devops, portfolio and its type topic among its topics.

All these checks run offline through make verify. The check documentation pairs each check with the rule behind it.

Architecture

AWS and DevOps portfolio: from service card to engagement

Context: card to repository and offer; the catalog renders cards and checks repositories

Service descriptions have a single source: data/catalog.yaml. From that catalog, make readme generates this README's cards. To check their accuracy, make verify inspects local checkouts of the sibling repositories. CI first clones the public repositories into a temporary directory, and a weekly scheduled run repeats the check so a change in a listed repository shows up here too.

A separate command, make test-live, compares the catalog against GitHub's live settings without modifying them. The diagram's draw.io source lives at docs/diagrams/portfolio-context.drawio.

Verify locally

Local verification requires GNU Make, sibling repository checkouts beside this repository, and uv 0.12.19, the version CI pins. uv installs Python 3.13 along with the packages pinned in uv.lock. Verification requires neither an AWS account nor credentials.

make setup    # install the pinned toolchain into .venv
make verify   # ruff, pytest, then the catalog check across every repository

For checkouts in another location, REPOS_ROOT specifies their parent directory; alternatively, the CI script can clone the repositories:

REPOS_ROOT=/tmp/portfolio scripts/clone-siblings.sh
make verify REPOS_ROOT=/tmp/portfolio

A successful run ends with the check count and the success line:

pass  cdk-python-nag-pipeline-lab: required files
78 passed, 0 failed, 0 skipped
verify: all checks passed

After the initial uv sync, verification takes approximately five seconds.

The optional make test-live command runs manually and makes no changes. Using the token supplied by gh auth token, it queries the GitHub API for each repository's description, topics, visibility and social preview. Because this repository provisions no AWS resources, the live test accesses no AWS account.

Repository map

.
├── data/catalog.yaml          # services, offers, repositories, descriptions and topics
├── assets/                    # card covers, 640x480 copies of each repository cover
├── scripts/portfolio_check/   # model, README rules, card rendering, checks, cover copy, live comparison
├── scripts/clone-siblings.sh  # clones every listed repository for CI
├── tests/                     # pytest for every rule, on fixtures and on the real catalog
├── docs/checks.md             # each check and the rule it enforces
├── docs/adr/                  # decisions
├── docs/diagrams/             # context diagram, draw.io source and PNG
└── docs/assets/               # social preview and its spec

Decisions and trade-offs

Architecture decision records follow the Fundamentals of Software Architecture (2nd ed.) format.

Number Title Status
0001 Generate the service cards from one catalog file Accepted
0002 Check the sibling repositories offline from local clones Accepted
0003 Keep card covers as small copies in plain Markdown Accepted
0004 Compare with live GitHub settings only on demand, read-only Accepted

Security and quality gates

CI invokes shared workflows from gamaware/.github at a pinned commit SHA before executing make verify:

Check Purpose
lint-docs: markdownlint, lychee, Vale Prevent broken links from undermining the index
lint-actions: actionlint, zizmor Keep workflow access narrow and free of injection
secrets: gitleaks Keep credentials out of repository history
security: Semgrep, Trivy Check Python scripts and dependencies for security issues
verify: ruff, pytest, catalog check Confirm agreement between repository contents and cards

Jobs receive neither cloud credentials nor an id-token. Pre-commit checks cover file hygiene, detect-secrets, gitleaks, markdownlint, actionlint, zizmor, shellcheck, shellharden, ruff and conventional commits. The main branch runs OpenSSF Scorecard.

Limits and production adaptations

  • Verification establishes that the named report path exists and that README sections follow the required order. It makes no assessment of report quality.
  • Card numbers come directly from repository READMEs. Comparisons with source repositories cover only artifact paths and cover images.
  • Upwork offer URLs are not stable and Upwork blocks automated requests, so each card links the Upwork profile and verification does not retrieve Upwork pages.
  • Public repositories and a GitHub token are prerequisites for make test-live. The command reports differences without correcting them.

Related work

License

MIT

About

Demonstrates an AWS and DevOps consulting portfolio through one card per service, each linked to its repository and Upwork offer; verified offline by a catalog check across every repository.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages