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

GitHub ActionsでLambdaコンテナをデプロイしてみた - NIFTY Tech...

GitHub ActionsでLambdaコンテナをデプロイしてみた - NIFTY Tech Talk #15

Avatar for ニフティ株式会社

ニフティ株式会社

November 02, 2023
Tweet

Video


Resources

今さら聞けない!GitHub Actions超入門 - NIFTY Tech Talk #15

https://nifty.connpass.com/event/299800/

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. Copyright © NIFTY Corporation All Rights Reserved. GitHub ActionsͰLambdaίϯςφΛ σϓϩΠͯ͠Έͨ

    NIFTY Tech Talk #15 ࠓ͞Βฉ͚ͳ͍ʂGitHub Actions௒ೖ໳ ଜদɹܒ׮ χϑςΟגࣜձࣾ
  2. Copyright © NIFTY Corporation All Rights Reserved. ࣗݾ঺հ 2 χϑςΟגࣜձࣾ

    ձһγεςϜάϧʔϓ ଜদ ܒ׮ ୲౰ۀ຿ • χϑςΟχϡʔε։ൃӡ༻ झຯ • αοΧʔ؍ઓ(ओʹJϦʔά) ◦ ԣ඿FɾϚϦϊεͷαϙʔλʔ
  3. Copyright © NIFTY Corporation All Rights Reserved. σϓϩΠ͢Δ΋ͷ 4 •

    ࣗࣾCMSͰఆظग़ྗ͍ͯ͠ΔαΠτϚοϓ࡞੒ ◦ αΠτϚοϓ͸ݕࡧΤϯδϯ(GoogleͳͲ)ʹWebϖʔδΛ఻͑ΔϑΝΠϧ • ࣗࣾCMS୤٫͢ΔγεςϜ࡮৽ͷҰ؀ͰαΠτϚοϓੜ੒͢ΔόονΛҠߦ • EventBridge + Lambda + S3ͷߏ੒Ͱ࣮૷ • Lambda͸ΧελϜϥϯλΠϜ(Go)Λར༻ͯ͠ɺίϯςφΠϝʔδͰσϓϩΠ ◦ ͜ͷ෦෼ΛࣗಈσϓϩΠͰ͖ΔΑ͏ʹͨ͠
  4. Copyright © NIFTY Corporation All Rights Reserved. GitHub ActionsΛબΜͩཧ༝ 5

    • ϞϊϨϙతͳϦϙδτϦͳͷͰɺCodeγϦʔζͰͷߏங͸ෳࡶʹͳΔ • কདྷతʹ։ൃঢ়گʹԠ͖ͨ͡Ίࡉ͔͍ϏϧυΛఏڙ͍ͨ͠ • GitHub Actionsͷํ͕؅ཧ͠΍͍͢ • GitHub ActionsͰͷσϓϩΠΛߏஙͨ͜͠ͱ͕ͳ͔ͬͨ
  5. Copyright © NIFTY Corporation All Rights Reserved. σϓϩΠͷྲྀΕ 6 1.

    master΍developʹpushͳͲͷΠϕϯτͰൃՐ ◦ push΍workflow_dispatchΠϕϯτΛར༻ 2. DockerΠϝʔδͷϏϧυ 3. ECR(Elastic Container Registry)΁ͷDockerΠϝʔδͷϓογϡ 4. Lambdaͷؔ਺ߋ৽ 2~4͸࠶ར༻ՄೳͳϫʔΫϑϩʔ(2ͱ3ɾ4ʹ෼ׂ)ʹ ੾Γग़ͯ͠ɺಉ͡ॲཧΛෳ਺ͷϫʔΫϑϩʔͰ ఆٛ͠ͳͯ͘΋͍͍Α͏ʹͨ͠
  6. Copyright © NIFTY Corporation All Rights Reserved. ࠶ར༻ՄೳͳϫʔΫϑϩʔ 7 •

    job୯ҐͰϫʔΫϑϩʔΛ࢖͍ճ͢͜ͱ͕Մೳ ◦ ͍ΘΏΔɺaction(actions/checkoutͳͲ)͸step୯Ґͷ࢖͍ճ͠ ◦ Ұ࿈ͷॲཧΛڞ௨Խ͢Δ͜ͱ͕Ͱ͖Δ • usesͰݺͼग़͢͜ͱ͕Մೳ
  7. Copyright © NIFTY Corporation All Rights Reserved. DockerΠϝʔδͷϏϧυ 8 •

    ιʔείʔυͷऔಘ • DockerΠϝʔδͷΫϩείϯύΠϧ؀ڥઃఆ • DockerΠϝʔδͷϏϧυ
  8. Copyright © NIFTY Corporation All Rights Reserved. ECR΁ͷϓογϡ 9 •

    OIDCͰͷAWSೝূ • AWSೝূΛར༻ͨ͠docker login • DockerΠϝʔδͷλά෇͚ • ECR΁ͷDockerΠϝʔδͷϓογϡ
  9. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 11 ࠶ར༻ՄೳͳϫʔΫϑϩʔಠಛͷ੍ݶ

    • ݺͼग़͠ݩͷenvม਺Λ࠶ར༻ՄೳͳϫʔΫϑϩʔʹ௚઀౉ͤͳ͍ • jobͷதͰɺoutputʹग़ྗ͔ͯ͠Βɺ࠶ར༻ՄೳͳϫʔΫϑϩʔʹ౉͢Α͏ʹͨ͠
  10. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 12 Docker

    BuildxʹΑΔϚϧνΞʔΩςΫνϟϏϧυ͕஗͍ • GItHub Actionsͷ࣮ߦ؀ڥ͸amd64(x86_64) • arm64ͷLambdaΛར༻ͨͨ͠Ίɺarm64ʹΫϩεϏϧυ • amd64Ͱ͸໿50sͷϏϧυ͕300s͔͔ͬͯ΋ऴΘΒͳ͍ • QEMUͰΫϩεϏϧυ͢Δ৔߹ʹ͸Φʔόʔϔου͕ൃੜ͢Δ͜ͱ͕ط஌
  11. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 13 ରॲࡦ

    • ͦͷ··ؤுΔ • arm64ΛఘΊͯɺamd64ͰLambdaΛಈ͔͢ • ηϧϑϗετϥϯφʔΛར༻͢Δ • M1ϥϯφʔ(macos)Λར༻͢Δ • GitHub ActionsΛఘΊͯɺCodeγϦʔζΛར༻͢Δ
  12. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 14 ରॲࡦ

    • ͦͷ··ؤுΔ • arm64ΛఘΊͯɺamd64ͰLambdaΛಈ͔͢ • ηϧϑϗετϥϯφʔΛར༻͢Δ • M1ϥϯφʔ(macos)Λར༻͢Δ • GitHub ActionsΛఘΊͯɺCodeγϦʔζΛར༻͢Δ ྲྀੴʹݫ͍͠
  13. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 15 ରॲࡦ

    • ͦͷ··ؤுΔ • arm64ΛఘΊͯɺamd64ͰLambdaΛಈ͔͢ • ηϧϑϗετϥϯφʔΛར༻͢Δ • M1ϥϯφʔ(macos)Λར༻͢Δ • GitHub ActionsΛఘΊͯɺCodeγϦʔζΛར༻͢Δ ྲྀੴʹݫ͍͠ ؆୯ʹఘΊͨ͘ͳ͍
  14. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 16 ରॲࡦ

    • ͦͷ··ؤுΔ • arm64ΛఘΊͯɺamd64ͰLambdaΛಈ͔͢ • ηϧϑϗετϥϯφʔΛར༻͢Δ • M1ϥϯφʔ(macos)Λར༻͢Δ • GitHub ActionsΛఘΊͯɺCodeγϦʔζΛར༻͢Δ ྲྀੴʹݫ͍͠ ؆୯ʹఘΊͨ͘ͳ͍ ؅ཧίετ͕ݫ͍͠
  15. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 17 ରॲࡦ

    • ͦͷ··ؤுΔ • arm64ΛఘΊͯɺamd64ͰLambdaΛಈ͔͢ • ηϧϑϗετϥϯφʔΛར༻͢Δ • M1ϥϯφʔ(macos)Λར༻͢Δ • GitHub ActionsΛఘΊͯɺCodeγϦʔζΛར༻͢Δ ྲྀੴʹݫ͍͠ ؅ཧίετ͕ݫ͍͠ ௨ৗͷ20ഒίετ͕͔͔Δ ؆୯ʹఘΊͨ͘ͳ͍
  16. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 18 ରॲࡦ

    • ͦͷ··ؤுΔ • arm64ΛఘΊͯɺamd64ͰLambdaΛಈ͔͢ • ηϧϑϗετϥϯφʔΛར༻͢Δ • M1ϥϯφʔ(macos)Λར༻͢Δ • GitHub ActionsΛఘΊͯɺCodeγϦʔζΛར༻͢Δ ྲྀੴʹݫ͍͠ ؅ཧίετ͕ݫ͍͠ ௨ৗͷ20ഒίετ͕͔͔Δ ఘΊͨ͘ͳ͍ ؆୯ʹఘΊͨ͘ͳ͍
  17. Copyright © NIFTY Corporation All Rights Reserved. ۤ࿑ͨ͠఺ 19 dockerͷυΩϡϝϯτʹTips͕͋ͬͨ

    • ίʔυΛϏϧυ͢Δ෦෼ͰΫϩεϏϧυ͢Δ • ΫϩείϯύΠϧͰ͖ΔݴޠͰ͋Ε͹ɺར༻Մ ೳͳճආࡦ • GoͷίϯύΠϧΛamd64؀ڥͰarm64ʹΫϩ είϯύΠϧ • ωΠςΟϒ؀ڥͷϏϧυͱ΄΅ಉ͡Ϗϧυ࣌ؒ ͰϏϧυ͕࣮ݱͰ͖ͨ https://docs.docker.com/build/guide/multi-platform/#build-using-cross-compilation
  18. Copyright © NIFTY Corporation All Rights Reserved. ޻෉ͨ͠఺ 20 ࠶ར༻ՄೳͳϫʔΫϑϩʔͷ࠾༻

    • ൚༻ੑΛߴΊͨͷͰɺຊ൪ɾ։ൃͰಉ͡ϫʔΫϑϩʔϑΝΠϧͰ׬݁ • ಉ͡ߏ੒ͷόονΛ૿΍ͨ࣌͠ʹɺ࠶ར༻ՄೳͳϫʔΫϑϩʔΛݺͿ͚ͩͰɺࣗಈσ ϓϩΠΛߏஙͰ͖Δ
  19. Copyright © NIFTY Corporation All Rights Reserved. ·ͱΊ 21 GitHub

    ActionsͰLambdaίϯςφΛࣗಈσϓϩΠͰ͖ΔΑ͏ʹͨ͠ • GitHub ActionsͰؾܰʹࣗಈσϓϩΠΛߏஙͰ͖Δ • ࠶ར༻ՄೳͳϫʔΫϑϩʔ͸ศར • GitHub ActionsͰDockerͷϚϧνΞʔΩςΫνϟϏϧυʹ͸஫ҙ