- Enkelt å komme i gang
- Node, Python, Java etc
- Kan inline kode for interpreted språk
- Må laste opp zip/jar for kompilerte, eller hvis man trenger feks npm avhengigheter. Kan zippe alt inkludert node_modules/
- Bør deploye fra
awscli - Man må peke lamdaen til funksjonen som skal kalles
<fil>.<exported-funksjon>, fekslambda-ocr.handler - node 0.10? fra 2013!?
- ocr kjøring ved opplasting til google drive
- funker OK
- mikk å få satt opp, gjort på en kveld
- kan brukes som statisk webserver
- enkelt å styre tilganger med policies
- lurt å bruke
awscli for å jobbe med
- Kjempelett å trigge lambda basert på events fra s3, feks
PUTnår en fil lastes opp - Får event inn som første parameter i lambdaen med info om bucket og key så man enkelt kan hente filen fra bucketen selv
- Fingranulert rettighetsstyring
- Tricky å få riktig
- Enklere når man har gjort det noen ganger (doh!)
- Lag heller roller først under IAM (identity and access management dashboardet), før man lager lambda. Mye enklere enn å gjøre det som del av det å lage ny lambda.
- Vanskelig å finne eksempler på hvilke attributter som kan settes
- MYE dokumentasjon og MYE brødtekst, vanskelig å finne det man leter etter
- Åpen url for hele verden?
- Andre ting på aws kan launches inn i et VPC (virtual private cloud) der man kan styre tilganger selv
- Virker litt umodent sammenlignet med mange andre services på AWS?
- Kan styre tilgang med IAM roller eller IP adresser
- Alle requests må signeres når man bruker IAM roller for tilgangsstyring!
- Automatisk signering med aws sdk når man bare skal gjøre http direkte
- Herk å måtte signe alle requests?
- Gammel versjon
- Ingen scripting i queries
- Veldig basic, virker litt som en "vi har det for å ha det"
#API Gateway
- Virker kraftig
- Mye å sette seg inn i
- Mapping templates i alle ledd og queryparametere og masse rart
- Virker som om man kan ha veldig fingranulert kontroll, bare man setter seg inn i det
- AWS-dokumentasjon, aka veldig verbos og mye brødtekst med lite kjøtt på beina og lite kode
- Lett å bare få opp og kjøre når man skjønte at man trengte veldig lite
- Ingen stress med tilgangsstyring når man skal kjøre en lambda
- Må 'deploye' ny versjon når man skal teste, fort gjort å glemme
- Ny versjon ute kjapt
- Støtter CORS fra ett domene, eller alle (*)
#set($keys = [])
#foreach($key in $input.params().querystring.keySet())
#set($success = $keys.add($key))
#end
#foreach($key in $input.params().headers.keySet())
#if(!$keys.contains($key))
#set($success = $keys.add($key))
#end
#end
#foreach($key in $input.params().path.keySet())
#if(!$keys.contains($key))
#set($success = $keys.add($key))
#end
#end
{
#foreach($key in $keys)
"$key": "$util.escapeJavaScript($input.params($key))"#if($foreach.hasNext),#end
#end
,
"stage": "$context.stage",
"request-id": "$context.requestId",
"api-id": "$context.apiId",
"resource-path": "$context.resourcePath",
"resource-id": "$context.resourceId",
"http-method": "$context.httpMethod",
"source-ip": "$context.identity.sourceIp",
"user-agent": "$context.identity.userAgent",
"account-id": "$context.identity.accountId",
"api-key": "$context.identity.apiKey",
"caller": "$context.identity.caller",
"user": "$context.identity.user",
"user-arn": "$context.identity.userArn",
"queryString": "$input.params().querystring",
"headers": "$input.params().header",
"pathParams": "$input.params().path",
"allParams": "$input.params()"
}
#ES ngram config
PUT /comics { "settings": { "analysis": { "filter": { "trigrams_filter": { "type": "ngram", "min_gram": 3, "max_gram": 3 } }, "analyzer": { "trigrams": { "type": "custom", "tokenizer": "standard", "filter": [ "lowercase", "trigrams_filter" ] } } } }, "mappings": { "lunch": { "properties": { "ocrtext": { "type": "string", "analyzer": "trigrams" }, "correctedtext": { "type": "string", "analyzer": "trigrams" } } } } }