JAWS-UG鹿児島勉強会 Vol.8 (https://jawsug-kagoshima.doorkeeper.jp/events/79902) でトークさせて頂く死霊です.
։ൃͰ͔ͭΏͬ AWS ͷAPI ૢ࡞Λ฿͢ΔπʔϧΛΈ͚ͯ͠Έͨ1JAWS-UG ࣛࣇౡษڧձ Vol.8@inokara1 ࣛࣇౡห༁: ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ (OSS) πʔϧΛ୳ͯ͠Έͨ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 1
View Slide
ࢲ• ݪ ༸ฏ (͔ͬͺ)• ΞΠϨοτגࣜձࣾ• ࣛࣇౡग़Ͱ͝Θ͢• Github: inokappa• twitter: @inokara• Facebook: inokappa࣮Ոਅ࠭ͳͷͰ, ࠙ձ͕ऴΘͬͨΒਅ࠭ʹؼΓ·͢.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 2
એ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 3
JAWS-UG Ԭۙล͔Β͖·ͨ͠ʂ΄΅ຖि͘͘ձͬͯ·͍͢։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 4
Զͷπʔϧζoreno.tools։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 5
એऴΘΓ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 6
AWS ͷ API ૢ࡞͍ͬͪΊ࣮ͬߦͬ࣌͢ۓுͬ͢Ͳͳʔ22 ࣛࣇౡห༁: AWS ͷ API ૢ࡞ΛॳΊ࣮ͯߦ͢Δ࣌ۓு͠·͢ΑͶ.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 7
γεςϜ։ൃͰίετͰ͚͔ͬͩ͑ͨ͘ʔ33 ࣛࣇౡห༁: γεςϜ։ൃͰίετग़དྷΔ͚͍ͩ͑ͨͰ͢ΑͶ.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 8
ςετͰ࣮ϦιʔεΛ͔͔ͱ͓͡Ͳͳ͋ʔ44 ࣛࣇౡห༁: ςετͰ࣮ϦιʔεΛ৮Δͷͬͯා͍Ͱ͢ΑͶ.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 9
ͦ͛ͳօ͞ΜʹͲͯ͠Μ࿕ใͰ͢55 ࣛࣇౡห༁: ͦΜͳօ͞Μʹ͓ͦΒ͘࿕ใͰ͢.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 10
AWS ͷ API ૢ࡞Λ฿,API ޓ ͷ OSS ͕৭ʑͱ͍͋͢66 ࣛࣇౡห༁: AWS ͷ API ૢ࡞Λ฿, API ޓ ͷ OSS ͕৭ʑͱଘࡏ͍ͯ͠·͢.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 11
ͦ͛ͳ OSS Λ͍͔ͬ͘ݟસͬͯΈͨ͠7νΣετʔʂʂʂ7 ࣛࣇౡห༁: ͦΜͳ OSS Λز͔ͭݟસͬͯΈ·ͨ͠.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 12
DynamoDB Local• https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBLocal.html• DynamoDB ͷجຊతͳػೳΛϩʔΧϧڥͰఏڙ, AWS ΦϑΟγϟϧπʔϧʂ• σʔλͷ put ग़དྷΔ͠, scan ग़དྷΔʂ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 13
SAM Local• https://github.com/awslabs/aws-sam-cli• Lambda ؔ API Gateway ΛϩʔΧϧڥͰ࣮ߦग़དྷΔʂ• S3 DynamoDB ͷαʔϏεͷݺͼग़͠ΛΤϛϡϨʔτʂ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 14
localstack• https://github.com/localstack/localstack• Lambda ͱ͔ API Gateway ͱ͔ϝδϟʔͳαʔϏεͷ API Λαϙʔτʂ• Web UI ͕༻ҙ͞Ε͍ͯΔʂ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 15
moto (moto_server)• https://github.com/spulec/moto• Python ͷ mock ϥΠϒϥϦ• αϙʔτ͢ΔαʔϏε͕ localstack ΑΓ͍͔• ϥΠϒϥϦ൛ͷ moto ͱαʔόʔ൛ͷ moto_server ͕༻ҙ͞Ε͍ͯΔ։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 16
elasticmq• https://github.com/adamw/elasticmq• SQS ޓͷΠϯλϑΣʔεΛఏڙʂ• Scala Ͱ࣮։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 17
minio• https://github.com/minio/minio• S3 API ޓͷΦϒδΣΫτετϨʔδ• S3 ͷΑ͏ͳ Web UI උ͍͑ͯΔ͔ͳΓͷߴػೳͰ SDK ༻ҙ͞Ε͓ͯΓ, ଞͷΫϥυαʔϏεΦϯϓϨ্ʹల։࣮ͯ͠ࡍʹӡ༻͢Δ͜ͱఆ͞Ε͍ͯΔײ͡Ͱ͢.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 18
dynalite• https://github.com/mhart/dynalite• DynamoDB ͷػೳΛఏڙ͢Δ࣮kinesalite• https://github.com/mhart/kinesalite• Kinesis Stream ͷػೳΛఏڙ͢Δ࣮։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 19
Ұཡ (1)໊લ ରαʔϏε ϥΠηϯεDynamoDB Local DynamoDB Amazon ϥΠηϯεSAM Local Lambda ଞ Apache License 2.0localstack Lambda ଞ Apache License 2.0moto EC2 ଞ Apache License 2.0։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 20
Ұཡ (2)໊લ ରαʔϏε ϥΠηϯεelasticmq SQS Apache License 2.0minio S3 Apache License 2.0dynalite DynamoDB MIT Licensekinesalite Kinesis MIT License։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 21
୳ͤͬͱ͋Δͣ...͡ΌͬͲΜ...։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 22
ग़དྷΕ...σϞ͜ΕΒͷπʔϧ HTTP ͷΤϯυϙΠϯτΛఏڙ͍ͯ͠ΔͷͰ,ҎԼͷΑ͏ʹ, ΦϓγϣϯͰΤϯυϙΠϯτΛࢦఆͯ͠ར༻͠·͢.8aws --profile=dummy \--endpoint=http://xxx.xxx.xxx.xxx:1234 \s3 ...8 AWS CLI Ͱͷར༻ྫͰ͢.։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 23
࠷ޙʹ• ࣮ϦιʔεΛ࿔ΔલͷૉৼΓʹΦεεϝ͡ΌͬͲʂ• ͋͘·Ͱ։ൃ༻్͓ࢼ͠༻్Ͱ͍ͬͯ͘Μͤʂ• ୳ͤͬͱ৭ʑͱग़ͯ͘Δͣ͡ΌͬͲͳ͋ʂ• Let's ΤϯδϣΠ AWS !!։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 24
ᄠ͔͍͜΅͔͍ᄠ͜Α͔ͬͻͬ !!։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 25
։ൃͰ͑Δ AWS ͷ API ૢ࡞Λ฿͢Δ OSS πʔϧΛ୳ͯ͠Έͨ | JAWS-UG ࣛࣇౡษڧձ Vol.8 26