Slide 1

Slide 1 text

ੲͷࣗ෼ʹڭ͍͑ͨ Lambdaͷσόοάํ๏ @tmk2154 ࠤ౻ ஐथ

Slide 2

Slide 2 text

• ๭SIerʹ຿ΊΔSE
 →αʔόϨεΤϯδχΞʹస৬༧ఆ • AWS͕޷͖Ͱษڧத
 ˠAmazon Connectͷຊॻ͍ͨ
 ɹࠓ౓ٕज़ॻయͰFaaSͷຊॻ͖·͢ • ࠷ۙͷڵຯ
 AWSɿLambdaɺSAM
 TypescriptɺVue • ޷͖ͳອը
 νΣϯιʔϚϯ @tmk2154 ࣗݾ঺հ

Slide 3

Slide 3 text

ࠓ೔࿩͢಺༰ AWS Lambda Amazon API Gateway Amazon DynamoDB AWS Cloud ·ͣίίͷ࿩ AWS Lambda Amazon API Gateway Amazon DynamoDB AWS Cloud ࣍ʹίίͷ࿩

Slide 4

Slide 4 text

Lambdaͷ࡞੒ͱςετ • LambdaΛςετ͢Δ৔߹ɺҎԼͷ2ύλʔϯ͕͋Δ • WebίϯιʔϧͰςετ
 ϝϦοτɿ؆୯ɺ͙͢ʹ࣮ߦͰ͖Δ
 σϝϦοτɿखಈςετɺϩά֬ೝ… • AWS CLI SAMΛ࢖ͬͯϩʔΧϧ؀ڥͰςετ
 ϝϦοτɿςετ࣮ߦ͕ߴ଎ɺ࠶ݱੑ͕ߴ͍
 σϝϦοτɿηοτΞοϓ஌ࣝ͸ඞཁ

Slide 5

Slide 5 text

Lambdaͷ࡞੒ͱςετ SAM CLI Πϯετʔϧࢀরɿhttps://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html • LambdaΛςετ͢Δ৔߹ɺҎԼͷ2ύλʔϯ͕͋Δ • WebίϯιʔϧͰςετ
 ϝϦοτɿ؆୯ɺ͙͢ʹ࣮ߦͰ͖Δ
 σϝϦοτɿखಈςετɺϩά֬ೝ… • AWS CLI SAMΛ࢖ͬͯϩʔΧϧ؀ڥͰςετ
 ϝϦοτɿςετ࣮ߦ͕ߴ଎ɺ࠶ݱੑ͕ߴ͍
 σϝϦοτɿηοτΞοϓ஌ࣝ͸ඞཁ

Slide 6

Slide 6 text

Lambda࡞੒(ίϯιʔϧ) • Webίϯιʔϧ͔Βͷ࣮ߦ print(e)

Slide 7

Slide 7 text

Πϕϯτ࡞੒(ίϯιʔϧ)

Slide 8

Slide 8 text

ςετ࣮ߦ(ίϯιʔϧ)

Slide 9

Slide 9 text

SAM(ServerlessApplicationModel)ͱ͸ •ར఺ ✦୯ҰͷσϓϩΠઃఆ ✦ϩʔΧϧͰͷςετٴͼσόοά ✦૊ΈࠐΈͷϕετϓϥΫςΟε ✦։ൃπʔϧͱͷ౷߹ ✦AWS CloudFormation •αʔόʔϨεΞϓϦέʔγϣϯ
 ߏங༻ͷΦʔϓϯιʔεϑϨʔϜϫʔΫ
 YAML΍JSONͰؔ਺ɺAPIɺDBɺΠϕ ϯτιʔεϚοϐϯάΛදݱͰ͖·͢

Slide 10

Slide 10 text

Lambda࡞੒(SAM) ίϚϯυɿ sam init [OPTIONS] (αʔόϨεΞϓϦͷ਽ܗ࡞੒)
 $ sam init -r python3.7

Slide 11

Slide 11 text

Lambda࡞੒(SAM) -BNCEB ࣮ߦϑΝΠϧ ΞϓϦ ߏ੒ϑΝΠϧ

Slide 12

Slide 12 text

Lambda࡞੒(SAMͷߏ੒)

Slide 13

Slide 13 text

Πϕϯτ࡞੒(SAM) ίϚϯυɿ sam local generate-event [OPTIONS] COMMAND [ARGS]…
 (Lambdaʹ౉͢JSONΠϕϯτͷ࡞੒)
 $ sam local generate-event apigateway —-help $ sam local generate-event apigateway aws-proxy +40/Πϕϯτ

Slide 14

Slide 14 text

ίϚϯυɿ sam local invoke [OPTIONS] [FUNCTION_IDENTIFIER]
 (ϩʔΧϧ؀ڥͰDockerΛ࢖༻ͯ͠LambdaΛ࣮ߦ)
 $ sam local invoke HelloWorldFunction -e events/apigateway-proxy-event.json 
 ࣮ߦ݁Ռ ςετ࣮ߦ(SAM)

Slide 15

Slide 15 text

• ΤϯυϙΠϯτ(httpϦΫΤετઌ)͚ͩΛࠩ͠ସ͑ͯࢼݧ͢Δ E2Eςετ AWS Lambda Amazon API Gateway Amazon DynamoDB AWS Cloud ຊ൪ ϩʔΧϧ AWS Lambda SAM (start-api) + DynamoDB local 'BLF "1* (BUFXBZ AWS Lambda Local Stack ϩʔΧϧ 'BLF "1* (BUFXBZ 'BLF %ZOBNP %# 'BLF %ZOBNP %#

Slide 16

Slide 16 text

Local Stack • ϩʔΧϧͰ࢖͑ΔAWSαʔϏεͷϑΣΠΫαʔό(ඇެࣜ) ࢀߟɿhttps://github.com/localstack/localstack

Slide 17

Slide 17 text

Local Stack(ྫ:DynamoDB) • docker-compose.yml

Slide 18

Slide 18 text

͞Βʹ஌ࣝΛਂΊΔʹ͸ • LambdaςετઃܭͷόΠϒϧ
 ʮTestable Lambda: Working Effectively with Legacy Lambdaʯ
 https://speakerdeck.com/twada/testable-lambda-working-effectively-with-legacy-lambda • Lambda಺෦ͷςετઃܭ΍E2EςετΛߦ͏ͱ͖ͷઓུͳͲ
 ʮTypeScriptͱJestͰ͸͡ΊΔ AWS੡αʔόʔϨε REST API ͷ
 Ϣχοτςετ/E2Eςετʯ
 https://speakerdeck.com/wadayusuke/serverless-testing-using-typescript-and-jest • ผͷπʔϧΛ࢖͏
 AWS Toolkit for VSCode ͷ Lambdaσόοά
 AWS CDKͰσϓϩΠߏ੒ͷ؅ཧ

Slide 19

Slide 19 text

͓·͚ • SAMΛಈ͔࣌͢ʹ٧·Δ͔΋͠Εͳ͍ύλʔϯ(2019/12/16ݱࡏ)Λهࡌ 1. Cloud 9಺ͰSAMΛࢼ͢৔߹
 ˠSAMͷversion͕͔ͳΓݹ͍(Cloud9಺:0.8.0ɺ࠷৽:0.37.0)ͷͰ
 ɹҰ౓SAMΛΞοϓσʔτͨ͠ํ͕ྑ͍
 ɹ(LambdaͷιʔεΛߋ৽ͯ͠΋Dockerʹ൓ө͞Εͳ͍ͳͲ…) 2. ࠷৽൛ͷpipͩͱAWS Toolkit for VSCode͔ΒϩʔΧϧ࣮ߦͰ͖ͳ͍
 ˠpipͷversionΛ໭͢ඞཁ͕͋Δ
 https://qiita.com/tmk2154/items/3fd7753b1b416e16f327


Slide 20

Slide 20 text

·ͱΊ SAM࢖ͬͯ։ൃ͠Α͏ʂ