JAWS DAYS 2019で発表した資料になります。 [Serverless] サーバレスで動かすトークン発行プラットフォーム
αʔόϨεͰߏங͢ΔτʔΫϯൃߦϓϥοτϑΥʔϜখॣฏ
View Slide
ࣗݾհ
ΤϯδχΞγΣΞϋεࡏॅখॣฏ ͍͚͜͠ΎΜ͍SF*OWFOU5IJTJT.Z"SDIJUFDUVSFʹग़ԋࡉʑͱใൃ৴͍ͯ͠·͢2JJUB 5XJUUFS
ॴଐձࣾ
4JNQMFYגࣜձࣾͷۀҎདྷɺϝΨόϯΫɺେखূ݊Λ͡Ίͱͨ͠ओཁͳۚ༥ػ͚ؔʹɺۚ༥ͷऔҾϦεΫཧۀΛࢧԉ͢Δಠࣗ։ൃͷ*5ιϦϡʔγϣϯɾαʔϏεΛఏڙԾ௨՟ϒϩοΫνΣʔϯྖҬੵۃల։தࡢ݄ʹ%..#JUDPJOΛϦϦʔεࠃ"1/ςΫϊϩδʔύʔτφʔͱͯ͠ॳΊͯʮ"84ۚ༥αʔϏείϯϐςϯγʔʯೝఆΛऔಘ
ಥવͰ͕ٕ͢ज़ऀͷํʹ࣭Ͱ͢ɻʑ৽͍ٕ͠ज़Λ͍ࣗݾݚᮎͰ͖͍ͯ·͔͢ʁ
ͪΐ͏ͲલͷࠓࠒαʔόϨεαʔϏεͱແԑͳ։ൃऀ
˒ۚ༥ۀքʹٻΊΒΕΔݫ੍͍͠๏ఆཁ݅Λຬͨ͢ݎ࿚ੑϛεͷڐ͞Εͳ͍ΫϦςΟΧϧੑ˒ೲܕސ٬ͷϦΫΤετʹ߹ΘͤͯߏΛܾఆ৽͍ٕ͠ज़ͷಋೖʹ͔֬ʹҰఆͷϦεΫ͕ଘࡏ͢Δཁ݅Λ࣮֬ʹຬͨͤΔΑ͏৽͍ٕ͠ज़ͷಋೖʹอकతͳେ͖͍߹͕͋Δฐࣾͷ߹ཧͱݱ࣮ͷΪϟοϓ
͔ͩΒͱ͍ͬͯಉ͡ࢿ࢈Λͣͬͱ͍ଓ͚Δ༁ʹ͍͔ͳ͍
Γ͍ͨ͜ͱ͔ΓΕΔΘ͚͡Όͳ͍͜ΜͳੈͷதͰখॣฏϝΠϯϓϩδΣΫτͱผʹࡉʑͱଓ͚͖ٕͯͨज़ઓͱࠓ͔Β࢝ΊΔαʔόϨε։ൃͷखҾ͖
ۙͰ༻͖ͯͨ͠αʔϏεAmazon Elastic Block Store(EBS)Amazon Simple StorageService (S3)AWS Key ManagementServiceAWS Identity and AccessManagement (IAM)AWS CloudHSMAmazon CognitoAmazon CloudFrontAmazon VPC PrivateLink Amazon Route 53AWS AmplifyAWS AppSyncAmazon CloudWatch AWS CloudFormation AWS CloudTrailAmazon LexAWS X-RayAmazon API GatewayAWS CodePipelineAWS CodeStarAWS Cloud9AWS CodeBuildAWS CodeCommitAmazon AuroraAmazon DynamoDBAmazon ElastiCacheAmazon Lightsail AWS FargateAWS Elastic BeanstalkAWS LambdaAmazon Elastic ContainerServiceAmazon SumerianAmazon SimpleNotification ServiceAmazon Simple QueueServiceAWS Step FunctionsAmazon PollyAmazon Kinesis
৽͍ٕ͠ज़ͷಋೖʹ͔֬ʹҰఆͷϦεΫ͕ଘࡏ͢Δ৽͍ٕ͠ज़ͷಋೖʹอकతͳେ͖͍
͡Ό͋Ͱ͖ΔձࣾΛ୳͢ʁݸਓͰΔʁͬͺΓɺࢥ͍ೖΕͷ͋Δ͜ͷձࣾʹԿ͔͍ͨ͠ɻ৽͍ٕ͠ज़ͷಋೖʹ͔֬ʹҰఆͷϦεΫ͕ଘࡏ͢Δ৽͍ٕ͠ज़ͷಋೖʹอकతͳେ͖͍୭ʹཔ·Εͯͳ͍͚Ͳʜٕज़ྗڧԽϓϩάϥϜΛউखʹܭըͯ͠Έͨ
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂൃ৴ͯ͠ڞײΛूΊΔࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ֎෦Ͱൃද͢ΔνϟϨϯδͰ͖Δڥ͍͚͜͠ΎΜ͍Ծඪɿ4JNQMFY5PLFO Ծ௨՟Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞ΔϢʔεέʔεఆશମΞʔΩઃܭ%#ઃܭԾ௨՟ൃߦϒϩοΫνΣʔϯଓ"1*࣮αʔόϨεαʔϏεͦͷଞ"84αʔϏε8FC6*ϞόΠϧ6*ٕज़తͳνϟϨϯδཁૉશମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
ͳͥ͜ͷ׆ಈ͕ඞཁͳͷ͔ʁ͜ͷ׆ಈʹΑΓձࣾʹͲΜͳϝϦοτ͕͋Δͷ͔ʁ1PJOUΠϊϕʔγϣϯʹͭͳ͕Δ׆ಈɾΠϊϕʔγϣϯΛੜΈग़͢͜ͱΛձࣾͷଘࡏҙٛͱͯ͠ଊ͍͑ͯΔاۀɻɾϒϩοΫνΣʔϯ͕ۚ༥ۀքͰ࠷ϗοτͳͰ͋ͬͨɻָ͕ࣾ͘͠ͳΔπʔϧΛఏڙɾτʔΫϯͱ͍͏֎తใुͰɺීஈͷࣄʹผͷҙຯ͚ͮΛ࣋ͨͤΔɻɾࣾ֎ʹग़͞ͳ͍ͷͰϦεΫগͳ͍ɻٕज़αϯυϘοΫεͱͯ͠ར༻ɾઓ͍ٕͨ͠ज़Λࢼ͢ͱͯ͠ར༻͢Δ͜ͱΛએݴɻɾࢼͨ͠ϊϋͷڞ༗ʹΑΔࣾͷٕज़ྗ্Λݟਾ͑ΔɻɾྗΛ࣋ͯ༨ͨ͠एखΛर͏ϑΟʔϧυʹར༻ͯ͠΄͍͠ɻ׆ಈࣗମͷঝೝߟهࣄΛࣾͰެ։
։ൃલఏਓ͕͍ͳ͍খ͕૽͍ͰΔ͚͕ͩ࣌ؒͳ͍ਖ਼ຊۀͰख͍ͬͺ͍ͷՔಇ͕ࣝͳ͍Γ͍ͨ͜ͱ৽ͨͳྖҬ
·ͣඞཁ࠷খݶͷػೳʹूத͢ΔᶃߴরձࣗͲͷ͘Β͍4JNQMFY5PLFOΛ͍࣋ͬͯΔ͔֬ೝͰ͖ΔᶄτʔΫϯडऔԿ͔ͷτϦΨʔͰ4JNQMFY5PLFOΛΒ͑Δ։ൃલఏਓ͕͍ͳ͍খ͕૽͍ͰΔ͚͕ͩ࣌ؒͳ͍ਖ਼ຊۀͰख͍ͬͺ͍ͷՔಇ͕ࣝͳ͍Γ͍ͨ͜ͱ৽ͨͳྖҬ
·ͣඞཁ࠷খݶͷػೳʹूத͢ΔᶃߴরձࣗͲͷ͘Β͍4JNQMFY5PLFOΛ͍࣋ͬͯΔ͔֬ೝͰ͖ΔᶄτʔΫϯडऔԿ͔ͷτϦΨʔͰ4JNQMFY5PLFOΛΒ͑Δ։ൃલఏਓ͕͍ͳ͍খ͕૽͍ͰΔ͚͕ͩ࣌ؒͳ͍ਖ਼ຊۀͰख͍ͬͺ͍ͷՔಇ͕ࣝͳ͍Γ͍ͨ͜ͱ৽ͨͳྖҬ6*ͭ͘Δͷ͔͔࣌ؒΔ4MBDLΛ6*ͱͯ͠ར༻ೝূࡁΈલఏΠϯϑϥߏங͔͔࣌ؒΔαʔόϨε-BNCEBͰߏஙࣗಈతʹ%ZOBNP%#͕બࢶʹ࣮ૣ͘ऴΘΒ͍ͤͨपลϥΠϒϥϦͷ๛ͳ/PEFKTͰ࣮
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂൃ৴ͯ͠ڞײΛूΊΔࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ֎෦Ͱൃද͢ΔνϟϨϯδͰ͖Δڥ͍͚͜͠ΎΜ͍Ծඪɿ4JNQMFY5PLFO Ծ௨՟Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞ΔϢʔεέʔεఆશମΞʔΩઃܭ%#ઃܭεϚʔτίϯτϥΫτಠࣗ௨՟σϓϩΠ"1*࣮αʔόϨεαʔϏεͦͷଞ"84αʔϏε8FC6*ϞόΠϧ6*"3ٕज़తͳνϟϨϯδཁૉશମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυ
ಠࣗ௨՟Λఆٛ͢ΔΠϯλϑΣʔε &3$͕طʹఆٛࡁΈͷ0QFO;FQQFMJOͱ͍͏ϥΠϒϥϦΛ༻༷ʑͳϒϩοΫνΣʔϯϓϥοτϑΥʔϜ͕ଘࡏ͢ΔதͰ͔࣌Β࠷ਓؾͩͬͨ&UIFSFVNΛબ5SV⒐FϑϨʔϜϫʔΫΛͬͯ4PMJEJUZͷίϯτϥΫτΛ։ൃˍςετωοτσϓϩΠ4JNQMFY5PLFO͕ςετωοτσϓϩΠ͞Ε͍ͯΔ͜ͱΛ֬ೝτʔΫϯͷϩΰ࡞
Amazon API Gateway Amazon DynamoDBAWS LambdaࠓճͷొαʔϏεAWS Lambda&$ͳͲͷαʔόΛඞཁͱͤͣʹίʔυͷ࣮ߦ͕Ͱ͖Δɻྫ͑ɺ;JQʹݻΊͨιʔείʔυΛ-BNCEBͷίϯιʔϧը໘͔ΒΞοϓϩʔυ͢Δ͚ͩͰίʔυΛϦϞʔτͰ࣮ߦͰ͖Δɻ/PEFKTͷ࣮ߦڥͱͯ͠ར༻Amazon API Gateway3&45"1*8FC4PDLFU"1*Λ࡞͢ΔࡍͷΠϯλϑΣʔεΛ؆୯ʹ༻ҙͰ͖Δɻݺͼग़͍ͨ͠-BNCEBΛϚοϐϯάͰ͖ɺ"1*(BUFXBZ-BNCEBͰ"1*ΛߏஙՄೳɻτϥϑΟοΫͷཧɺ*".ͱΈ߹ΘͤͨೝՄ੍ޚͰ͖ΔɻϦΫΤετΛड͚Δ"1*ΤϯυϙΠϯτΛ࡞Amazon DynamoDBΩʔόϦϡʔ͓ΑͼυΩϡϝϯτܕͷσʔλϕʔεαʔϏεɻεέʔϧཧΠϯετʔϧॲཧͳͲ͕ෆཁͰ؆୯ʹར༻Ͱ͖Δɻ-BNCEBͷσʔλॻ͖ࠐΈઌͱͯ͠ΘΕΔ͜ͱ͕ଟ͍ɻϒϩοΫνΣʔϯʹॻ͖ࠐ·ͳ͍σʔλͷอଘઌͱͯ͠ར༻
ᶃߴ֬ೝᶄτʔΫϯडऔ"1*࣮&UIFSFVNΞυϨεੜΞυϨεϢʔβใϢʔβใͱΞυϨεͷϚοϐϯάใΛอଘςετωοττʔΫϯอ༗ྔΛॻ͖ࠐΉXFCKTΛຬͨ͢࠷ݶͷΞʔΩςΫνϟશମ૾ίϚϯυʹҾͱͯ͠࿈ܞ˒4MBDL͔Β"1*(BUFXBZ͕ൃߦ͢ΔΤϯυϙΠϯτɹɹɹ3&45"1*ͷϦΫΤετ͕ൃੜ˒εϚʔτίϯτϥΫτͰɹɹཧ͠ʹ͍͘Ϛοϐϯάใɹɹɹ%ZOBNP%#ॻ͖ࠐΈ˒ϩδοΫ/PEFKTͰهड़͠ɹɹ-BNCEBΞοϓϩʔυ˒XFCKTͱ͍͏ϥΠϒϥϦΛͬͯɹɹ&UIFSFVNωοτϫʔΫʹσϓϩΠ͞ΕͨɹɹɹεϚʔτίϯτϥΫτΛૢ࡞Amazon API GatewayAmazon DynamoDBAWS LambdaMetaMaskSlack Ethereum
ᶃߴ֬ೝᶄτʔΫϯडऔ"1*࣮&UIFSFVNΞυϨεੜΞυϨεϢʔβใϢʔβใͱΞυϨεͷϚοϐϯάใΛอଘςετωοττʔΫϯอ༗ྔΛॻ͖ࠐΉXFCKTΛຬͨ͢࠷ݶͷΞʔΩςΫνϟશମ૾ίϚϯυʹҾͱͯ͠࿈ܞ˒4MBDL͔Β"1*(BUFXBZ͕ൃߦ͢ΔΤϯυϙΠϯτɹɹɹ3&45"1*ͷϦΫΤετ͕ൃੜ˒εϚʔτίϯτϥΫτͰɹɹཧ͠ʹ͍͘Ϛοϐϯάใɹɹɹ%ZOBNP%#ॻ͖ࠐΈ˒ϩδοΫ/PEFKTͰهड़͠ɹɹ-BNCEBΞοϓϩʔυ˒XFCKTͱ͍͏ϥΠϒϥϦΛͬͯɹɹ&UIFSFVNωοτϫʔΫʹσϓϩΠ͞ΕͨɹɹɹεϚʔτίϯτϥΫτΛૢ࡞Amazon API GatewayAmazon DynamoDBAWS LambdaαʔόϨεͰzΔ͖͜ͱzʹूதͰ͖ͨ
ͭͷطࣄ࣮Λͭͬͯ͘͠·͓͏ʂࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ֎෦Ͱൃද͢ΔνϟϨϯδͰ͖Δڥ͍͚͜͠ΎΜ͍Ծඪɿ4JNQMFY5PLFO Ծ௨՟Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ࣾͰར༻Ͱ͖ΔπʔϧΛ࡞ΔϢʔεέʔεఆશମΞʔΩઃܭ%#ઃܭεϚʔτίϯτϥΫτಠࣗ௨՟σϓϩΠ"1*࣮αʔόϨεαʔϏεͦͷଞ"84αʔϏε8FC6*ϞόΠϧ6*"3ٕज़తͳνϟϨϯδཁૉશମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυൃ৴ͯ͠ڞײΛूΊΔ
ͱΓ͋͑ͣࢀՃˍϒʔεग़ల͕ܾఆ͜ͷ··ͷϨϕϧͰྑ͍ͷ͔ʜʁ/PEFKTΛ࣮ͬͨαʔόϨε4MBDLʹΑΔ6*ͷলུػೳ͕ߴ֬ೝˍτʔΫϯडऔ &3$ʹΑΔτʔΫϯͷൃߦ4MBDLϝοηʔδʹΑΔߴ֬ೝ
ͱΓ͋͑ͣࢀՃˍϒʔεग़ల͕ܾఆ͜ͷ··ͷϨϕϧͰྑ͍ͷ͔ʜʁ/PEFKTΛ࣮ͬͨϥΠτͳ"1*ͳΒ(PݴޠͰ։ൃ͍ͨ͠αʔόϨείʔυཧͯ͠ෳͷ-BNCEBΛར༻4MBDLʹΑΔ6*ͷলུࢀՃऀ͕ϩάΠϯͰ͖Δ7VFKTͰ8FCը໘Λͭ͘Δػೳ͕ߴ֬ೝˍτʔΫϯडऔࢀՃऀ͕ͦͷͰτʔΫϯΛૹΓ߹͑ΔαʔϏε&3$ʹΑΔτʔΫϯͷൃߦఆྔੑͱఆੑੑΛ݉Ͷඋ͑ͨ&3$Ͱ௨՟ͷϓϥοτϑΥʔϜΛͭ͘Δཁ͔݅Βٕज़ཁૉ·ͰશͯΛΞοϓσʔτ͢Δ4MBDLϝοηʔδʹΑΔߴ֬ೝ"3ΛͬͨήʔϜܕΠϯλϑΣʔε
ࣗຫͰ͖Δٕज़ཁૉΛऔΓೖΕΑ͏ൃ৴ͯ͠ڞײΛूΊΔࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ֎෦Ͱൃද͢ΔνϟϨϯδͰ͖Δڥ͍͚͜͠ΎΜ͍Ծඪɿ4JNQMFY5PLFO Ծ௨՟Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏֎෦Ͱൃද͢ΔϢʔεέʔε࠶ཧ"1*Ճ࡞%#ઃܭमਖ਼&3$ϑΥʔΫ&3$&3$"1*ܦ༝Ͱ௨՟Ճ(Pݴޠॻ͖͑-BNCEBBTB$PEF7VFKTͰ8FCը໘࡞J1BEͰ"3ମݧ3FWFBMKTεϥΠυͷڞ༗ٕज़తͳνϟϨϯδཁૉશମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυ ϑϩϯτΤϯυԾඪɿτʔΫϯൃߦΛϕʔεͱͨ͠ϓϨθϯαϙʔτΞϓϦͷ։ൃ
ൃදऀ༻1$εΫϦʔϯӾཡӨϓϨθϯςʔλௌߨऀݱεϥΠυͷϖʔδ͕ࣗͷεϚϗʹಉظ͞ΕΔൃදεϥΠυ࠷ߴ͍͍Ͷ͏ʔΜίϝϯτදࣔཝΞϯέʔτεϥΠυίϝϯτදࣔཝ <௨ৗεϥΠυ> <Ξϯέʔτ࣌>Ξϯέʔτʹ͑ΔͱτʔΫϯΛड͚औΔ͜ͱ͕Ͱ͖Δ༻ҙ͞ΕͨίϝϯτϘλϯΛԡ͢͜ͱͰϓϨθϯςʔλτʔΫϯΛૹΔ͜ͱ͕Ͱ͖ΔτʔΫϯͷྲྀ௨ྔΛεϥΠυ͝ͱʹूܭϑΟʔυόοΫϓϨθϯαϙʔτΞϓϦΞϯέʔτϖʔδ͕Ө͞ΕΔͱεϚϗͷ6*͕มԽϓϨθϯςʔλͷൃදʹ߹ΘͤͯಠࣗτʔΫϯΛૹΓ߹͏ΞϓϦΛΠϕϯτग़లʹ͚ͯ࡞
&3$&3$IUUQTMBCTUJSOFUXPSLEFTJHOPGBHBNJOHXPSMEWJFXUIBUFSDFOBCMFT&3$͕Մೳʹ͢ΔήʔϜԽ͞Εͨੈք؍Կ͕Ͱ͖ΔΑ͏ʹͳΔ͔ʁᶃ ௨՟Λ"1*ܦ༝ͰԿछྨͰൃߦՄೳʹ4MBDLͷνϟϯωϧຖʹಠࣗ௨՟Λൃߦᶄশ߸ΩϟϥΫλʔͳͲҰҙੑͷ͋ΔͷΛ࡞Մೳʹྫ͑ੈքʹ͔ͭ͠ଘࡏ͠ͳ͍ʮ4JNQMFY"84.BTUFSʯͳͲͷশ߸Λ࡞ᶅੜ͞ΕͨᶃͱᶄΛ؆୯ʹަՄೳʹ4JNQMFY5PLFOΛϕʔε௨՟ͱͯ͠ݖརͷചങ͕Մೳ
Amazon API Gateway Amazon DynamoDBAWS Lambdaલճ·ͰͷొαʔϏεࠓճಋೖͨ͠αʔϏεAmazon Simple StorageService (S3)AWS CloudFormationAmazon CloudFrontAmazon Simple StorageService (S3)όοΫΞοϓσʔλͷอଘઌσʔλϨΠΫͱͯ͠ͷར༻ͷΈͳΒͣ੩తΣϒαΠτͷϗεςΟϯάՄೳɻࠓճ7VFKTͷ41"Λ4ʹϗεςΟϯά͢ΔతͰ༻ɻAmazon CloudFront4ΛΦϦδϯαʔόͱΈͳ͠Ωϟογϡͨ͠ίϯςϯπΛ৴͢Δɻ$%1$BDIF%JTUSJCVUJPOύλʔϯAWS CloudFormation(SAM)$MPVE'PSNBUJPOʹΑΓ"84αʔϏε࠶ߏங࣌ͷࣗಈԽɻ-BNCEBͰ࡞ͨ͠"1*ΛΞοϓσʔτ͢Δͱ͖ʹςϯϓϨʔτΛྲྀ͢ɻ$MPVE'PSNBUJPOͷ֦ுͰ͋Δ4". 4FSWFSMFTT"QQMJDBUJPO.PEFMʹͯهड़ɻIUUQTRJJUBDPNTIVOQJUFNTFFFFFGF<ࢀߟ>(Pʴ-BNCEBͰ࠷αʔόϨενϡʔτϦΞϧ
7VFKTγϯϓϧ41"εϥΠυ͝ͱͷϦΞΫγϣϯΛੵεϚʔτίϯτϥΫτΞΫηε༻%ZOBNP%#ΞΫηε༻"3,JUසൃ͢Δ-BNCEBͷσϓϩΠΛίʔυͰཧ"3දࣔ༻ΤϯυϙΠϯτϓϨθϯαϙʔτΞϓϦΞʔΩςΫνϟ֓ཁ,PWBOωοτϫʔΫτʔΫϯΛ"3ͰදݱAmazon Simple StorageService (S3)Amazon API Gateway Amazon API GatewayAWS LambdaAWS LambdaAmazon DynamoDBAmazon CloudFront&UIFSFVN&3$ʹΑΔτʔΫϯͷൃߦฐࣾಠ࣮ࣗʹΑΔϓϥοτϑΥʔϜAWS CloudFormation(SAM)
खݩͷεϥΠυ͕εΫϦʔϯͱ࿈ಈϥϯμϜʹมΘΔϘλϯΛԡ͠ͳ͕ΒίϝϯτͱτʔΫϯΛૹ৴ࣾһূΛ͔͟͢ͱͦͷਓΛೝࣝͯ͠"3্ʹτʔΫϯߴΛදࣔը໘ΛΫϦοΫ͢Δͱ"3্ͰτʔΫϯͷૹ৴͕Ͱ͖ΔϓϨθϯαϙʔτΞϓϦ"3ΞϓϦ
ݦࡏԽ͢ΔϢʔεέʔεʹඋٕ͑ͨज़ࢿ࢈ͷཧΛ͠Α͏ൃ৴ͯ͠ڞײΛूΊΔࣾͰར༻Ͱ͖ΔπʔϧΛ࡞Δ֎෦Ͱൃද͢ΔνϟϨϯδͰ͖Δڥ͍͚͜͠ΎΜ͍Ծඪɿ4JNQMFY5PLFO Ծ௨՟Λൃߦͯࣾ͠Ͱར༻ͯ͠Β͏ϓϩμΫτԽʹ͚ͯ৽نࣄۀܭըॻن֨MFTTͳΥϨοτ༷ʑͳ%"QQT։ൃଞ௨՟$*$%උೝূೝՄσʔλੳωΠςΟϒΞϓϦ։ൃੑೳ6*69Γ͍ͨνϟϨϯδཁૉશମઃܭ ϒϩοΫνΣʔϯ όοΫΤϯυϑϩϯτΤϯυϞόΠϧԾඪɿτʔΫϯൃߦΛϕʔεͱͨ͠ϓϨθϯαϙʔτΞϓϦͷ։ൃඪɿϓϩμΫτԽʹ͚ٕͨज़ཧ
AWS Cloud9AWS CodeBuildAWS CodeCommitAWS CodePipelineAWS LambdaAmazon API GatewayΑ͘ར༻͢ΔαʔϏεAWS Cloud9&$্Ͱ։ൃڥΛఏڙɻλʔϛφϧ͕ηοτͰ͍͍ͯΔɻͲͷ͔ΒͰಉ͡։ൃڥ͕ϒϥβΛ։͚ͩ͘Ͱ༻ҙ͞Ε͍ͯΔͨΊ߹ʹΑͬͯ%PDLFSͰ։ൃڥΛἧ͑ΔΑΓָɻAWS CodeCommit-BNCEBͷιʔείʔυཧ$PEF$PNNJU্ͰཧɻϓϧϦΫΤετɾίϛοτϏδϡΞϥΠβʔͳͲΛ(6*Ͱఏڙ͓ͯ͠Γบ͋Δͷͷ(JU)VCͱͦΕ΄Ͳେࠩͳ͍༻ײͰར༻Ͱ͖ΔɻAWS CodePipelineAWS CodeBuild$MPVE'PSNBUJPO4".ͷίϚϯυͰ-BNCEB"1*(BUFXBZΛ࡞͢ΔɻlJOTUBMMz lQSF@CVJMEz lCVJMEzͳͲϑΣʔζຖʹ࣮ߦ͢ΔίϚϯυΛάϧʔϓԽ͠ඞཁͳϞδϡʔϧΠϯετʔϧɺςετɺϏϧυΛ࣮ߦͤ͞Δɻ$*$%ύΠϓϥΠϯΛ(6*Ͱఏڙ͢Δɻιʔείʔυཧͱͯ͠$PEF$PNNJUΛબ͢ΔͱɺಛఆϒϥϯνʹϚʔδ͞Εͨ߹ύΠϓϥΠϯ͕ىಈ͠ɺޙଓͷ$PEF#VJME͕࣮ߦ͞ΕΔɻ
Α͘ར༻͢ΔαʔϏεAmazon CognitoAWS AmplifyAWS AppSyncAWS AppSyncओʹ(SBQI2-αʔόͱͯ͠ར༻ɻ-BNCEB%ZOBNP%#&MBTUJD4FBSDI4FSWJDFΛޙଓͰϑοΫͰ͖Δɻෳͷ%ZOBNP%#ςʔϒϧʹ·͕ͨΔॲཧՄೳɻAWS AmplifyϑϩϯτΤϯυ༻ͷ$*$%ͱͯ͠"NQMJGZ$POTPMFΛ༻ɻ4ͷΞοϓϩʔυ͓Αͼ$MPVE'SPOUͰͷ৴ઃఆ͕লུͰ͖Δɻ"NQMJGZ'SBNFXPSLͰ"84αʔϏεͷΞΫηεΛ؆ུԽ͠"QQ4ZOD$PHOJUPͷΞΫηεΛγϯϓϧʹ͢ΔɻAmazon CognitoೝূαʔϏεͱͯ͠ར༻ɻϢʔβσʔλΛཧ͠ɺೝূޭ࣌ʹϢʔβใؚ͕·Εͨ+85Λฦ͢ɻ*".ͱΈ߹ΘͤΔ͜ͱͰೝՄ੍ޚ͢Δ͜ͱՄೳɻIUUQTRJJUBDPNTIVOQJUFNTEBEGBEEGG<ࢀߟ>7VFKT"NQMJGZΛۦ͢ΕϞμϯͳ8FCΞϓϦΛͰެ։Ͱ͖Δ
3FNJY*%&ΞʔΩςΫνϟ֓ཁ4MBDLΠϕϯτऔಘ༻%ZOBNP%#ΞΫηε༻εϚʔτίϯτϥΫτΞΫηε༻4MBDLͷ3&45"1*Λड͚ΔೝূϑϩϯτΤϯυ༻$*$%։ൃϑϨʔϜϫʔΫσϓϩΠ4MBDL&3$7VFKTγϯϓϧ41"Amazon API GatewayAWS LambdaAWS LambdaAmazon DynamoDB Amazon DynamoDB&3$9999AWS AppSyncAWS AmplifyAmazon CognitoAWS LambdaAWS LambdaAWS Cloud9AWS CodePipeline'MVUUFSAmazon CloudWatchAWS CloudFormationAWS CloudTrail-BNCEB'VODUJPOT
ݱࡏͷ։ൃεΩʔϜ࣮ݧతʹϓϩτλΠϓͷ࡞ࣾһ Ϣʔβੜར༻ٕज़ࢿ࢈ͷੵ'MVUUFS 7VFKT 4MBDL 6OJUZ "3,JU &UIFSFVN (Pݴޠ "84هࣄʹ·ͱΊΔ༻్ผʹϦϙδτϦΛ࡞֤ΞϓϦ"84ʹݶΒͣ෯͍ྖҬΛࢹʹೖΕͯ׆ಈத
αʔόϨεͬͯԿ͔Β࢝ΊΕྑ͍ͷ͔Θ͔Βͳ͍ͦ͠͏ͩࣗ͠ʹԕ͍ੈքࠔͬͨ͜ͱ͕͋Ε4/4ܦ༝Ͱ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ʂαʔόϨεͦ͜؆୯ʹ͡ΊΒΕΔʂ·͚ͣͭͩ"1*Λ࣮͢Δͱ͜Ζ͔Βελʔτͯ͠Έ·͠ΐ͏
νʔϜͷࠓޙ৽ͨͳࣄۀΛੜΈग़͢ϑΣʔζϑϩϯτ͔ΒόοΫ·ͰྖҬΛݶఆͤͣ׆༂͍ͨ͠ΤϯδχΞؒΛืूத͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ʂ
ຊ͋Γ͕ͱ͏͍͟͝·ͨ͠2JJUB 5XJUUFSຊࢿྉͷ༰4/4Ͱެ։͠·͢