Slide 1

Slide 1 text

"844".Λ $JSDMF$*ͰσϓϩΠͤ͞Α͏ ݄ σϓϩΠ͠Night in ෱Ԭ

Slide 2

Slide 2 text

ࣗݾ঺հ wΫϥεϝιουגࣜձࣾ w෱ԬΦϑΟεॴଐ w$9ࣄۀຊ෦ wϞόΠϧΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ ాத޹໌ @kongmingtrap

Slide 3

Slide 3 text

ࠓճͷٞ୊ • αʔόʔϨεΞϓϦέʔγϣϯ • AWS SAM ͱαʔόʔϨεΞϓϦέʔγϣϯ • AWS SAM ͱ CircleCI ͷ૊Έ߹Θͤ

Slide 4

Slide 4 text

αʔόʔϨεΞϓϦέʔγϣϯ

Slide 5

Slide 5 text

αʔόʔϨεͷϝϦοτ • αʔόʔͷ؅ཧ͕ෆཁ • ॊೈੑͷ͋ΔεέʔϦϯά • Ձ஋ʹର͢Δࢧ෷͍ • ߴՄ༻ੑͷࣗಈԽ https://aws.amazon.com/jp/serverless/

Slide 6

Slide 6 text

αʔόʔϨεΞϓϦέʔγϣϯΛߏ੒͢ΔͨΊͷαʔϏεʢҰ෦ʣ • AWS Lambda • Amazon API Gateway • Amazon Kinesis • Amazon CloudWatch • Amazon S3 • Amazon DynamoDB • AWS Step Functions • Amazon Simple Queue Service • Amazon Athena • AWS Glue …etc

Slide 7

Slide 7 text

AWS Lambda • αʔόʔͷϓϩϏδϣχϯάɺεέʔϦϯά΍ ؅ཧ͕ෆཁ • ։ൃऀ͸αʔόʔ΍ϥϯλΠϜͷ؅ཧɺૢ࡞ʹ ൥Θ͞Εͣɺίʔυʹूத͢Δ͜ͱ͕Ͱ͖Δ • ར༻Ͱ͖Δݴޠ͕๛෋ • Ruby / Node.js / Python / Java / Go / C# / PowerShell • Custom RuntimesΛར༻͢Ε͹ɺ೚ҙͷݴޠΛ ಈ࡞ͤ͞Δ͜ͱ͕Մೳ https://aws.amazon.com/jp/lambda/

Slide 8

Slide 8 text

Amazon API Gateway • ಠࣗͷ REST ͓Αͼ WebSocket API Λ࡞੒ɺ ެ։ɺอकɺϞχλϦϯάɺอޢͰ͖Δ • ಠࣗͷΫϥΠΞϯτΞϓϦέʔγϣϯ (ΞϓϦ) Ͱ࢖༻͢ΔͨΊͷ API Λ࡞੒Ͱ͖Δ https://aws.amazon.com/jp/api-gateway/

Slide 9

Slide 9 text

Amazon Kinesis • ͋ΒΏΔن໛ͷετϦʔϛϯάσʔλΛίετ ޮ཰ྑ͘ॲཧ͢ΔͨΊͷओཁػೳΛఏڙ • ετϦʔϛϯάσʔλΛϦΞϧλΠϜͰऔಘɺ όοϑΝɺॲཧ͢ΔͨΊɺ௨ৗ͸਺͔࣌ؒΒ਺ ೔͔͔ΔΠϯαΠτͷੜ੒Λ਺ඵ͔Β਺෼Ͱ׬ ྃ • ΠϯϑϥετϥΫνϟΛ؅ཧ͢Δඞཁͳ͘ɺε τϦʔϛϯάΞϓϦέʔγϣϯΛ࣮ߦͰ͖Δ https://aws.amazon.com/jp/kinesis/

Slide 10

Slide 10 text

Amazon CloudWatch • ओཁͳϝτϦΫεͱϩάͷϞχλϦϯάɺΞϓ Ϧέʔγϣϯ͓ΑͼΠϯϑϥετϥΫνϟελο ΫͷՄࢹԽɺΞϥʔϜͷ࡞੒ɺ͓ΑͼϝτϦΫ εͱϩάͷؔ࿈෇͚ʹΑͬͯɺύϑΥʔϚϯε ͷ໰୊ͷࠜຊతݪҼΛ೺Ѳ • ΞϥʔϜͷઃఆ΍ࣗಈԽ͞ΕͨΞΫγϣϯΛى ͜͢ • ϩάΛ͢͹΍͘ൃݟɺ෼ੳɺࢹ֮Խ͢Δ͜ͱͰ ӡ༻্ͷ໰୊ʹରॲ͠΍͘͢͢Δ https://aws.amazon.com/jp/cloudwatch/

Slide 11

Slide 11 text

αʔϏεΛ૊Έ߹ΘͤͯΞϓϦέʔγϣϯΛߏங https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ WhatIsCloudWatchEvents.html • લड़ͨ͠αʔϏεΛ૊ΈΘͤͯɺػೳΛ࣮૷͍ͯ͘͠ AM 2:00 ʹ࣮ߦ

Slide 12

Slide 12 text

ͱ͋ΔҊ݅ • σόΠεʹରͯ͠ɺ֎෦API͔Βঢ়ଶΛมԽͤ͞Δ • ଟ਺ͷσόΠεͷঢ়ଶ͔Βɺঢ়ଶ͕มԽͨ͠΋ͷʹରͯ͠ಛ ఆͷΞΫγϣϯΛى͜͢ • σόΠεͷঢ়ଶΛมԽΛऔಘ͠ଓ͚Δ • ͦͷ೔ͷऴྃޙͷσόΠεͷঢ়ଶΛදͨ͠σʔλΛՃ޻͠ɺ ՄࢹԽ͢Δ

Slide 13

Slide 13 text

AWS IoT • Πϯλʔωοτʹ઀ଓͨ͠σόΠεͱAWSͷ αʔϏεΛηΩϡΞʹ௨৴ͤ͞Δ࢓૊ΈΛఏڙ • σόΠε΁ͷࢦྩɺσόΠε͔ΒͷσʔλΛड ͚औΓɺAWSͷαʔϏε΁ڮ౉͠Λߦ͏ • ؔ࿈͢ΔαʔϏε • AWS IoT Core • AWS IoT Device Defender • AWS IoT Analytics https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/what-is-aws-iot.html

Slide 14

Slide 14 text

AWS IoT ϧʔϧ

Slide 15

Slide 15 text

AWS IoT ϧʔϧ SELECT * FROM '$aws/things/+/shadow/update' WHERE state.reported.power = True

Slide 16

Slide 16 text

AWS IoT ϧʔϧ \ TUBUF\ SFQPSUFE\ QPXFSl0/ ^ ^ ^ SELECT * FROM '$aws/things/+/shadow/update' WHERE state.reported.power = True ࢦఆͨ͠τϐοΫ΁ σʔλΛૹ৴

Slide 17

Slide 17 text

AWS IoT ϧʔϧ \ TUBUF\ SFQPSUFE\ QPXFSl0/ ^ ^ ^ SELECT * FROM '$aws/things/+/shadow/update' WHERE state.reported.power = True ϧʔϧʹϚον

Slide 18

Slide 18 text

AWS IoT ϧʔϧ \ TUBUF\ SFQPSUFE\ QPXFSl0/ ^ ^ ^ SELECT * FROM '$aws/things/+/shadow/update' WHERE state.reported.power = True ϧʔϧʹઃఆ͞Εͨ ΞΫγϣϯΛ࣮ߦ͢Δ

Slide 19

Slide 19 text

AWS IoT ϧʔϧ SELECT * FROM '$aws/things/+/shadow/update/documents'

Slide 20

Slide 20 text

AWS IoT ϧʔϧ SELECT * FROM '$aws/things/+/shadow/update/documents'

Slide 21

Slide 21 text

AWS IoT ϧʔϧ SELECT * FROM '$aws/things/+/shadow/update/documents' σʔλΛ֨ೲ͢ΔΞΫγϣ ϯΛඥ͚ͮͨผͷϧʔϧ

Slide 22

Slide 22 text

AWS IoT ϧʔϧ SELECT * FROM '$aws/things/+/shadow/update/documents' σʔλΛ֨ೲ͢ΔΞΫγϣ ϯΛඥ͚ͮͨผͷϧʔϧ ෳ਺ͷτϐοΫͱϧʔϧΛ૊Έ߹Θ ͤͯɺΞΫγϣϯΛઃఆ͍ͯ͘͠

Slide 23

Slide 23 text

AWS SAMͱ αʔόʔϨεΞϓϦέʔγϣϯ

Slide 24

Slide 24 text

։ൃͱӡ༻ͷฒߦ • ػೳ։ൃͱӡ༻͸։ൃऀ͕ฒߦͯ͠ߦ͏৔߹͕ଟ͍ • ܞΘ͍ͬͯΔҊ݅͸։ൃνʔϜɾӡ༻νʔϜͳͲͷ໾ׂ෼୲ Λ͍ͯ͠ͳ͍ • εύΠΫΞΫηεͷରԠͳͲɺϚωʔδυαʔϏεʹد͍ͤͯ Δ෦෼ͷରԠ͸ෆཁ͕ͩɺͦͷ݁ՌΛ౿·͑ͯػೳΛߟྀ͢ Δ৔߹͸͋Δ • ϚΠΫϩαʔϏεΛ૊Έ߹ΘͤΔ্Ͱͷ։ൃɾӡ༻ͷઃܭ͕؊ ཁ

Slide 25

Slide 25 text

AWS αʔόʔϨεΞϓϦέʔγϣϯϞσϧ (AWS SAM) ͷ࢖༻ • αʔόʔϨεΞϓϦέʔγϣϯʹదͨ͠ॻࣜͰ AWS CloudFromation ͷ Stack Λग़ྗͯ͘͠ΕΔ • SwaggerͷఆٛΛݩʹ Amazon API Gateway ͷઃఆ͕ߦ͑Δ • API࢓༷ͱ࣮૷ͷဃ཭Λ๷͙ • AWS CloudFormation ςϯϓϨʔτͱಉ༷Ͱɺ૊ΈࠐΈؔ਺ ͳͲ͕࢖͑Δ • ผͷϦʔδϣϯ΍ผͷAWSΞΧ΢ϯτʹΞϓϦέʔγϣϯͷ σϓϩΠΛߦ͑ΔΑ͏ʹ͢Δ https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/serverless_app.html

Slide 26

Slide 26 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC

Slide 27

Slide 27 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC AWSΞΧ΢ϯτB΁ ίϚϯυ࣮ߦ

Slide 28

Slide 28 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC CloudFormationͷ Stackʹม׵

Slide 29

Slide 29 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC AWSͷϦιʔεΛల։

Slide 30

Slide 30 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC AWSΞΧ΢ϯτA ΁ίϚϯυ࣮ߦ

Slide 31

Slide 31 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC CloudFormationͷ Stackʹม׵

Slide 32

Slide 32 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC

Slide 33

Slide 33 text

AWS SAM sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC

Slide 34

Slide 34 text

AWS SAM ͷه๏ͷྫ • Amazon CloudWatch Events + AWS Lambdaͷྫ AM 2:00 ʹ࣮ߦ

Slide 35

Slide 35 text

AWS SAM ͷه๏ͷྫ • Amazon CloudWatch Events + AWS Lambdaͷྫ AM 2:00 ʹ࣮ߦ TimerEventFunction: Type: AWS::Serverless::Function Properties: FunctionName: timer-event-function CodeUri: src/handlers/timer_event Handler: index.handler Runtime: python3.7 Policies: - arn:aws:iam::aws:policy/AmazonS3FullAccess Events: Schedule: Type: Schedule Properties: Schedule: cron(0 17 * * ? *) sam.yml

Slide 36

Slide 36 text

AWS SAM ͷه๏ͷྫ • Amazon CloudWatch Events + AWS Lambdaͷྫ AM 2:00 ʹ࣮ߦ TimerEventFunction: Type: AWS::Serverless::Function Properties: FunctionName: timer-event-function CodeUri: src/handlers/timer_event Handler: index.handler Runtime: python3.7 Policies: - arn:aws:iam::aws:policy/AmazonS3FullAccess Events: Schedule: Type: Schedule Properties: Schedule: cron(0 17 * * ? *) sam.yml AWS LambdaΛඥ͚ͮΔ Πϕϯτͷઃఆ

Slide 37

Slide 37 text

AWS SAM ͷه๏ͷྫ • Amazon CloudWatch Events + AWS Lambdaͷྫ AM 2:00 ʹ࣮ߦ TimerEventFunction: Type: AWS::Serverless::Function Properties: FunctionName: timer-event-function CodeUri: src/handlers/timer_event Handler: index.handler Runtime: python3.7 Policies: - arn:aws:iam::aws:policy/AmazonS3FullAccess Events: Schedule: Type: Schedule Properties: Schedule: cron(0 17 * * ? *) sam.yml

Slide 38

Slide 38 text

ʢຊ୊ʣ AWS SAM ͱ CricleCI ͷ૊Έ߹Θͤ

Slide 39

Slide 39 text

CircleCIͱͷ૊Έ߹Θͤ • AWS SAM ͱ CircleCI Λ૊Έ߹ΘͤͯɺϢχοτςετɹˠ σϓϩΠ → e2eςετ ·ͰΛҰ؏ͯ͠ߦ͏ • Approval ͳͲͷػೳΛར༻͠ɺຊ൪؀ڥద༻ͳͲΛҰ࿈ͷ ϫʔΫϑϩʔͰߦ͑ΔΑ͏ʹ͢Δ sam.yml

Slide 40

Slide 40 text

δϣϒ ͱ ϫʔΫϑϩʔ IUUQTDJSDMFDJDPNEPDTXPSLqPXT • Ϣχοτςετɺ σϓϩΠɺ e2eςετ ͳͲΛ δϣϒ ͱ͍ ͏୯ҐͰ࡞੒Ͱ͖Δ • ϫʔΫϑϩʔ ͸ δϣϒ ͷॲཧͷෳࡶͳखॱʢ௚ྻɾฒߦ࣮ ߦͳͲʣΛ౿ΉΑ͏ͳϑϩʔΛදݱͰ͖Δ

Slide 41

Slide 41 text

αϯϓϧίʔυ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFS

Slide 42

Slide 42 text

.circleci/config.yml ʹ δϣϒ Λఆٛ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM--

Slide 43

Slide 43 text

.circleci/config.yml ʹ δϣϒ Λఆٛ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM--

Slide 44

Slide 44 text

Makefile ͳͲʹ AWS SAM ίϚϯυ Λఆٛ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFS.BLFpMF--

Slide 45

Slide 45 text

δϣϒ͔Β Makefile ͷίϚϯυΛݺͿΑ͏ʹ͢Δ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM-

Slide 46

Slide 46 text

ϫʔΫϑϩʔͷ࡞੒ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM- • ࡞੒ͨ͠ δϣϒ ΛݺͿॱ൪Λ ϫʔΫϑϩʔ ͱͯ͠࡞੒͢Δ

Slide 47

Slide 47 text

ϫʔΫϑϩʔͷ࡞੒ • ࡞੒ͨ͠ δϣϒ ΛݺͿॱ൪Λ ϫʔΫϑϩʔ ͱͯ͠࡞੒͢Δ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM--

Slide 48

Slide 48 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ • ϫʔΫϑϩʔͷྫ

Slide 49

Slide 49 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ Ϣχοτςετ Λߦ͏ • ϫʔΫϑϩʔͷྫ

Slide 50

Slide 50 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ Ϣχοτςετ Λߦ͏ • ϫʔΫϑϩʔͷྫ

Slide 51

Slide 51 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ Ϣχοτςετ Λߦ͏ ։ൃ؀ڥ΁ͷσϓ ϩΠͱe2eςετ • ϫʔΫϑϩʔͷྫ

Slide 52

Slide 52 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ Ϣχοτςετ Λߦ͏ ։ൃ؀ڥ΁ͷσϓ ϩΠͱe2eςετ ຊ൪؀ڥ΁ͷద༻ Λߦ͏ • ϫʔΫϑϩʔͷྫ

Slide 53

Slide 53 text

Approval Ͱຊ൪ద༻ͷ δϣϒ Λ଴ͨͤΔ IUUQTDJSDMFDJDPNEPDTXPSLqPXT • ࣍ͷ δϣϒ ʹਐΉલʹɺ δϣϒ ͷ खಈঝೝ Λ଴ͭΑ͏ʹ ϫʔΫϑϩʔ Λߏ੒Ͱ͖Δ • ϦϙδτϦ΁ͷϓογϡΞΫηεݖΛ͍࣋ͬͯΔਓͳΒ୭Ͱ ΋ ঝೝϘλϯ ΛΫϦοΫͯ͠ ϫʔΫϑϩʔ Λଓ͚Δ͜ͱ͕ Ͱ͖Δ

Slide 54

Slide 54 text

Approval Ͱຊ൪ద༻ͷ δϣϒ Λ଴ͨͤΔ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM-

Slide 55

Slide 55 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ ຊ൪ద༻ͷ࣮ߦ͸ ApprovalͰ଴ͨͤΔ • ϫʔΫϑϩʔͷྫ

Slide 56

Slide 56 text

CircleCIͱͷ૊Έ߹Θͤ https://circleci.com/docs/2.0/workflows/ • ϫʔΫϑϩʔͷྫ

Slide 57

Slide 57 text

ঝೝૢ࡞ʹΑΔຊ൪ద༻ sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC

Slide 58

Slide 58 text

ঝೝૢ࡞ʹΑΔຊ൪ద༻ sam.yml AWSΞΧ΢ϯτB AWSΞΧ΢ϯτA AWSΞΧ΢ϯτC

Slide 59

Slide 59 text

࣍ੈ୅ߏ૝

Slide 60

Slide 60 text

AWS CDK ͷ׆༻ IUUQTHJUIVCDPNLPOHNJOHTUSBQ4MBDL/PUJpFS4BNQMFSCMPCNBTUFSDJSDMFDJDPOpHZNM- • AWS CDK (Cloud Development Kit) • AWS ϦιʔεΛ ߏ੒ཁૉ(construct) ͱͯ͠ϓϩάϥϜͰॻ ͖ɺͦΕΒΛ૊Έ߹Θ࣮ͤͯߦ͢ΔͱσϓϩΠͰ͖Δͱ͍͏ πʔϧΩοτɻ • AWSͷΠϯϑϥΛ TypeScript ͳͲͷϓϩάϥϛϯάݴޠΛ ࢖ͬͯఆٛɾσϓϩΠ͢Δɻ • CDKϓϩάϥϜΛ࣮ߦ͢Δ͜ͱͰ CloudFormation ςϯϓ ϨʔτΛੜ੒ɺͦͷςϯϓϨʔτΛ࢖ͬͯσϓϩΠ͢Δɻ

Slide 61

Slide 61 text

·ͱΊ

Slide 62

Slide 62 text

·ͱΊ • CircleCI ͷ δϣϒ ͱ ϫʔΫϑϩʔ Λ૊Έ߹ΘͤͯαʔόʔϨ εΞϓϦέʔγϣϯͷ Ϣχοτςετ → σϓϩΠ → e2eς ετ ΛҰ؏ͯ͠ߦ͑Δ • ຊ൪ద༻ͳͲͷঝೝ͕ඞཁͳϑϩʔʹ͍ͭͯ΋ Approval ͱఆ ٛ͢Δ͜ͱͰՄೳͱͳΔ • ΑΓΠϯϑϥΛίʔυͰ؅ཧ͠΍͘͢ͳΔ

Slide 63

Slide 63 text

No content