Slide 1

Slide 1 text

ֹ݄10ԁ͔Β࡞Δ ServerLess Website 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 1

Slide 2

Slide 2 text

৿ాɹ๜༟ @morita92hiro kunihiro.morita.52 - ܦྺ - ૊ΈࠐΈΤϯδχΞ - ΅ͬͪΠϯϑϥΤϯδχΞ 2013ʙ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 2

Slide 3

Slide 3 text

ʮ1܅ɺLPαΠτ࡞ͬ ͯɻCMS͸͍Βͳ͍ɻʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 3

Slide 4

Slide 4 text

>>1ʮS3ͷग़൪΍ʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 4

Slide 5

Slide 5 text

Static Website Hosting • ͙͢࡞ΔΕͯ(10෼ఔ౓) • ҆ͯ͘(ֹ݄10ԁʙ) • ݎ࿚(99.999999999%) 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 5

Slide 6

Slide 6 text

ʮ1܅ɺ͓໰͍߹Θͤϖʔδ࡞ͬͯʯ >>1 ʮS3͸੩త͔͠ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 6

Slide 7

Slide 7 text

ʮ1܅ɺ͓໰͍߹Θͤʯ >>1 ʮ͸͍ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 7

Slide 8

Slide 8 text

>>1ʮJSͰS3ʹPUT͓ͯ͠໰͍߹Θͤ σʔλஔ͍ͯɺʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 8

Slide 9

Slide 9 text

>>1ʮJS͕S3΁ͷॻ͖ࠐΈݖݶඞཁ΍ ͠ɺJSʹೝূ৘ใॻ͖ࠐΉͷ ͸ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 9

Slide 10

Slide 10 text

>>1ʮͤ΍ʂCognito͕ ͋Δ΍Μʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 10

Slide 11

Slide 11 text

ະೝূήετʹॻ͖ࠐΈݖݶ • IAMͰCognitoʹS3΁ͷॻ͖ࠐΈݖݶΛ෇༩ • JS͸Cognito͔ΒҰ࣌తͳAWSೝূ৘ใऔಘ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 11

Slide 12

Slide 12 text

// Cognito AWS.config.region = 'ap-northeast-1'; // Region AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'ap-northeast-1:12345679-1234-1234-1234-123456789012', }); AWS.config.credentials.get(); // S3 Put var s3 = new AWS.S3({ params: { Bucket: bucket } }); s3.putObject({ Key: now.getTime() + '.json', ContentType: 'application/json', Body: blob }, function(err, data) { if (data !== null) { alert('Success'); } else { alert('Fail'); } } ); 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 12

Slide 13

Slide 13 text

ิ଍ • ͓໰͍߹Θͤσʔλஔ͖৔ͷS3όέοτʹ͸CORSઃఆ • S3 PUT߈ܸ͞Εͨ͘ͳ͍ͷͰ͔ͬ͠Γ੍ݶ http://hoge.com PUT * 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 13

Slide 14

Slide 14 text

>>1ʮ͓໰͍߹ΘͤΛͲ͏΍ͬͯ஌Ζ͏͔ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 14

Slide 15

Slide 15 text

>>1ʮͤ΍ʂLambda͕ ͋Δ΍Μʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 15

Slide 16

Slide 16 text

LambdaͰαʔόʔϨεʹϝʔϧૹ৴ • S3΁ϑΝΠϧ௥ՃΠϕϯτΛτϦΨʔʹLambdaΩοΫ • Lambda͔ΒSESͰϝʔϧૹ৴ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 16

Slide 17

Slide 17 text

>>1ʮϝʔϧ௨஌͚͚ͩͩͲɺޙ͔Β ௥Ճ͠΍͘͢ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 17

Slide 18

Slide 18 text

>>1ʮSNSڬΜͲ͚͹͍ ͍΍Ζʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 18

Slide 19

Slide 19 text

ந৅తʹ • S3ΠϕϯτΛSNSܦ༝ͰLambdaΩοΫ • ΞΫγϣϯ௥Ճ΋SNSαϒεΫϦϓγϣϯ௥Ճ͚ͩͰࡁΉ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 19

Slide 20

Slide 20 text

ʮ1܅ɺS3஗͍͠HTTP ͷΈɻ࣌୅͸HTTPS΍ʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 20

Slide 21

Slide 21 text

>>1ʮCloudFrontͰര ଎ʹͨ͠Δʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 21

Slide 22

Slide 22 text

CDN • ίϯςϯπσϦόϦʔαʔϏε • GzipѹॖػೳͰ͞Βʹߴ଎ɺసૹίετ࡟ݮʂ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 22

Slide 23

Slide 23 text

ʮ1܅ɺαʔόʔূ໌ॻ͸͍҆ͷͰʯ >>1ʮɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 23

Slide 24

Slide 24 text

>>1ʮͤ΍ʂACM͕͋Δ ΍Μʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 24

Slide 25

Slide 25 text

AWSͷແྉSSLূ໌ॻ • υϝΠϯೝূ(DV) • ରԠαʔϏε͸CloudFrontͱELB(us-east-1ͷΈ) 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 25

Slide 26

Slide 26 text

>>1ʮͳΜ͔߈ܸ͞Εͯ Δؾ͕͢ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 26

Slide 27

Slide 27 text

ิ଍ ̏ߦͰΞΫηεղੳ • S3, CloudFrontͷΞΫηεϩά͸S3ʹग़ྗՄೳ • ΞΫηεϩά͕S3PUT͞ΕͨτϦΨʔͰLambdaΩοΫ • Lambda͔ΒElasticsearchʹ์ΓࠐΜͰKibanaͰ෼ੳ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 27

Slide 28

Slide 28 text

>>1ʮWAFͰϒϩοΫʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 28

Slide 29

Slide 29 text

WAF • ରԠαʔϏε͸CloudFrontͷΈ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 29

Slide 30

Slide 30 text

>>1ʮੲCloudFrontམͪͨɻ·ͨݺ ͼग़͞Εͨ͘ͳ͍ϯΰɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 30

Slide 31

Slide 31 text

>>1ʮRoute53ʹม͑Δʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 31

Slide 32

Slide 32 text

҆৺ͷSLA100%ͷDNS • DNSϔϧενΣοΫͰCloudFrontΛ؂ࢹ • ϔϧενΣοΫNGͰS3ʹDNS੾Γସ͑(ϑΣΠϧΦʔόʔ) 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 32

Slide 33

Slide 33 text

ʮ1܅ɺܞଳʹϝʔϧಧ͔ͳ͍Μͩʯ >>1ʮSES͸ΩϟϦΞϝʔϧ͕͕ɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 33

Slide 34

Slide 34 text

>>1ʮSendGridʹมߋ΍ɻͰ΋ Lambdaʹೝূ৘ใΛຒΊࠐΈͨ͘ͳ ͍ϯΰɾɾɾʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 34

Slide 35

Slide 35 text

>>1ʮͤ΍ʂKMS͕͋Δ ΍Μʂʯ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 35

Slide 36

Slide 36 text

҉߸ˍ෮߸ • KMSͰೝূ৘ใΛ҉߸Խͯ͠ຒΊࠐΈ • ࢖͏ͱ͖ʹKMSͰ෮߸ɻLambdaʹ෮߸ͷIAM Role༩͑Δɻ 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 36

Slide 37

Slide 37 text

·ͱΊ • ֹ݄10ԁ͙Β͍ • ֹ݄1000ԁ͙Β͍?ɺWAFআ͚͹300ԁ͙Β͍? 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 37

Slide 38

Slide 38 text

σϞ (σϞ͸ΠϝʔδͰ͢) 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 38

Slide 39

Slide 39 text

͓ΘΓ! 2016/3/21 JAWS-UG෱Ԭ ·ͨೱ͍໨ʹAWSͷ࿩Λͯ͠ΈΑ͏ 39