Slide 1

Slide 1 text

AWS Serverless Application Model ΄ϔϤϺα䜐ኼ Developers.IO 2017 2017/07/01 Ӿઊ ଛလ 1

Slide 2

Slide 2 text

ᛔ૩奧Օ • Ӿઊ ଛလ • μ϶φϮϊϐϖ AWSԪ䮣᮱ ϊϷϲЄτϴ ЀίЄκϓμϕ • AWSΨڥአͭ͵αЀϢ϶΄戔懯/䯤塈/π ЀςϸϓΰЀν • GitHub: knakayama • 奺䵉 • ηЀϤϹςЄϝ΄晁አ3ଙ • AWS䵉 1ଙ܎ͦΟ͚ 2

Slide 3

Slide 3 text

ίυδЀύ 1. AWS Serverless Application Model͹ͼ֜ 2. 樄咲ϢϺЄΨᘍ͞Ρ 3. ϊЄφπЄϖ΅Ϳ͜ᓕቘͯΏͣ͡ 4. CI/CDΨෆ͞Ρ 5. Ք஍΄઀๕ 6. Δ;Η 3

Slide 4

Slide 4 text

1. AWS Serverless Application Model͹ͼ֜ 4

Slide 5

Slide 5 text

AWS Serverless Application Model΄༷ᥝ • ςЄϝϹφίЄκϓμώϰΨᓕቘͯΡ͵Η΄ϯϔϸ • ኼͭͼAWS SAM;޷Ά΢Ρͩ;͢ग़͚ • Lambda΀Ϳ΄AWSςЄϠφΨਯ᥺ጱ΀πЄϖ;ͭͼᓕቘݢᚆ • → ίЄκϓμώϰق֛ΨπЄϖͽᓕቘͽͣΡ • → Git/GitHub;昧൭ͭͼCI/CDϞαϤ϶αЀΨ֢΢Ρ • 䋚䙪΅CloudFormation΄䝭䔴䱛ᚆ 5

Slide 6

Slide 6 text

AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function Properties: CodeUri: path/to/func Handler: index.handler Runtime: nodejs6.10 Events: Get: Type: Api Properties: Path: /users/{id} Method: get RestApiId: !Ref Api Api: Type: AWS::Serverless::Api ... 6

Slide 7

Slide 7 text

AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 # AWS SAM ΨڥአͯΡͩ;Ψกᐏጱ΁೰ਧ Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function Properties: CodeUri: path/to/func Handler: index.handler Runtime: nodejs6.10 7

Slide 8

Slide 8 text

AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function # Lambda አϷϊЄφ΄ਧ嬝 Properties: CodeUri: path/to/func Handler: index.handler Runtime: nodejs6.10 8

Slide 9

Slide 9 text

AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function Properties: CodeUri: path/to/func # Lambda ΄ϊЄφπЄϖΨތΖϔΰϹμϕϷΎ΄Ϟφ Handler: index.handler Runtime: nodejs6.10 9

Slide 10

Slide 10 text

AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function Properties: CodeUri: path/to/func Handler: index.handler # ϜЀϖ϶΄೰ਧ (< Ϣήαϸݷ >.< 樛හݷ >) Runtime: nodejs6.10 10

Slide 11

Slide 11 text

AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function Properties: CodeUri: path/to/func Handler: index.handler Runtime: nodejs6.10 # ϶Ѐόαϭ΄೰ਧ 11

Slide 12

Slide 12 text

AWS SAM΄ϓЀϤϹЄϕֺ ... Func: Type: AWS::Serverless::Function ... Events: Get: Type: Api # API Gateway;΄αЀϓνϹЄτϴЀ Properties: Path: /users/{id} Method: get RestApiId: !Ref Api Api: Type: AWS::Serverless::Api # API GatewayϷϊЄφ΄ਧ嬝 ... 12

Slide 13

Slide 13 text

AWS SAM;CLI • ϺЄθϸ΄ϊЄφπЄϖ͡ΟϔϤϺαϮЀϕϞϐξЄυ΄֢౮/ίϐϤϺЄϖ͢ͽͣ Ρ • → ӞଶS3΁ίϐϤϺЄϖͭͼ͡ΟAWS SAM΄ϓЀϤϹЄϕΨ䄜䟵ͯΡ;͚͜㵕 ֢ • → ֺ͞Ά CodeUri ϤϺϞϓΰΨS3Ύ΄Ϟφ΁䄜䟵ͭͼͥ΢Ρ • 䌑አ΄πϫЀϖ΅አ఺ͫ΢ͼ΀͚΄ͽAWS CLIΨڥአͯΡ • → 㷗ੂ΁᥺͜;ϢϹЄϭϼЄμͽ΅΀ͥͥ͘Δͽϯϔϸ;͚֖͜ᗝͻͧ΄͵Η • → Serverless FrameworkΚApex;΅吖΀ΡϪαЀϕ 13

Slide 14

Slide 14 text

䄜䟵ͫ΢͵AWS SAM΄ϓЀϤϹЄϕֺ --- AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Description: AWS SAM Sample Resources: Func: Type: AWS::Serverless::Function Properties: CodeUri: s3://<_S3_BUCKET_>/<_S3_PREFIX_>/ Handler: index.handler Runtime: nodejs6.10 14

Slide 15

Slide 15 text

AWS SAM΄ϔϤϺα • Ԇ΁զӥ2ͺ΄πϫЀϖΨڥአͯΡ • aws cloudformation package • S3Ύ΄ίϐϤϺЄϖ;ϓЀϤϹЄϕ΄䄜䟵 • aws cloudformation deploy • φόϐμ/Change Set΄֢౮ or ๅෛ 15

Slide 16

Slide 16 text

AWS SAM΄ϔϤϺα $ aws cloudformation package \ --template-file sam.yml \ --s3-bucket <_S3_BUCKET_> \ --s3-prefix <_S3_PREFIX_> \ --output-template-file .sam/packaged.yml $ aws cloudformation deploy \ --template-file .sam/packaged.yml \ --stack-name <_STACK_NAME_> \ --capabilities CAPABILITY_IAM 16

Slide 17

Slide 17 text

2. 樄咲ϢϺЄΨᘍ͞Ρ 17

Slide 18

Slide 18 text

๋֗3ͺ΄厏हΨአ఺ͯΡ • Develop厏ह • → ϺЄθϸ΄樄咲厏ह • Staging厏ह • → αЀϓνϹЄτϴЀϓφϕΨ䋚ෞͯΡ厏ह • → च๜ጱ΁Production;ݶᒵ΄厏ह΁ͭͼͥ͠Ώͣ • Production厏ह • → ͠ਮͫΩ͢䋚檭΁ڥአͯΡ厏ह 18

Slide 19

Slide 19 text

Develop厏ह • ෭̸咲ኞͯΡෛ䱛ᚆ樄咲Κbugfix΄ץྋΨ䋚ෞͯΡ厏ह • ᔰ෱ͥ樄咲ͯΡ͵Η΁樄咲ᘏϺЄθϸͽਠ奾ͽͣΡΞ͜΁ͯΡ • ϺЄθϸ樄咲厏हΨςϪЄϕͯΡ厏हΨෆ͞Ρ • → ϦЄφ΅Localstack΀Ϳ΄AWSεϬϲϹЄτϴЀᔮϑЄϸͽդ๊ • → ϓφϕπЄϖ΄ӾͽAWS SDK΄εЀϖϪαЀϕΨlocalhost΁䄜ๅ • → ;΅͚͞قͼ΄䱛ᚆΨդ๊ͽͣ΀͚΄ͽ晒਩ϯϐμ۸ 19

Slide 20

Slide 20 text

t-wada࿄΄φ϶αϖ๋͢ṛ΀΄ͽ஠Ͱ抎Ζͩ; https://speakerdeck.com/twada/testable-lambda-working-effectively-with-legacy-lambda 20

Slide 21

Slide 21 text

Staging/Production厏ह • μ϶γϖςЄϠφ;͚͜ᇙ௔Ӥ̵ϺЄθϸͽ΄αЀϓνϹЄτϴЀϓφ ϕ or E2Eϓφϕ΁΅ᴴኴ͘͢Ρ • → εϬϲϹЄτϴЀᔮϑЄϸ΅ͥ͘Δͽ֒͵ഄΡᛩ͚ΨͯΡͶͧ΀ ΄ͽ̵䋚檭΄㵕֢;ݶͮ;΅ᴴΟ΀͚ • → ͘;ϯϐμ䨗ͥ΄ͶΡ͚ • Production;ΑΒݶᒵ΄厏ह(Staging)΄֖ᗝ՞ͧ͢᯿ᥝ • → Staging厏हͽϓφϕͯΡ;͚͜΄͢匍䋚ᥴͽ΅ 21

Slide 22

Slide 22 text

ϣ϶Ѐώ䜐ኼ • GitHubϢϺЄ + ϷϷЄφϣ϶Ѐώොୗ • 樄咲䦒΅ฦ᭗΁GitHubϢϺЄΨڥአ • Staging/Production΁ϷϷЄφͯΡ檭΁ϣ϶ЀώΨڔΠ๊͞Ρ • ϷϷЄφϣ϶Ѐώ΅ϔϤϺα͢֎͜΄ͽ樌晅͹ͼpushͫͱ΀͚ Ξ͜΁ͯΡ • → Protected BranchΨڥአ 22

Slide 23

Slide 23 text

ϣ϶Ѐώ䜐ኼ ϣ϶Ѐώݷ አ᭔ master ώδϐμίγϕز;΀Ρϣ϶Ѐώ ձ఺( add-new-feature ;͡) master͡Οώδϐμίγϕͭ͵ϕϡϐμ ϣ϶Ѐώ staging stagingአϷϷЄφϣ϶Ѐώ Protected Branch production productionአϷϷЄφϣ϶Ѐώ Protected Branch 23

Slide 24

Slide 24 text

ϣ϶Ѐώ΄϶αϢςαμϸ 1. master ͡Οϕϡϐμϣ϶Ѐώ֢౮ 2. master ΁䌏ͭͼWIP PRڊͯ 3. 樄咲 4. master ΁PR΄ϹϠϲЄׁ毲&ϫЄυ 5. ϓφϕ΄όαϬЀνͽ master ͡Ο staging ΁PR & ϫЄυ 6. staging ͽαЀϓνϹЄτϴЀϓφϕ 7. ϷϷЄφ΄όαϬЀνͽ staging ͡Ο production ΁PR & ϫЄυ 24

Slide 25

Slide 25 text

3. ϊЄφπЄϖ΅Ϳ͜ᓕቘͯΏͣ͡ 25

Slide 26

Slide 26 text

ϔϤϺαϮЀϕϞϐξЄυΨੜͫͥͯΡ • ϔϤϺαϮЀϕϞϐξЄυ΅஠ᥝ΀Θ΄զक़ތΔ΀͚ • → Lambda΄πЄϸϖφόЄϕΨᎨ婘ͯΡ͵Η • AWS SAM΅ϔϤϺαϮЀϕϞϐξЄυ΄ݐ䞳晝䝑͢୧͚΄ͽϓφϕ πЄϖΘړ櫝 • → ͺΔΠLambda΄ϊЄφπЄϖ;ݶͮϔΰϹμϕϷ΁΅ތΗ΀͚ • → Serverless Framework΅ϼαϸϖθЄϖͽຨ敟΁晝䝑ͽͣΡ΄Ͷ ͢… https://speakerdeck.com/keisuke69/quan-bu-jiao-emasu-saharesuahurifalseantihatantotiyuninku?slide=24 26

Slide 27

Slide 27 text

1ͺ΄πЄϖϦЄφ;愢හ厏हΎ΄䌏䖕 • 厏ह䶅΁φόϐμΨړ櫝ͯΡ • → AWS SAM΅匍䦒ᅩͽLambda΄Version & Alias;ፘ௔䘂͚ • → aws cloudformation deploy ΄ --stack-name ͽ厏ह䶅΁φόϐμΨړ櫝ͯΡ • 厏ह䶅΁吖΀ΡϞ϶ϮЄόΨ戔ਧϢήαϸͽᓕቘ • → params զӥ΁厏ह䶅΄Ϟ϶ϮЄόΨތΩͶ戔ਧϢήαϸΨአ఺ • → aws cloudformation deploy ΄ --parameter-overrides ͽ厏ह䶅΄Ϟ϶ϮЄ όΨޕ㷧 27

Slide 28

Slide 28 text

ϷϪυϕϷͽਠ奾ͫͱΡ • ϷϪυϕϷ΁قͼ΄ఘ䁭ΨތΗΡ • → 愢හՈͽ΄樄咲ͽΘݶͮ厏हΨͯͦ΁ٚ匍ͽͣΡΞ͜΁ͭͼͥ͠ • → package.json΁஠ᥝ΀ϯυϲЄϸΨقͼف΢Ρ • AWS CLI΄϶ϐϞЄφμϷϤϕΨአ఺ͭͼͥ͠ • → AWS SAMΨڥአͭͼ͚Ρ;AWS CLIΨ毱ᔺ΁ڥአͯΡ͵Η • → ϶ϐϞЄφμϷϤϕΨ bin զӥ΁ᯈᗝͭͼ package.json ΄ scripts ͡Ο޷Ήڊͯ • → npm or yarn ͽ䋚ᤈ • → AWS CLI΄ϝЄυϴЀΘ requirements.txt ͽᓕቘ 28

Slide 29

Slide 29 text

㰜͢ᘍ͞͵๋䔶΄ϔΰϹμϕϷ䯤᭜ ϔΰϹμϕϷ or Ϣήαϸݷ ஀ۆ .sam/ aws cloudformation package ͽ䄜䟵ͫ΢͵ϓЀϤ ϹЄϕ( .sam/packaged.yml ΀Ϳ) ݶͮϢήαϸΨٚኞ౮ݢᚆ΀΄ͽ .gitignore ͽᴻक़ bin/ AWS CLI΄϶ϐϞЄφμϷϤϕ( bin/deploy.sh ΀Ϳ) package.json ϯυϲЄϸ;϶ϐϞЄφμϷϤϕ΄ᓕቘ params/ 厏ह䶅΄Ϟ϶ϮЄό( params/stg.json ΀Ϳ) requirements.txt AWS CLI΄ϝЄυϴЀᓕቘ sam.yml AWS SAM΄ϓЀϤϹЄϕ 29

Slide 30

Slide 30 text

㰜͢ᘍ͞͵๋䔶΄ϔΰϹμϕϷ䯤᭜ ϔΰϹμϕϷ or Ϣήαϸݷ ஀ۆ src/ Lambda΄ϊЄφπЄϖΚAPI Gateway΄SwaggerϢήα ϸᗝͣ䁰 sam.yml ;΅吖΀ΡϓЀϤϹЄϕΨڥአͭ͵͚䁰ݳ΅ͩ ͩ΁ᗝͥ΄Θ͘Π src/api/swagger.yml API Gateway΄SwaggerϢήαϸ(ֵ͜䁰ݳ) src/handlers/<樛හݷ>/ Lambda΄ϊЄφπЄϖᗝͣ䁰 test/ ϓφϕπЄϖᗝͣ䁰( test/<樛හݷ>.spec.js ΀Ϳ) yarn.lock yarn΄ϺϐμϢήαϸ(ֵ͜䁰ݳ) buildspec.yml CodeBuild΄戔ਧϢήαϸ 30

Slide 31

Slide 31 text

4. CI/CDΨෆ͞Ρ 31

Slide 32

Slide 32 text

AWS SAM;CI/CD • AWS SAMͽCI/CDͯΡ͵Η΄ϑЄϸ or ςЄϠφ΅͚Σ͚Σ͘Ρ • → Jenkins/CircleCI/Travis CI/etc... • Քࢧ΅CodePipeline;CodeBuild΄奲ΕݳΥͱΨͪ奧Օ • → ݱ圵AWSςЄϠφ;΄昧൭͢ಋܹ͚ܦ᨝ • ͵Ͷ̵ͭΚΣ͜;ͭͼ͚Ρٖ਻ጱ΁Ϳ΄ϑЄϸ or ςЄϠφͽΘ ͽͣΡ΄ͽ֜ͽΘΞ͚΄ͽ΅ 32

Slide 33

Slide 33 text

CodePipeline • CI/CD΄ϞαϤ϶αЀ(ϢϺЄ)ΨᓕቘͽͣΡϫϚЄυϖςЄϠφ • → ϊЄφϊЄϖ΄ݐ஑/Ϡϸϖ/ϓφϕ;͚͜ϞαϤ϶αЀΨෆቘͽͣΡ • ϞαϤ϶αЀӤ΄ݱςЄϠφ΅φϓЄυ;޷Ό • → φϓЄυͽኞ౮ͫ΢͵ίЄϓΰϢήμϕ΅S3΁ᯈᗝͯΡͩ;΁ΞΠφϓЄυ樌ͽ昧൭ͯΡ • ϊЄφπЄϖ΄ݐ஑ض;ͭͼGitHubΨڥአݢᚆ • → ဳ఺ᅩ;ͭͼϣ϶ЀώΎ΄pushΨॶ䱛;ͯΡ஠ᥝ͘Π • → 匍䦒ᅩͽ΅όν΁๚䌏䖕 • CodePipeline͡ΟCloudFromation΄䋚ᤈ/Change Set֢౮/ๅෛ΀Ϳ͢ݢᚆ 33

Slide 34

Slide 34 text

CodeBuild • buildspec.yml ΁चͻͣϠϸϖ/ϓφϕΨ䋚ෞͽͣΡϫϚЄυϖςЄϠ φ • → ϢδЄχ;͚༷͜ஷͽᇙਧ΄όαϬЀνͽձ఺΄πϫЀϖΨ䋚ᤈ ݢᚆ • → circle.yml ;य़֛ݶͮ • ςЄϠφϺЄϸ΁䌏䖕ͭͼ͚Ρ΄ͽAWSμϹϔЀτϰϸ΄咲ᤈ͢ӧᥝ • → CI/CD SaaS;吖΀Ρڥᅩ 34

Slide 35

Slide 35 text

CI/CDϞαϤ϶αЀ - ق֛ 1. staging/productionϣ϶ЀώΎ΄ϫЄυΨॶ䱛΁CodePipeline䋚 ᤈ 2. GitHub͡ΟϊЄφπЄϖݐ஑ 3. CodeBuildͽϠϸϖ & ϓφϕ 4. CodePipeline͡ΟCloudFormation΄䋚ᤈ http://dev.classmethod.jp/cloud/aws/developing-cloudformation-ci-cd-pipeline-with-github-codebuild-codepipeline/ 35

Slide 36

Slide 36 text

CI/CDϞαϤ϶Ѐ - Source • CodePipeline͢೅୮ • GitHub͡ΟϊЄφπЄϖΨݐ஑ͭͼS3΁כਂ 36

Slide 37

Slide 37 text

CI/CDϞαϤ϶Ѐ - Build & Test • CodeBuild͢೅୮ • ๋ڡ΁S3͡ΟϊЄφπЄϖΨݐ஑ • ϓφϕ΅ϳϘϐϕϓφϕ • ͩ΄䁰ݳ΄Ϡϸϖ;΅ aws cloudformation package Ψ೰ͯ • ኞ౮ͭ͵ίЄϓΰϢήμϕΨS3΁כਂ 37

Slide 38

Slide 38 text

buildspec.yml΄ֺ version: 0.2 phases: install: commands: - | # AWS CLI pip install -U pip pip install -r requirements.txt # yarn curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install -y yarn yarn pre_build: commands: - | [ -d .sam ] || mkdir .sam aws cloudformation validate-template --template-body file://sam.yml yarn test build: commands: - | aws cloudformation package \ --template-file sam.yml \ --s3-bucket $S3_BUCKET \ --s3-prefix $S3_PREFIX \ --output-template-file .sam/packaged.yml artifacts: files: - .sam/* - params/* discard-paths: yes 38

Slide 39

Slide 39 text

buildspec.yml΄ֺ - 厏ह΄ψϐϕίϐϤ • CodeBuild΁ϝЀϖϸͫ΢ͼ͚Ρ pip ΄ϝЄυϴЀݘ͚ • ௏Υ΂ε϶Є͢咲ኞͭ͢ͷ΀΄ͽϝЄυϴЀӤͨͼͥͩ͠; install: commands: - | # AWS CLI pip install -U pip pip install -r requirements.txt # yarn curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update sudo apt-get install -y yarn yarn 39

Slide 40

Slide 40 text

buildspec.yml΄ֺ - ϓφϕ • AWS SAMϓЀϤϹЄϕ΄ϝϷϔЄτϴЀ;ϳϘϐϕϓφϕ • post_build ͽΚ͹ͼΘ͚͚ pre_build: commands: - | [ -d .sam ] || mkdir .sam aws cloudformation validate-template --template-body file://sam.yml yarn test 40

Slide 41

Slide 41 text

buildspec.yml΄ֺ - Ϡϸϖ • ஍ͽϺЄϸϝϐμͫͱ͵͚䦒΄͵Η΁ S3_PREFIX Ψ෭՞΀Ϳ΁ͭ ͼͥ͠;Ξ͚ build: commands: - | aws cloudformation package \ --template-file sam.yml \ --s3-bucket $S3_BUCKET \ --s3-prefix $S3_PREFIX \ --output-template-file .sam/packaged.yml 41

Slide 42

Slide 42 text

buildspec.yml΄ֺ - ίЄϓΰϢήμϕ΄ኞ౮ • 䄜䟵ͫ΢͵AWS SAMϓЀϤϹЄϕ;厏ह䶅΄Ϟ϶ϮЄόΨίЄϓΰ Ϣήμϕ;ͭͼS3΁ίϐϤϺЄϖ • discard-paths ΅ϔΰϹμϕϷݷΨ僻憙ͭͼίϐϤϺЄϖͯΡ͡Ϳ͜ ͡(͠অΕͽOK) artifacts: files: - .sam/* - params/* discard-paths: yes 42

Slide 43

Slide 43 text

CI/CDϞαϤ϶Ѐ - Change Set΄֢౮ • CodePipeline͢೅୮ • S3͡ΟίЄϓΰϢήμϕΨݐ஑ • Template΁䄜䟵ͫ΢͵AWS SAMϓЀϤϹЄϕΨ೰ਧ • Template Configuration΁厏ह䶅΄Ϟ϶ϮЄόϢήαϸΨ೰ਧ { "Parameters": { "Env": "stg", "ReadCapacityUnits": "10", "WriteCapacityUnits": "10" } } 43

Slide 44

Slide 44 text

CI/CDϞαϤ϶Ѐ - SNSϕϡϐμΎ΄᭗Ꭳ • CodePipeline͢೅୮ • Change Set΄ٖ਻Ψ嘦扯 • SNSϕϡϐμΨςϣφμ϶αϣͭ͵Lambda͡ΟSlack΀Ϳ΁᭗ ᎣͯΡͩ;Θݢᚆ 44

Slide 45

Slide 45 text

CI/CDϞαϤ϶Ѐ - Change Set΄䋚ᤈ • CodePipeline͢೅୮ • Stack Name΁厏ह䶅΄φόϐμݷΨ೰ਧͯΡ • Change SetΨ䋚ᤈͭͼϞαϤ϶αЀਠԧ 45

Slide 46

Slide 46 text

5. Ք஍΄઀๕ 46

Slide 47

Slide 47 text

Ք஍΄઀๕ • ςЄϝϹφίЄκϓμώϰͽϔϤϺαͯΡ厏ह΅嘦ᒈͫ΢ͼͣ͵ܦ᨝ • → AWS SAM/Serverless Framework΀Ϳޮ旽ϑЄϸ΄꧌䋚 • ͵ͶαЀϓνϹЄτϴЀϓφϕ or E2EϓφϕΨތΗ͵CI΄᮱ړͽᎣ憎͢੝΀͚ • → Localstackֵ͜;CIӤͽΘαЀφϕЄϸͭ΀͚;͚ͧ΀͚ • → ϳЄσԪֺΚϦφϕϤ϶μϓΰφ͢ΔͶ੝΀͚ • ϺЄθϸ樄咲厏हΨ꧌䋚ͫͱ͵͚ • → Localstack΅Քଙ咲ᤒͫ΢͵΄ͽΔͶΔͶ䱛ᚆӧ᪃΀ܦ᨝ • → ϯϐμ䨗ͥ΄τЀϖ͚ 47

Slide 48

Slide 48 text

6. Δ;Η 48

Slide 49

Slide 49 text

ςЄϝϹφίЄκϓμώϰ๋ṛ 49

Slide 50

Slide 50 text

͠ΥΠ 50