2019/06/12 note engineer meetup #3 (https://pieceofcake.connpass.com/event/128607/) でお話しました
Ҫ@fukuiretu2019.06.12OPUFFOHJOFFSNFFUVQ$MPVE'SPOUVTFDBTFTOPUFͷࣄྫ
View Slide
ࣗݾհEngineerFull Remote Workerpiece of cake, inc.ೖࣾ੨ݝ߂લࢢࡏॅ3VCZPO3BJMT/VYUKT"84 @r82@fukuiretu@fukuiretuҪ
ΞδΣϯμOPUFͷΠϯϑϥߏ$'Λར༻͢ΔϝϦοτʗσϝϦοτ5JQT·ͱΊ
OPUFͷΠϯϑϥߏ$MPVE'SPOUͰ"OHVMBS /VYUΛΓସ͑
$MPVE'SPOU $'ͱ"84͕ఏڙ͢ΔߴɾߴύϑΥʔϚϯεͳίϯςϯπ৴αʔϏε $%/ΞηοτͷΩϟογϡ༻్Ҏ֎ʹ͑Δʂ
ύεϕʔεͷϦόʔεϓϩΩγ!$'Λར༻͢ΔϝϦοτ
Multi Origin&MBTUJD#FBOTUBML"1*(BUFXBZ"-#4etc…$'Λར༻͢ΔϝϦοτ
ύεຖʹΩϟογϡઃఆ͕ՄೳElasticBeanstalkpath/login/recommendALB ͳ͠ͳ͠/aseets/images/* ࣌ؒS3origin cache$'Λར༻͢ΔϝϦοτCache Behavior
ҎԼͷϫΠϧυΧʔυͷΈར༻Մೳͦ͘͠ΕҎ্ͷจࣈྻจࣈॊೈͳਖ਼نදݱ͑ͳ͍ͷͰ63-ઃܭ৻ॏʹʂύεύλʔϯͷҙ!$'Λར༻͢ΔϝϦοτ
$'Λར༻͢ΔϝϦοτηΩϡϦςΟରࡦ!
1$*%44ରԠ#05ରࡦ%%P4؇944ରࡦ42-Jରࡦhttps://aws.amazon.com/jp/waf/$'Λར༻͢ΔϝϦοτ"848"'ʢΣϒΞϓϦέʔγϣϯϑΝΠΞΥʔϧʣAWS WAF
ແྉͰ͑ΔʢΕͳ͍ͯ͘͘Δʣ%%P4؇https://aws.amazon.com/jp/shield/$'Λར༻͢ΔϝϦοτ"844IJFMEʢϚωʔδυܕͷ%%P4อޢʣAWS Shield Standard
$'Λར༻͢ΔϝϦοτ"-#ͷલஈʹஔ͘͜ͱͰϨεϙϯε্!
$'Λར༻͢ΔϝϦοτSecured API Acceleration with Engineers from Amazon CloudFront and Slackhttps://www.slideshare.net/AmazonWebServices/secured-api-acceleration-with-engineers-from-amazon-cloudfront-and-slack4MBDLࣾͷࣄྫ
$'Λར༻͢ΔϝϦοτDSA %ZOBNJD4JUF"DDFMFSBUJPOΤοδϩέʔγϣϯ ΦϦδϯωοτϫʔΫ࠷దԽϨΠςϯγ͕͘ͳΔϨεϙϯε͕͘ͳΔ˞ΤοδϩέʔγϣϯΦϦδϯؒͷڑ͕͍ۙ߹ޮՌ͕ബ͍
$'Λར༻͢ΔϝϦοτৄͦ͘͠ͷͬͭ͞Μͷϒϩάʹͯ$MPVE'SPOUΛ͔·͢ͱΩϟογϡͳ͠ͷ"1*ίʔϧͰ͘ͳΔΑ͏ͩhttp://blog.livedoor.jp/sonots/archives/48002650.html
ίετ·ͣ؆қݟੵπʔϧͰ͓ݟੵΓΛʂΠϯλʔωοτͷσʔλసૹྔ)551ϝιουͷϦΫΤετΦϦδϯͷσʔλసૹྔhttps://calculator.s3.amazonaws.com/index.html?lng=ja_JPFUDʜ$'Λར༻͢ΔσϝϦοτ
$MPVE'SPOU #FIBWJPSϧʔςΟϯάͷࢄࡏԽ/VYUKT WVFSPVUFS"OHVMBS+4 VJSPVUFS3VCZPO3BJMT SPVUFSSCNew$'Λར༻͢ΔσϝϦοτ
5JQTΫϥΠΞϯτ*1ͷऔಘ!
3BJMTͰ*1Λऔಘ͢Δϝιου5JQTActionDispatch::Request.remote_ipActionDispatch::Request.ip53645&%*1ΞυϨεͷ֦ுੑ)551@$-*&/5@*1ΛՃຯ☓ ̋̋☓"DUJPO%JTQBUDI3FRVFTUJQ Λར༻
5JQTͷར༻έʔε3BDLNJEESFXBSF(SBQF"QQMJDBUJPO$POUSPMMFSSFRVFTUJQͷ࣮ମ3BDL3FVRFTUJQ"DUJPO%JTQBUDI3FRVFTUJQΛར༻͢Δ͜ͱͰ౷Ұ3BDL3FVRFTU(SBQF3FRVFTU"DUJPO%JTQBUDI3FRVFTU3BDLNJEESFXBSF
$MPVE'SPOUͷ*1͕औΕΔ$'ͷ*1֎෦*1ͱͯ͠அ5JQTݪҼൃੜͨ͠
5JQT3BDL3FVRFTUʹϞϯΩʔύον$'ͷ*1ϨϯδΛ53645&%*1ΞυϨεʹՃରॲ
ΛΦʔόʔϥΠυ͠ɺˢͰੜͨ͠53645&%ͳ*1܈Λར༻trusted_proxy?$MBTTϩʔυ࣌ʹ$'ͷ*1ϨϯδΛੜ͢ΔˢͰੜͨ͠$'ͷ*1ϨϯδΛؚΊɺMPDBMܥJOUBSOBMܥͷ*1Λ߹Θͤͯఆٛ5JQT
3BDL3FRVFTUJQ$MPVE'SPOUͷ*1ΞυϨεൣғ3BDL3FRVFTUJQ$MPVE'SPOUͷ*1ΞυϨεൣғࢀߟࢿྉhttps://github.com/rack/rack/blob/master/lib/rack/request.rb#L267-L277https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html5JQT
5JQTϝϯςφϯεϖʔδͷදࣔ!
ϞνϕʔγϣϯιʔϦʔαʔόʔͷ༻ҙ໘/HJOYͷDPOpHมߋ໘-BNCEB!&EHFͰସ5JQT
-BNCEB!&EHFͱᶃViewer Request ᶄ0SJHJO Requestᶅ0SJHJO Responseᶆ7JFXFS ResponseϢʔβʔ $' ΦϦδϯ$MPVE'SPOU্ͰҎԼͷ͍ͣΕ͔ͷΠϕϯτΛϑοΫͯ͠-BNCEBΛ࣮ߦ͢ΔαʔϏε5JQT
ΞΫηεڐՄ*1ϝϯςφϯε։࢝࣌ؒͳͲಈతʹมߋ͍ͨ͠4ʹKTPOͱͯ͠ஔ͠ಡΈࠐΈεςʔλεͰɺҙͷ)5.-#PEZΛฦ͢ʢ7JFXFS3FRVFTUʹઃఆʣ5JQT
-BNCEBಉ༷ʹεϩοτϦϯά͕ൃੜ5JQTڥมͷར༻ෆՄಈ࡞ͨ͠ΤοδϩέʔγϣϯʹΑͬͯϩάग़ྗ͞ΕΔϦʔδϣϯ͕ܾ·ΔόʔδχΞϦʔδϣϯʹஔ-BNCEB!&EHFͷҙ
ࢀߟࢿྉ5JQT"84-BNCEB!&EHFͷϩάͲ͜ʁ$MPVE'SPOU-BNCEB!&EHFͰͷ"84-BNCEBͷ༻https://dev.classmethod.jp/cloud/aws/where-is-the-lambda-edge-log/https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-edge.html
·ͱΊΫϥΠΞϯτ*1ΛऔΓ͍ͨͱ͖ཁҙ$'ʹݶΒͣϓϩΩγΛհͯ͠ଟஈʹͳΔ߹-BNCEB!&EHFศརίετ͕ΫϦΞͰ͖ΔͳΒಋೖ͖͕͢ଟ͍ͷͰτϨʔυΦϑΛԡ͑Δ
͋Γ͕ͱ͏͍͟͝·ͨ͠