Apexで複数環境のLambda関数をデプロイする話 #jawsug

06bfc3de5c1b439d2081b8a1f196afd7?s=47 bati11
July 14, 2016

Apexで複数環境のLambda関数をデプロイする話 #jawsug

06bfc3de5c1b439d2081b8a1f196afd7?s=128

bati11

July 14, 2016
Tweet

Transcript

  1. "QFYͰෳ਺؀ڥͷ -BNCEBؔ਺ΛσϓϩΠ͢Δ࿩  +"846(ΞʔΩςΫνϟઐ໳ࢧ෦Ϋϥ΢υωΠςΟϒ෼Պձ$%1ٞ࿦ձ CBUJ UXJUUFS!CBUJ@

  2. • -BNCEBͷσϓϩΠͲ͏΍Ζ͏ʁ • ࣗಈԽ͍ͨ͠

  3. http://apex.run/ ͜ͷࢿྉͰ͸ v0.10.2 Λର৅ͱ͠·͢

  4. "QFY • [JQ Ξοϓϩʔυ όʔδϣϯൃߦ ΤΠϦΞεͷߋ ৽Λ΍ͬͯ͘ΕΔ • ෳ਺ͷ-BNCEBؔ਺Λѻ͑Δ •

    (P੡ • (PͰॻ͍ͨ-BNCEBؔ਺ʹ΋ରԠͯ͠Δ • ͳͲͳͲଞʹ΋৭ʑ
  5. "QFY • ϓϩδΣΫτͱ͍͏୯ҐͰෳ਺ͷ-BNCEBؔ਺Λ؅ཧ my-pj ├── functions/ │ ├── func1/ │

    │ ├── index.js │ │ ├── note_modules/ │ │ └── package.json │ └── func2/ │ └── index.js └── project.json
  6. "QFY • ϓϩδΣΫτͱ͍͏୯ҐͰෳ਺ͷ-BNCEBؔ਺Λ؅ཧ my-pj ├── functions/ │ ├── func1/ │

    │ ├── index.js │ │ ├── note_modules/ │ │ └── package.json │ └── func2/ │ └── index.js └── project.json { "name": "my-lambda-pj", "description": "", "runtime": "nodejs4.3", "memory": 128, "timeout": 5, "role": "arn:aws:iam::<hogehoge>" } QSPKFDUKTPOʹ-BNCEBͷઃఆΛهड़͢Δ
  7. "QFY • ϓϩδΣΫτͱ͍͏୯ҐͰෳ਺ͷ-BNCEBؔ਺Λ؅ཧ my-pj ├── functions/ │ ├── func1/ │

    │ ├── index.js │ │ ├── note_modules/ │ │ └── package.json │ └── func2/ │ └── index.js └── project.json ͰσϓϩΠ $ apex deploy
  8. "QFY • "QFYΛબΜͩཧ༝ • ؆୯ʹ࢖͑ͨɻΠϯετʔϧ΋؆୯ͩͬͨ • ϓϩδΣΫτ୯ҐͰ؅ཧͰ͖Δ • "1*(BUFXBZ͸࢖Θͳ͍ •

    3VOUJNFͱͯ͠/PEFKTΛ࢖͑Δ
  9. ຊ൪؀ڥͱ։ൃ؀ڥͰ ผͷόʔδϣϯΛ࢖͍͍ͨ

  10. .VMUJQMF&OWJSPONFOUT • "QFY͸ෳ਺؀ڥΛαϙʔτͯ͠Δ my-pj ├── functions/ │ ├── func1/ │

    │ ├── index.js │ │ ├── note_modules/ │ │ └── package.json │ └── func2/ │ └── index.js ├── project_dev.json └── project_prod.json 環境毎の設定ファイルを用意 • project_dev.json • project_prod.json
  11. .VMUJQMF&OWJSPONFOUT • "QFY͸ෳ਺؀ڥΛαϙʔτͯ͠Δ my-pj ├── functions/ │ ├── func1/ │

    │ ├── index.js │ │ ├── note_modules/ │ │ └── package.json │ └── func2/ │ └── index.js ├── project_dev.json └── project_prod.json $ apex deploy --env prod ͰσϓϩΠ
  12. ͔͠͠

  13. "QFYͰ͸ͭͷ ΤΠϦΞε͔͠࡞ΒΕͳ͍

  14. "QFYͷΤΠϦΞε • $633&/5ͱ͍͏ΤΠϦΞε͕όʔδϣϯΛࢦ͢ version1 CURRENT

  15. "QFYͷΤΠϦΞε • $633&/5ͱ͍͏ΤΠϦΞε͕όʔδϣϯΛࢦ͢ version2 version1 CURRENT σϓϩΠޙ

  16. ؀ڥ͝ͱͷΤΠϦΞε ࡞Γ͍ͨͷ͚ͩͲ

  17. http://apex.run/#how-do-you-manage-multiple-environments “It’s highly recommended to create separate AWS accounts for

    staging and production environments.” • "QFYͰ͸ɺ؀ڥ͝ͱʹ"84ΞΧ΢ϯτΛ෼͚Δ ͜ͱΛਪ঑ͯ͠Δ
  18. Θ͔Δ͚Ͳ

  19. ͦ͏΋͍͔ͳ͍͜ͱ΋͋Δ

  20. -BNCEBؔ਺Λ؀ڥ͝ͱʹ
 ࡞ͬͯ͠·͓͏

  21. • ઃఆϑΝΠϧͷOBNF@UFNQMBUFϓϩύςΟ my-pj ├── functions/ │ ├── func1/ │ │

    ├── index.js │ │ ├── note_modules/ │ │ └── package.json │ └── func2/ │ └── index.js ├── project_dev.json └── project_prod.json { ・・・, "nameTemplate": "・・・" }
  22. • ઃఆϑΝΠϧͷOBNF@UFNQMBUFϓϩύςΟ • σϑΥϧτ͸ \\1SPKFDU/BNF^^@\\'VODUJPO/BNF^^ • ؀ڥຖͷઃఆϑΝΠϧͰαϑΟοΫεΛ͚ͭΔ \\1SPKFDU/BNF^^@\\'VODUJPO/BNF^^@EFW \\1SPKFDU/BNF^^@\\'VODUJPO/BNF^^@QSPE

  23. •  NZQK@GVOD@EFWͱ͍͏໊લͷ-BNCEBؔ਺ •  NZQK@GVOD@QSPEͱ͍͏໊લͷ-BNCEBؔ਺ $ apex deploy --env

    prod $ apex deploy --env dev
  24. version2 version1 CURRENT version2 version1 CURRENT my-pj_func1_dev my-pj_func1_prod • -BNCEBؔ਺ࣗମ͕ผʹͳΔͷͰɺΤΠϦΞε͕

    ͔ͭ͠ͳͯ͘΋؀ڥຖʹ࢖͍෼͚͕Մೳ
  25. ·ͱΊ

  26. • -BNCEBؔ਺ͷσϓϩΠΛࣗಈԽ͍ͨ͠ • "QFY͸࢖͍΍͍͢ • OBNF@UFNQMBUFΛ࢖ͬͯ؀ڥຖͷ-BNCEBؔ਺ Λ༻ҙ͢Ε͹ɺͭͷ"84ΞΧ΢ϯτͰ΋ෳ਺ ؀ڥʹରԠͰ͖Δ • OBNF@UFNQMBUF͍Βͳ͘ͳ͍ʁͱ͍͏JTTVF͕

    ্͕ͬͯΔͷͰࠓޙ͸ผͷํ๏ʹͳΔ͔΋ • IUUQTHJUIVCDPNBQFYBQFYJTTVFT
  27. • -BNCEBؔ਺ͷσϓϩΠΛࣗಈԽ͍ͨ͠ • "QFY͸࢖͍΍͍͢ • OBNF@UFNQMBUFΛ࢖ͬͯ؀ڥຖͷ-BNCEBؔ਺ Λ༻ҙ͢Ε͹ɺͭͷ"84ΞΧ΢ϯτͰ΋ෳ਺ ؀ڥʹରԠͰ͖Δ • OBNF@UFNQMBUF͍Βͳ͘ͳ͍ʁͱ͍͏JTTVF͕

    ্͕ͬͯΔͷͰࠓޙ͸ผͷํ๏ʹͳΔ͔΋ • IUUQTHJUIVCDPNBQFYBQFYJTTVFT ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ