Skip to content

krissrex/sommerstudent-konsulentskolen-aws-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS CDK IaC repo for Capra Konsulentskolen del 2

Dette repoet kan clones for å lage ressurser i Amazon Web Services (AWS) med Cloud Development Kit (CDK).
Prinsippet er Infrastructure as Code (IaC), som også finnes som f.eks. CloudFormation yaml, Terraform og Pulumi osv...

Load balancer

Det finnes en felles, ferdig oppdatt ALB på Share-LoadB-1LDQS1T6W6ZW0-1701426986.eu-west-1.elb.amazonaws.com

Filer

  • cdk.json sier hvordan CDK Toolkit skal kjøre din "app" (infrastruktur-kode).
  • cdk.context.json er en cache av AWS-kontoen vi bruker.
  • package.json lister dependencies og kommandoer for npm.
  • tsconfig.jso, .prettierrc.json, .eslintrc.js er configs for bygg og lint.
  • bin/cdk-app.ts er "main entrypoint" for CDK. Denne sier hvilke Stacks som skal deployes og i hvilken AWS konto.
    • Her "constructer" du inn dine stacks (new MyStack()), hvis du har fler enn 1. For eksempel to uavhengige applikasjoner.
    • Det er også her du kobler dependencies mellom stacks sammen, via props:
      const myQueueStack = new MyQueueStack(...)
      new MyAppStack(..., { queue: myQueueStack.sqsQueue })
  • lib/stacks/my-cool-aws-stack.ts en tom stack. Her kan du legge inn din egen kode for å opprette en ECS Fargate service, Lambda, SQS, S3 bucket osv.
    • En stack er en samling med constructs som skal deployes.
    • En construct er en gjennbrukbar komponent, som består av flere construcs eller aws-ressurser.
  • lib/config.ts Instillinger for IaC. Her skal du legge inn navnet ditt så din stack ikke kolliderer med andre studenter.

Oppsett av aws-vault

Legg til følgene i filen ~/.aws/config

[profile ks2]
mfa_serial=arn:aws:iam::701519849458:mfa/konsulent
region=eu-west-1

Og kjør aws-vault add ks2
Bruk credentials fra Lastpass: Shared-Student-Workshop/ amazon.com KS2 konsulent.
Kristian har tilgang til den.

Nyttige kommandoer

  • npm run build compile typescript to js

  • npm run watch watch for changes and compile

  • npm run test perform the jest unit tests

  • npm run lint run lint to find mistakes

  • npm run cdk deploy deploy this stack to your default AWS account/region

  • npm run cdk synth emits the synthesized CloudFormation template

  • npm run cdk ls view stacks

  • aws-vault exec ks2 -- npm run cdk diff compare deployed stack with current state

  • aws-vault exec ks2 -- npm run cdk diff <stack>

  • aws-vault exec ks2 -- npm run cdk deploy -- --all deploy everything

  • aws-vault exec ks2 -- npm run cdk destroy <stack> remove a stack

  • aws-vault login ks2 open the AWS console

Ressurser

Forslag til infrastruktur du kan lage

Lambda SQS processor

Det finnes allerede en lambda i en construct i lib/constructs/SnsLambda.

Lambda SQS processor

Webapp backend

Det finnes allerede et docker-image i kontoen på capra-rest-api:latest.

Webapp backend


Hvordan dette ble satt opp

  1. Lagde prosjektet fra npx aws-cdk init app --language=typescript
  2. Importerte til IntelliJ fra "existing sources"
  3. Genererte .gitignorehttps://www.toptal.com/developers/gitignore/api/macos,linux,windows,node
  4. La inn noe ekstra i .gitignore for cdk
  5. La inn en ressurs i sommerstudent-konsulentskolen-aws-template-stack.ts
  6. Installer og sett opp Prettier, ESlint (npx eslint --init), la inn prettier config til eslint
  7. La inn config.ts og tags.ts fra aleksi, og tok de i bruk.
  8. Pekte ts output til out/
  9. La inn aws konto i aws-vault, og pekte den til eu-west-1.
  10. aws-vault exec ks2 -- npx cdk bootstrap aws://701519849458/eu-west-1
  11. Denne lager en CloudFormation stack: CDKToolkit.
  12. La inn felles infra som vpc, alb og en stack som henter de via SSM parametre
  13. aws-vault exec ks2 -- npm run cdk deploy med SharedInfraStack i app
  14. Byttet dittNavn fra capra til kristian og prøvde aws-vault exec ks2 -- npm run cdk synth
  15. Lagde et ECR repo og en dockerfile med et "API".
  16. Bydge og pushet til ECR med to scripts i repoet (build-rest-api-docker.sh, push-rest-api-docker.sh).