Slide 1

Slide 1 text

2018/08/03 ؔ੢NodeֶԂ 3࣌ݶ໨ AWS Serverless Eλpress ೖ໳ AWS Lambda Λ࢖ͬͯ Express Λ ҰॠͰެ։͢Δํ๏

Slide 2

Slide 2 text

AWS Serverless Express ஌ͬͯ·͔͢ʁ

Slide 3

Slide 3 text

JavaScript / Java / React / AWS / Vim ͸͡Ί·ͯ͠! Taiki Nishi @nkgrnkgr Nokogiri Blog nkgrnkgr.github.io WebΞϓϦέʔγϣϯΤϯδχΞ ๏ਓ޲͚άϧʔϓ΢ΣΞαʔϏεͷ։ൃ HN: Nokogiri(nkgrnkgr) Ұࣇͷ෕ʢࠓ݄ೋࣇͷ෕ʹͳΓ·͢ ʣ Speaker Deck

Slide 4

Slide 4 text

Express࢖ͬͨ͜ͱ͋Γ·͔͢ʁ

Slide 5

Slide 5 text

AWS Lambda࢖ͬͨ͜ͱ͋Γ·͔͢ʁ

Slide 6

Slide 6 text

ExpressΛ࢖͍ͬͯΔਓ͕ AWS LambdaΛ࢖ͬͯ ޾ͤʹͳΕΔ࿩Ͱ͢ ☺

Slide 7

Slide 7 text

What is Serverless ? ͦ΋ͦ΋Serverlessͱ͸ʁ 1

Slide 8

Slide 8 text

αʔόʔϨείϯϐϡʔςΟϯάͱ͸ɺΫϥ΢υϓϩό Πμʔ͕ΞϓϦέʔγϣϯʹඞཁͳϚγϯϦιʔεͷׂ Γ౰ͯΛಈతʹ؅ཧ͠ɺࣄલʹߪೖ͞Εͨ͜ͱʹجͮ͘ ੥ٻͰ͸ͳ͘ɺ֤ΞϓϦέʔγϣϯཁٻΛຬͨͨ͢Ίʹ ࢖༻͞ΕΔݸʑͷϦιʔεྔʹج͍ͮͨ੥ٻΛߦ͏Α͏ ͳΫϥ΢υίϯϐϡʔςΟϯάϞσϧɻ “ Wikipedia ΑΓ

Slide 9

Slide 9 text

CLOUD FUNCTIONS AWS Lambda Azure functions ओͳ Serverless Platform

Slide 10

Slide 10 text

CLOUD FUNCTIONS AWS Lambda Azure functions ओͳ Serverless Platform Today’s Topic

Slide 11

Slide 11 text

AWS Lambda ͷಛ௃ ։ൃऀ͕࣮ߦ؀ڥͷαʔόʔΛ४උͤͣίʔυΛσϓϩΠ͢Δ͚ͩ HTTP ϦΫΤετͳͲ༷ʑͳΠϕϯτΛτϦΨʔʹؔ਺Λ࣮ߦ͢Δ Φʔτεέʔϧ ॳճىಈʹ΍΍͕͔͔࣌ؒΔ σϓϩΠͰ͖ΔϑΝΠϧαΠζ͕ 50MB ·Ͱ 1ϦΫΤετ͋ͨΓͷ࠷େ࣮ߦ͕࣌ؒ 300ඵ ࢖͍Ͳ͜ΖΛબͿ͕ͱʹ͔͍҆͘ 1ϲ݄ 100M ϦΫΤετ·Ͱແྉ Ҏ߱ 100M ϦΫΤετຖʹ 0.2 US$

Slide 12

Slide 12 text

What is AWS Serverless Express ? AWS Serverless Express ͱ͸ʁ 2

Slide 13

Slide 13 text

AWS Serverless Express AWS LambdaͱAPI Gatewayͷ্ʹɺExpress࢖༻ͯ͠αʔόʔϨε ΞϓϦέʔγϣϯͱREST APIΛ࣮ߦ͢ΔAWSެࣜϥΠϒϥϦ ExpressͷMiddleware ʹ௥Ճ͢Δ͚ͩͰ LambdaͰ࣮ߦՄೳʹͳΔ https://github.com/awslabs/aws-serverless-express

Slide 14

Slide 14 text

How to use 3

Slide 15

Slide 15 text

Express ʹ aws-serverless-express ΛΠϯετʔϧ STEP1 STEP2 STEP3 STEP4 ❯ npm install aws-serverless-express + aws-serverless-express@3.2.0 updated 1 package and audited 198 packages in 2.889s found 2 low severity vulnerabilities run `npm audit fix` to fix them, or `npm audit` for details

Slide 16

Slide 16 text

const awsServerlessExpress = require('aws-serverless-express'); const app = require('./app'); const server = awsServerlessExpress.createServer(app); exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context); Lambda ͔Βݺͼग़͞ΕΔ handler Λ࡞੒ STEP1 STEP2 STEP3 STEP4 index.js

Slide 17

Slide 17 text

ࠓ౓͸ Express ͷ middleware ʹ ͜ͷϥΠϒϥϦΛ௥Ճ STEP1 STEP2 STEP3 STEP4 const serverlessExpress = require('aws-serverless-express/middleware'); var app = express(); app.use(serverlessExpress.eventContext()); app.js

Slide 18

Slide 18 text

ࠓ౓͸ Express ͷ middleware ʹ ͜ͷϥΠϒϥϦΛ௥Ճ STEP1 STEP2 STEP3 STEP4 const serverlessExpress = require('aws-serverless-express/middleware'); var app = express(); app.use(serverlessExpress.eventContext()); app.js ΞϓϦέʔγϣϯͱͯ͠΍Δ͜ͱ͸Ҏ্ͰऴΘΓ

Slide 19

Slide 19 text

Lambda ΁ͷσϓϩΠ͸ Serverless Flamework Λར༻ STEP1 STEP2 STEP3 STEP4 $ npm install serverless -g + serverless@1.29.2 updated 3 packages in 11.062s https://serverless.com/framework/

Slide 20

Slide 20 text

σϓϩΠ༻ʹ ઃఆϑΝΠϧΛ࡞੒ STEP1 STEP2 STEP3 STEP4 service: serverless-express-example provider: name: aws runtime: nodejs8.10 stage: dev region: ap-northeast-1 functions: app: handler: index.handler events: - http: ANY / - http: 'ANY {proxy+}' serverless.yml

Slide 21

Slide 21 text

❯ sls deploy Serverless: Packaging service... Serverless: Excluding development dependencies... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading artifacts... Serverless: Uploading service .zip file to S3 (2.16 MB)... Serverless: Validating template... Serverless: Updating Stack... Serverless: Checking Stack update progress... .............. Serverless: Stack update finished... Service Information service: serverless-express-example stage: dev region: ap-northeast-1 stack: serverless-express-example-dev api keys: None endpoints: ANY - https://u8klxp40gc.execute-api.ap-northeast-1.amazonaws.com/dev ANY - https://u8klxp40gc.execute-api.ap-northeast-1.amazonaws.com/dev/{proxy+} functions: app: serverless-express-example-dev-app APIGawayͷEndPointsͷ࡞੒͔ΒίʔυͷσϓϩΠ·Ͱશ෦΍ͬͯ͘ΕΔ STEP1 STEP2 STEP3 STEP4

Slide 22

Slide 22 text

URLʹΞΫηεͨ͠Βެ։͞Εͯ·͢ STEP1 STEP2 STEP3 STEP4

Slide 23

Slide 23 text

ϥΠϒίʔσΟϯά %

Slide 24

Slide 24 text

Thanks!