Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

bati11
July 14, 2016

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

bati11

July 14, 2016
Tweet

More Decks by bati11

Other Decks in Programming

Transcript

  1. "QFYͰෳ਺؀ڥͷ
    -BNCEBؔ਺ΛσϓϩΠ͢Δ࿩

    +"846(ΞʔΩςΫνϟઐ໳ࢧ෦Ϋϥ΢υωΠςΟϒ෼Պձ$%1ٞ࿦ձ
    CBUJ UXJUUFS!CBUJ@

    View Slide

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

    View Slide

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

    View Slide

  4. "QFY
    • [JQ Ξοϓϩʔυ όʔδϣϯൃߦ ΤΠϦΞεͷߋ
    ৽Λ΍ͬͯ͘ΕΔ
    • ෳ਺ͷ-BNCEBؔ਺Λѻ͑Δ
    • (P੡
    • (PͰॻ͍ͨ-BNCEBؔ਺ʹ΋ରԠͯ͠Δ
    • ͳͲͳͲଞʹ΋৭ʑ

    View Slide

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

    View Slide

  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::"
    }
    QSPKFDUKTPOʹ-BNCEBͷઃఆΛهड़͢Δ

    View Slide

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

    View Slide

  8. "QFY
    • "QFYΛબΜͩཧ༝
    • ؆୯ʹ࢖͑ͨɻΠϯετʔϧ΋؆୯ͩͬͨ
    • ϓϩδΣΫτ୯ҐͰ؅ཧͰ͖Δ
    • "1*(BUFXBZ͸࢖Θͳ͍
    • 3VOUJNFͱͯ͠/PEFKTΛ࢖͑Δ

    View Slide

  9. ຊ൪؀ڥͱ։ൃ؀ڥͰ
    ผͷόʔδϣϯΛ࢖͍͍ͨ

    View Slide

  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

    View Slide

  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 ͰσϓϩΠ

    View Slide

  12. ͔͠͠

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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ΞΧ΢ϯτΛ෼͚Δ
    ͜ͱΛਪ঑ͯ͠Δ

    View Slide

  18. Θ͔Δ͚Ͳ

    View Slide

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

    View Slide

  20. -BNCEBؔ਺Λ؀ڥ͝ͱʹ

    ࡞ͬͯ͠·͓͏

    View Slide

  21. • ઃఆϑΝΠϧͷOBNF@UFNQMBUFϓϩύςΟ
    my-pj
    ├── functions/
    │ ├── func1/
    │ │ ├── index.js
    │ │ ├── note_modules/
    │ │ └── package.json
    │ └── func2/
    │ └── index.js
    ├── project_dev.json
    └── project_prod.json
    {
    ・・・,
    "nameTemplate": "・・・"
    }

    View Slide

  22. • ઃఆϑΝΠϧͷOBNF@UFNQMBUFϓϩύςΟ
    • σϑΥϧτ͸
    \\1SPKFDU/BNF^^@\\'VODUJPO/BNF^^
    • ؀ڥຖͷઃఆϑΝΠϧͰαϑΟοΫεΛ͚ͭΔ
    \\1SPKFDU/BNF^^@\\'VODUJPO/BNF^^@EFW
    \\1SPKFDU/BNF^^@\\'VODUJPO/BNF^^@QSPE

    View Slide


  23. NZQK@GVOD@EFWͱ͍͏໊લͷ-BNCEBؔ਺

    NZQK@GVOD@QSPEͱ͍͏໊લͷ-BNCEBؔ਺
    $ apex deploy --env prod
    $ apex deploy --env dev

    View Slide

  24. version2
    version1
    CURRENT version2
    version1
    CURRENT
    my-pj_func1_dev my-pj_func1_prod
    • -BNCEBؔ਺ࣗମ͕ผʹͳΔͷͰɺΤΠϦΞε͕
    ͔ͭ͠ͳͯ͘΋؀ڥຖʹ࢖͍෼͚͕Մೳ

    View Slide

  25. ·ͱΊ

    View Slide

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

    View Slide

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

    View Slide