Giter Club home page Giter Club logo

02-lambda-sls-cd-only's Introduction

GitHub actions, AWS Lambda med API Gateway og AWS SAM

  • I denne øvingen skal vi se på AWS SAM og hvordan vi kan deploye en AWS Lambdafunksjon. Vi skal også bruke AWS tjenesten "Comprehend" for å finne "stemningen" (Sentiment) i en tekst- og om den er negativt eller positivt ladet.

  • Deployment og bygg skal gjøres med verktøyet "AWS SAM", vi skal senere sette dette i en pipeline med GitHub actions.

Før dere starter

  • Dere trenger en GitHub Konto
  • Lag en fork av dette repositoriet inn i din egen GitHub konto
  • URL for innlogging er https://244530008913.signin.aws.amazon.com/console

  • Brukernavnet og passordet er gitt i klasserommet

  • Fra hovedmenyen, søk etter tjenesten "cloud9"

  • Velg "your environments" fra venstremenyen hvis du ikke ser noen miljøer med ditt navn

  • Hvis du ikke ser noe å trykke på som har ditt navn, pass på at du er i rett region (gitt i klasserommet)

  • Velg "Open IDE"

Start en ny terminal i Cloud 9 ved å trykke (+) symbolet på tabbene Alt text

Klone din Fork (av dette repoet) inn i ditt Cloud 9 miljø

Fra terminalen i Cloud 9, lag en klone.

git clone https://github.com/≤github bruker>/02-lambda-sls-cd-only.git

Test bygg kjør lambdafunkskonen med SAM fra Cloud 9

I cloud 9, åpne en Terminal

cd 02-lambda-sls-cd-only
cd sentiment-demo/
sam build --use-container

Dette vil ta litt tid første gangen du gjør operasjonen. Du kan teste funksjonen uten å deploye den til AWS ved å kjøre kommandoen. Dette er veldig nyttig under utvikling når man ønsker så rask feedback som mulig.

sam local invoke -e event.json 

Event.json filen inneholder en request, nøyaktig slik API Gateway sender den til handler metoden/funksjonen. Du skal få en respons omtrent som denne

{"statusCode": 200, "headers": {"Content-Type": "application/json"}, "body": "{\"sentiment \": \"{\\\"Sentiment\\\": \\\"NEGATIVE\\\", \\\"SentimentScore\\\": {\\\"Positive\\\": 0.00023614335805177689, \\\"Negative\\\": 0.9974453449249268, \\\"Neutral\\\": 0.00039782875683158636, \\\"Mixed\\\": 0.0019206495489925146}, \\\"ResponseMetadata\\\": {\\\"RequestId\\\": \\\"c3367a61-ee05-4071-82d3-e3aed344f9af\\\", \\\"HTTPStatusCode\\\": 200, \\\"HTTPHeaders\\\": {\\\"x-amzn-requestid\\\": \\\"c3367a61-ee05-4071-82d3-e3aed344f9af\\\", \\\"content-type\\\": \\\"application/x-amz-json-1.1\\\", \\\"content-length\\\": \\\"168\\\", \\\"date\\\": \\\"Mon, 18 Apr 2022 12:00:06 GMT\\\"}, \\\"RetryAttempts\\\": 0}}\"}"}END RequestId: d37e4849-b175-4fa6-aa4b-0031af6f41a0
REPORT RequestId: d37e4849-b175-4fa6-aa4b-0031af6f41a0  Init Duration: 0.42 ms  Duration: 1674.95 ms    Billed Duration: 1675 ms        Memory Size: 128 MB     Max Memory Used: 128 MB
  • Ta en ekstra kikk på event.json. Dette er objektet AWS Lambda får av tjenesten API Gateway .
  • Forsøke å endre teksten i "Body" delen av event.json - klarer å å endre sentimentet til positivt ?

Deploy med SAM fra Cloud 9

  • Du kan også bruke SAM til å deploye lambdafunksjonen fra Cloud 9
  • NB! Du må endre s3-prefix parameter name til noe unikt. Legg på ditt brukeranvn eller noe i slutten av navnet, for eksempel; --stack-name sam-sentiment-ola
sam deploy --guided 

Dere får da et interaktivt UI, og må gjøre følgende valg, bytt ut "glennbech" med ditt egent navn

     Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [sam-sentiment-glennbech]: sam-sentiment-<ditt navn> 
        AWS Region [eu-west-1]: eu-west-1
        Parameter UnleashToken [12345]: <enter>
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
        Confirm changes before deploy [Y/n]: Y
        #SAM needs permission to be able to create roles to connect to the resources in your template
        Allow SAM CLI IAM role creation [Y/n]: Y
        SentimentFunction may not have authorization defined, Is this okay? [y/N]: Y
        Save arguments to configuration file [Y/n]: Y
        SAM configuration file [samconfig.toml]: <enter>
        SAM configuration environment [default]: <enter> 

Du kan bruke for eksempel postman eller Curl til å teste ut tjenesten. får dere etter SAM deploy.

curl -X POST \
  <URL> \
  -H 'Content-Type: text/plain' \
  -H 'cache-control: no-cache' \
  -d 'The laptop would not boot up when I got it. It would let me get through a few steps of the setup process, then it would become unresponsive and eventually shut down, then restar, '

Men... dette er jo ikke veldig "DevOps" og vil ikke fungere i et større team. Vi trenger både CI og CD for å kunne jobbe effektivt sammen om denne funksjonen.

Ekstraoppgaver

  • Bruk AWS lambda brukergrensesnitet til å lage en Lambda i et valgfritt språk
  • Klarer du å lage en Javabasert Lambda ?

02-lambda-sls-cd-only's People

Contributors

glennbech avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.