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

Rust で AWS で活用しよう!

Tabito Hara
December 12, 2023

Rust で AWS で活用しよう!

estie さん主催「Rust、何もわからない... #11」で講演した資料です。
AWS Lambda 関数を Rust で書くことについて、紹介しました。

Tabito Hara

December 12, 2023
Tweet

Other Decks in Technology

Transcript

  1. 2 ©2023 Loglass Inc. ࣗݾ঺հ גࣜձࣾϩάϥε ։ൃ෦ Ϋϥ΢υΤϯδχΞ ݪ ཱྀਓ

    εύίϯͰఱؾ༧ใΛߦ͏ιϑτ΢ΣΞ։ൃ ೥ ɺݕࡧΤϯδ ϯγεςϜͷ։ൃձࣾͰͷϓϩμΫτ։ൃ͓Αͼݚڀ։ൃɺ"84 ʢαϙʔτΤϯδχΞʣΛܦͯɺ೥݄ʹϩάϥεʹೖࣾɻ ݱࡏ͸Ϋϥ΢υΤϯδχΞϦϯάΛϕʔεͱͨ͠։ൃࢧԉΛ௨͡ ͯϓϩμΫτͷՁ஋ͱ৴པੑ޲্Λ໨ࢦ͢ɻ • Ϋϥ΢υΠϯϑϥ • ηΩϡϦςΟ • ։ൃɾϏδωεࢧԉ • σʔλج൫ "84ೝఆࢿ֨શףɺ,VCFSOFUFTೝఆࢿ֨શףʢ߹֨ྺʣɻ ʮίϯηϓτ͔Βཧղ͢Δ3VTUʯʢٕज़ධ࿦͔ࣾΒൃചʣΛࣥචɻ ݱࡏɺ"84*B$ʹؔ͢Δॻ੶Λࣥචதɻ
  2. 4 ©2023 Loglass Inc. ϩάϥεͷओͳٕज़ελοΫ όοΫΤϯυ • ,PUMJO 4QSJOH#PPU ϑϩϯτΤϯυ

    • 5ZQF4DSJQU 3FBDU Ϋϥ΢υΠϯϑϥ • "84 ◦ &$4'BSHBUF ◦ "VSPSB ◦ -BNCEB ◦ 4UFQ'VODUJPO ◦ FUDʜ
  3. 6 ©2023 Loglass Inc. "84-BNCEBؔ਺ͱ͸ʁ • "84ͷαʔϏεͷҰͭ • αʔόʔϨεͰϓϩάϥϜΛ࣮ߦͰ͖Δ ◦

    ࣗ෼Ͱ &$ΠϯελϯεͳͲͷαʔόʔΛ༻ҙ͢Δඞཁ͕ͳ͍ ˠ௿ίετʂ ◦ ࣮ߦ࣌ؒͷ্ݶ͸෼ɺϝϞϦͷ্ݶ͸ (#ɺ࣮ߦճ਺ͱϝϞϦཁٻྔ º NT୯Ґͷ࣌ؒͰ՝ۚ • "84ͷϚωʔδυαʔϏεͱࣗ෼ͷ؀ڥʹΧελϚΠζͨ͠ػೳΛ૊Έ߹ΘͤΔ͜ͱ͕Ͱ͖Δ • ฐࣾͰͷ༻్ͷ΄ΜͷҰྫ ◦ ӡ༻ܥ ▪ TUH؀ڥͷ࣌ࠁʹΑΔࣗಈىಈɾఀࢭ ◦ ؂ࢹܥ ▪ ֎ܗ؂ࢹʢ"1* &&ʣ ▪ $MPVE8BUDI-PHTͷαϒεΫϦϓγϣϯϑΟϧλʔʹΑΔϩάͷ؂ࢹ ◦ σϓϩΠܥ ▪ $PEF1JQFMJOFͷதͰΞΫγϣϯʢσϓϩΠͷ੍ޚͳͲʣ ◦ σʔλج൫ ▪ Ϛελʔσʔλͷσʔλ΢ΣΞϋ΢ε 3FETIJGU ΁ͷϩʔυ ◦ ϓϩμΫτͷػೳ ▪ ը໘Ͱ͸ͳ͘ 4'51Λ௨ͨ͡ϑΝΠϧΞοϓϩʔυ ϩάϥεͰ͸΄΅͢΂ͯͷ -BNCEBؔ਺Λ 3VTUͰॻ͍͍ͯ·͢
  4. 7 ©2023 Loglass Inc. 3VTUͰͷ -BNCEBͷ࢝Ίํ • BXT@MBNCEB@SVTU@SVOUJNFΛΠϯετʔϧ ◦ IUUQTHJUIVCDPNBXTMBCTBXTMBNCEBSVTUSVOUJNF

    ◦ ͜ΕʹΑͬͯɺ-BNCEBΛ 3VTUͰ࣮ߦ͢ΔͨΊͷΧελϜϥϯλΠϜͷ ϥΠϒϥϦ΍ DBSHPMBNCEBίϚϯυ͕Πϯετʔϧ͞ΕΔɻ ◦ .BD04Ͱ͋Ε͹ɺCSFXJOTUBMMͰ؆୯ʹΠϯετʔϧͰ͖Δ • DBSHPOFXͷ୅ΘΓʹ DBSHPMBNCEBOFXͰϓϩδΣΫτΛ࡞੒͢Δ ◦ TSDNBJOSTʹςϯϓϨʔτ͕࡞੒͞ΕΔɻ
  5. 8 ©2023 Loglass Inc. 3VTUͷ -BNCEBͷίʔυͷߏ଄ʢDBSHPMBNCEBOFXͰ࡞੒͞ΕΔςϯϓϨʔτʣ リクエストの型定義(自分で定義できるし、aws_lambda_events に定義された型 を使うこともできる) レスポンスの型定義(同上)

    本体の実装 ここに本体の処理内容を書く。 入力の payload は event.payload.XXX で参照できる。 runtime の起動(テンプレートそのままでよい)
  6. 9 ©2023 Loglass Inc. ͳͥ 3VTUͰ "84-BNCEBؔ਺Λʁ • ߴ଎ʹ࣮ߦͰ͖ͯɺϝϞϦ࢖༻ྔ͕খͯ͘͞ࡁΉ ˠ՝͕ۚ҆͘ࡁΉ

    • ੩తܕ෇͖ݴޠͰ͋ΔͷͰɺೖྗ΍ग़ྗͷεΩʔϚ͕ෳࡶͰ΋ɺΤσΟλͷ ิ׬Λ࢖͍ͳ͕Βόά͕ग़ʹ͍͘ίʔυ͕ॻ͚Δɻ ◦ +40/ͷγϦΞϥΠζɺσγϦΞϥΠζ΋ϓϩάϥϚ͕ؾʹ͢Δ͜ͱ͸ ͳ͍ɻ • γϯάϧόΠφϦͰɺσϓϩΠ͕؆୯ ◦ ίϯύΠϧ͞Ε࣮ͨߦόΠφϦΛ [JQʹΞʔΧΠϒͯ͠ɺΞοϓϩʔυ ͢Δ͚ͩɻ ◦ ଞͷݴޠͰ͋Δͱɺґଘؔ܎͕͋ΔϞδϡʔϧΛҰॹʹ [JQʹΞʔΧΠ ϒͨ͠Γ͢Δඞཁ͕͋Γɺ໘౗ͳ͜ͱ΋͋Δɻ
  7. 10 ©2023 Loglass Inc. ߴ଎ʹ࣮ߦͰ͖ͯɺϝϞϦ࢖༻ྔ͕খͯ͘͞ࡁΉ ͳͥ 3VTUͰ "84-BNCEBؔ਺Λʁ ଎͍ɺϝϞϦ࢖༻ྔ͕খ͍͞ ˠ

    ՝͕ۚখ͍͞ -BNCEBͷ՝ۚ • ࣮ߦճ਺ • ϝϞϦཁٻྔ Y࣮ߦ࣌ؒ 'PSDJB$VCF4IJOKVLVSTΛ։࠵͠·ͨ͠  IUUQTXXXGPSDJBDPNCMPHIUNM ۀ຿Ͱ։ൃͨ͠ "1*Λ ͭͷݴޠͰ࣮૷ͯ͠ϝϞϦ࢖༻ྔͱ࣮ߦ࣌ؒΛൺֱ ʹ࣮ߦ
  8. 11 ©2023 Loglass Inc. ੩తܕ෇͖ݴޠͰ͋Δ͜ͱͷར఺ ͳͥ 3VTUͰ "84-BNCEBؔ਺Λʁ • "84͔ΒͷΠϕϯτͷεΩʔϚͷఆٛΛఏڙ͢Δ

    DSBUF BXT@MBNCEB@FWOFUT ͕͋ΔͷͰɺͦΕΛ ࢖͑͹ΠϕϯτͷॲཧΛΤσΟλิ׬Λ࢖͍ͳ͕Βॻ͚Δɻ IUUQTEPDTSTBXT@MBNCEB@FWFOUTMBUFTUBXT@MBNCEB@ FWFOUT 4Πϕϯτͷ 3FDPSEͷଐੑ͕ิ׬Ͱදࣔ͞Ε Δ IUUQTEPDTBXTBNB[PODPNKB@KQ"NB[PO4MBUFTUVTFSHVJEFOPUJGJDBUJPODPOUFOU TUSVDUVSFIUNM ೖྗͱͳΔ 4ΠϕϯτϨίʔυͷαϯϓϧ
  9. 12 ©2023 Loglass Inc. γϯάϧόΠφϦͰɺσϓϩΠ͕؆୯ ͳͥ 3VTUͰ "84-BNCEBؔ਺Λʁ ࣗ෼Ͱ [JQϑΝΠϧΛ࡞੒ͯ͠Ξοϓϩʔυ͢Δํ๏

    • ࣍ͷίϚϯυͰ UBSHFUMBNCEB\QBDLBHFOBNF^CPPUTUSBQͱ͍͏ϑΝΠϧ͕࣮ߦό ΠφϦͱͯ͠ੜ੒ "3.ͷ৔߹ ◦ DBSHPMBNCEBCVJMESFMFBTFBSN • CPPUTUSBQΛ [JQͰΞʔΧΠϒͯ͠ɺ"84Ϛωδϝϯτίϯιʔε͔ΒΞοϓϩʔυ DBSHPMBNCEBEFQMPZΛ࢖͏ ্ͷҰ࿈ͷ͜ͱΛࣗಈͰ΍ͬͯ͘ΕΔɻ ଞͷݴޠͩͱɺґଘؔ܎΋ؚΊͯ [JQΞʔΧΠϒΛ࡞੒͢Δͷ͕൥ࡶͳ৔߹΋ • 1ZUIPOͷྫ ◦ IUUQTEPDTBXTBNB[PODPNKB@KQMBNCEBMBUFTUEHQZUIPOQBDLBHFIUNM
  10. 14 ©2023 Loglass Inc. "844%,GPS3VTU͕ ("ʹͳΓ·ͨ͠ʂʂ ࢀߟ৘ใ • "844%,͸ "84ͷϦιʔεΛૢ࡞͢Δ

    "1*ΛɺϓϩάϥϛϯάݴޠͰهड़Ͱ͖Δ΋ͷͰ͢ɻ • 1SFWJFXʹͳ͍ͬͯͨ 3VTU޲͚͕ઌ೔ɺ("ʹͳΓ·ͨ͠ɻ • 'MVFOU#VJMEFS4UZMFͰύϥϝʔλΛઃఆͯ͠ɺTFOE Ͱ "1*ʹϦΫΤετ͢ΔελΠϧͰશମ͕ ౷Ұ͞Ε͍ͯ·͢ɻ ◦ ΤσΟλͷิ׬Ͱઃఆύϥϝʔλ͕Θ͔Δͷ΋͏Ε͍͠ 4ͷ (FU0CKFDUͷίʔυྫ ࢀߟ "844%,GPS3VTUʹ͍ͭͯॻ͍ͨϒϩάIUUQT[FOOEFWMPHMBTTBSUJDMFTDDD
  11. 15 ©2023 Loglass Inc. ·ͱΊ • -BNCEBΛ࢖͑ΔΑ͏ʹͳΔͱɺ"84׆༻ͷࣗ༝౓͕͞Βʹ޿͕Γ·͢ɻ • -BNCEBΛॻ͍ͯΈΑ͏ͱࢥͬͨΒɺͥͻ 3VTUͰॻ͍ͯΈ·͠ΐ͏

    ◦ ؆୯ ▪ Πϯετʔϧ΋ ▪ ؆୯ͳίʔυΛॻ͘ͷ΋ ▪ σϓϩΠ΋ ◦ ܦࡁత ▪ ߴ଎ɺলϝϞϦ͔ͩΒ՝͕͍ۚ҆
  12. 16 ©2023 Loglass Inc. ϩάϥεͰ͸ݱࡏʮྑ͍ܠؾΛ࡞Ζ͏ɻʯͱ͍͏ϛογϣϯୡ੒Λ໨ࢦ͠ɺ஥ؒΛืू͍ͯ͠·͢ʂ 8FBSFIJSJOH IUUQTKPCMPHMBTTKQ ืूதͷओͳΤϯδχΞͷϙδγϣϯ $3& ΞϓϦέʔγϣϯج൫

    43& Ϋϥ΢υΤϯδχΞ ιϑτ΢ΣΞΤϯδχΞʢϨϙʔτɾσʔλ෼ੳྖҬʣ 8FCΞϓϦέʔγϣϯΤϯδχΞ 2"4&5ΤϯδχΞ ΤϯδχΞϦϯάϚωʔδϟʔ ͳͲ
  13. 17