amazon api gateway を活用したゲームサーバー構築
TRANSCRIPT
�6,C87��#���,=0@,B��æÊdj��Nª�N£Nïć�
�,60�&0;?0;��0?05890;<�)85���� ���� ���Ĭù�ňĹ��À¼V�¾Ä��V�¥�§��¶ Ä���±��V®���»Ä�ĊđÆÌ��
»ĆĊù�
• Ĭù�ňĹ�– �À¼V�¾Ä��V�¥�§X.�*+�ĚëY�– Åěx`İĩw�²¿�¸ÓĖsĔÈi|k�– .63��V®�åĿQº¬�ÁQ�V¸�vu�– �.*�ŃÇ�– ņidyP9EEA�HHHD=:56D92C6?6ED9:>J1?6E�
�Nª£���´¡s¸ăÃq�´�¦ �
• �' �tirć_��• �++'���!*&%�• °ÂĨÀ�§�����´V¨vuxèċ�• ¬�©Àx��£§¦V¡�• ijĢð�• ėäð�
ýõÐpíÊÐsW��Nª£���´¡�
ELB
• ��G2:=23:=:EJ�0@?6D�øÈ�• �>2K@?��� �7@C��AAD�• �=2DE:4�#@25��2=2?4:?8�• �>2K@?�)�*�52E232D6�
• $F=E:��0�
PP�' D��²À�• ,D6C�#@8:?�• �2>6�#:DE�• #6256C3@2C5D�• �92==6?86D�
Region
��N±M�
ELB
• *�����s¦V¡âĮWĞô�• ��£§¦V¡�• ½V�VÐñ�ĥĤ�• �©À¥����
Region
CloudFront CDN
��N±MM�
ELB
Region
CloudFront CDN • *�����s¦V¡âĮWĞô�
• ��£§¦V¡�• ½V�VÐñ�ĥĤ�• �©À¥����
• �V§��VÀÄ��• ìąwĖjn�»�¥��• ½V�VwĖık��• ÎæģŁ��
��N±MMM�
ELB
Region
CloudFront CDN • *�����s¦V¡âĮWĞô�
• ��£§¦V¡�• ½V�VÐñ�ĥĤ�• �©À¥����
• �V§��VÀÄ��• ìąwĖjn�»�¥��• ½V�VwĖık��• ÎæģŁ�
• �>2K@?��=2DE:�2496�• $6>424965�• )65:D�
�"�]�¯��
• �V¸yČcĂ}bÿ]�• �»£�Ä�y\|�ęÝnv]�• f��x¦V¡xÿdy�
• "6J�G2=F6��• �:?2CJ�DECF4EFC6D�
ELB
Region
CloudFront CDN
�¬N��´�f�u�"�LL�
óYIhYe|qX�
�6,C87��B7,68���o��N±MMMM�
• °Á¶«V�¨ħ�• %@*(#�¦V¡�§��• ²Ã®�¾Ä�ÁV²£§�• ��Ä¢À�Ħ£���• ',+��+�<6JD�• �@4F>6?E���µV§�
ELB
Region
CloudFront CDN
DynamoDB
�6,C87��>;8;,�o��N±MMMMM�
• $J*(#����ńĴ�• êÅ���+��|sijĢ�• ���ĉx²À��• ÑĪv�¿£�¼À�¬À�• ÑĪv°�VÁ�V¬V�
ELB
Region
CloudFront CDN
Aurora Cluster
W R R R
�*&��äZu�¾XýõÐKíÊÐM�
óYIhYe|qX�
h�q¹�ÙYjzr�``rÓj�e|qXM�
�� �oïÑf�s]�¯��k~[MM��FG+��
h�qüÀr��6,C87��#���,=0@,B�
�� �o��#���ïćf�p�
Internet
Mobile Apps
Websites
Services
AWS
ELB
�6,C87��#���,=0@,B�q��
Internet
Mobile Apps
Websites
Services
API Gateway
AWS Lambda functions
AWS
API Gateway Cache
Amazon CloudWatch
Amazon DynamoDB
�6,C87��#���,=0@,B�q��
Internet
Mobile Apps
Websites
Services
API Gateway
AWS Lambda functions
AWS
API Gateway Cache
Amazon CloudWatch
Amazon DynamoDB
Endpoints on Amazon EC2 /
Amazon Elastic
Beanstalk
Any other publicly accessible endpoint
�#���álny~YO�1,60<���'����Nª°� ÍàP�
�J?2>@���+23=6�N1,60<O�
#2>352��F?4E:@?�N10=�,60<O�
�' ��.�1,60<���+�
%0<987<0�
%0:>0<=�
SJ�6,C87��B7,68���r�N��éì�
�J?2>@���+23=6�N1,60<O�
#2>352��F?4E:@?�N10=�,60<O�
�' ��.�1,60<���+�
%0<987<0�
%0:>0<=�
�B7,68���',-50�D1,60<E�
�,<2�40B��1,60�/��==;3->=0<��7,60��
',-50��áÑdn��N��Ø¿f��
���§N¡q��
• �,<2�40B���²¿�¶À�V�• %,710�40B����V§�V�
• E�,<2�40B�E@�(<0;�/�• �%,710�40B�E@��,60!,60�
• '89&.8;0�y�Vsyv]xs�V§scv]R�
• u^�pr�V§k�aS�
UserID (hash key)
GameName (range key)
TopScore TopScoreDate
"101" "Galaxy Invaders" 5842 "2014-09-15T17:24:31"
"101" "Meteor Blasters" 1000 "2014-10-22T23:18:01"
"101" "Starship X" 24 "2014-08-31T13:14:21"
"102" "Alien Adventure" 192 "2014-07-12T11:07:56"
"102" "Galaxy Invaders" 0 "2014-09-18T07:33:42"
"103" "Attack Ships" 3 "2014-10-19T01:13:24"
"103" "Galaxy Invaders" 2317 "2014-09-11T06:53:00"
"103" "Meteor Blasters" 723 "2014-10-19T01:14:24"
"103" "Starship X" 42 "2014-07-11T06:53:03"
��´�°�´�����×Ê�
• ��Ä¢À�Ħ£���ĆñT�• *E�,<2�40B�E@��,60!,60�• *�%,710�40B�E@�'89&.8;0�
HHHHHQ�• '89&.8;0�s�V§ir�,60!,60����Àsc��
GameName (hash key)
TopScore (range key)
UserID
"Alien Adventure" 192 "101"
"Attack Ships" 3 "103"
"Galaxy Invaders" 0 "102"
"Galaxy Invaders" 2317 "103"
"Galaxy Invaders" 5842 "101"
"Meteor Blasters" 723 "103"
"Meteor Blasters" 1000 "101"
"Starship X" 24 "101"
"Starship X" 42 "103"
UserID (hash key)
GameName (range key)
TopScore TopScoreDate
"101" "Galaxy Invaders" 5842 "2014-09-15T17:24:31"
TJ�*&��,6-/,�o¦³�¯ª�ÉĂ�
�J?2>@���+23=6�N1,60<O�
#2>352��F?4E:@?�N10=�,60<O�
�' ��.�1,60<���+�
%0<987<0�
%0:>0<=�
�,6-/,��>7.=387�D10=�,60<E�
UJ�#���,=0@,B��ÒÂdn��#���áÑ�
�J?2>@���+23=6�N1,60<O�
#2>352��F?4E:@?�N10=�,60<O�
�' ��.�1,60<���+�
%0<987<0�
%0:>0<=�
�#��sïö�• �#��»ñ�ζÜpdjþĄïörqlnX��
• �#��Är°�N��Âî�– ł÷×Ĝ�– À�V�āb�,)#�x�xÊÚtv��– «�§k�ft�ėċP6I��82>6DL82>6 5M��
• ë°�N�r«��¡�Âî�– ¹�£¨yÀ�V�Z��++'�¹�£¨sĝñh���– �¡Ä¢V¨v�qx��++'�¹�£¨��µV§�
GameAPI
/games
/games/{gameId} • GET • POST • PUT
0=28/�%0:>0<=�°��� sÔè_rmXnÒÂ�
ÈÆt�ÒÂqd�
0=28/�%0:>0<=�• �>=28;3C,=387�=B90�
– %&%���idy��.*1 �$��ßŅ�– �.*1 �$�xÏÍQõi]� �$�ÃVÁb�£§h�r]�� �$�½V�x}b¹�£¨àËėċtv�Q
À���§wĺābēìtv��
• �#���0B�%0:>3;0/�– �' �"6J�bēìau^a��ECF672=D6�sßŅ�– ĎĦwk�fts��' ��2E6H2J�bIJ]Ék��' ��V�čäin¹V¡ÀÄ�bėċX�[email protected]�– À���§x³£¢w��' ��V�ĥ~�P[PI�2A:�<6J��3<2J0&$GFJ�20&9 8IB��"�&6�/���H���– Ąėxn~wä]v]ftP[PĄėy��' �*:8?2EFC6�-6CD:@?����idyÎÕs�&2FE9�Ľx¹�ª�
¸�äíirË^��
• (%��$>0;B�&=;371�#,;,60=0;<�– öeĐe��(F6CJ�*EC:?8��þ×�
• �''#�%0:>0<=��0,/0;<�– öeĐe��)6BF6DE��6256CD��þ×�
• %0:>0<=� 8/05<�– ��+�øïxÏÍyúäk�º¦Á�ßŅiQ4@?E6?E�EJA6��þ×k��
�7=01;,=387�%0:>0<=� £���´¡ps}�Í��rmXnÒÂ�
�,6-/,��>7.=387�D10=�,6<0E��ÚÂ�
�7=01;,=387�%0:>0<=�
�7=01;,=387�%0:>0<=�
• �7=01;,=387�'B90�– úäk�¬£��ĨxĭďtÜãk�ăü�ò×�– �,6-/,��>7.=387���''#�#;8AB�� 8.4��7=01;,=387���*&�&0;?3.0�#;8AB�
�• �7=01;,=387�'B90�]��,6-/,�ÖÏs½ºtÖÇsÒÂ{íã�
– ,)#�'2E9�'2C2>6E6CD�– ,)#�(F6CJ�*EC:?8�'2C2>6E6CD�– �++'��6256CD�– l�m��$6E9@5)6BF6DE�sþ×in¿¹V¡t¶£¯Ä�k��
• ,99371�'0695,=0<�– �@?E6?E�+JA6�ò×inÈsQ ?AFE�A2DDE9C@F89��idy¶£¯Ä�¥Ä²ÂV§�þ×�– ?AFE�A2DDE9C@F89��ßŅk�töeépn¦V¡�lx||¬£��Ĩwīk�– ĵĒsy�2AA=:42E:@?;D@?�s� ?AFE�A2DDE9C@F89�tvpr]��
�7=01;,=387�%0<987<0� £���´¡ps}�Í��rmXnÒÂ�
�7=01;,=387�%0<987<0�
ÈÆt��¥�± sxx�
�7=01;,=387�%0<987<0�• £���´¡sÞå�ßrêÂs��''#���N���N¡�ðfÒÂ�
– ĵĒsy�¥V¡��V¨� ���wq]rx}ò×h�r]��– ¬£��Ĩb�#2>352�°�Ä��¾ÄxÏÍQ�¿V¹£�V�xõĕçósþ×k�R�– �++'�'C@IJ�xÏÍy¬£��ĨbĠk��++'��¥V¡��V¨�õĕçósþ×�
• ÖÇsÒÂ{íã�– �6256C�$2AA:?8D�– $2AA:?8�+6>A=2E6�– l�m��$6E9@5�)6DA@?D6�sò×inĨ�þ×k��
• ,99371�'0695,=0<�– �@?E6?E�+JA6��ò×inÈsQ&FEAFE�A2DDE9C@F89��idy¶£¯Ä�¥Ä²ÂV§�þ×�– &FEAFE�A2DDE9C@F89��ßŅk�t¬£��Ĩa�öeépn¦V¡�lx||Â�µÄ�k��– ĵĒsy�2AA=:42E:@?;D@?�s�&FEAFE�A2DDE9C@F89�tvpr]��
0=28/�%0<987<0� ²�¨´�rmXnÒÂ�
0=28/�%0<987<0�
ÈÆt��¥�± sxx�
0=28/�%0<987<0�
• �++'��¥V¡��V¨gtw��¡¸³£¢���¡¸¦V¡�Ġkftbėċ�• �IJÁw� ���oe��&FEAFE�A2DDE9@C@F89�sĠkxs\�zò×ivdr�î
ûv]�
�#��s�¦³��
�#��s�¦³��
• �#��t��N�r�¦³�b���
• ��N�th�i�òçs÷ô�Ìf�
• ��N�Ýt�(%��s¸Åpq��– Ĥ��
�6G��68�2HD2A:82E6H2J4@>56G���6E2��68�2HD2A:82E6H2J4@>36E2��'C@5��68�2HD2A:82E6H2J4@>AC@5��
GameAPI
dev
beta
gamma
prod
�#��sĈÕ£N�®´p��N��
API 1 (v1)
Stage (dev)
Stage (prod)
API 2 (v2)
Stage (dev)
�#��sÒÂ�
ÈÆt��¥�± sxx�
�³� °´��
• «��¡ĀÜos�³� °´��âø�– �¥V�ĸĀsåÞØwÒÊò×wk�ft�QġUx¹�£¨wÓirġďwò×
k�ft�ėċ�– �ã§ÀÄ�w��¬£��Ĩx°�V¶Ä�tėäð�ŀý�– ļĈk�À���§ğ�þ×�– ¬V�§�ļĈk�ò×�ėċ�– §V�Ĭ�£§�Á�À�¸w��àľ�
• °©� �ûZj°��� ]�³� °´�b���– �++'�¥V¡�� ��Â�µÄ��– Ðñin*�"�č^ÏÍQÎæsÀ§¿�k��
²�¨´�s�¬��´��
• ²��´�Ûp£���´¡ws ¯¥���ąÛ�– �»£�¼b\pnÏÍQ¬£��Ĩ�ķ{ÉkftvdÂ�µÄ��
• ��N�ĀÜs�¬��¦³¤�®¢´��– ����a�êÅ ����xÖs²Ã®�¾ªÄ��
• ā}\qÒÂ�– ¹�£¨ĸĀsŇĻát�++#��ò×�– ��À¿¹V¡Q³£¢Q�¿¹V¡ĸĀs�»£�¼ĎĘ�ò×�
• �¬���±�°�ªt�%(O�0,<=�%0.07=5B�(<0/P�
VJ�#���Ë\dny~Y�
�J?2>@���+23=6�N1,60<O�
#2>352��F?4E:@?�N10=�,60<O�
�' ��.�1,60<���+�
%0<987<0�
%0:>0<=�
�#��sÿv·d ��
• �¦³�Á\�ÿv·díãIú»¡«�´{íã�– ķ{Éin]¹�£¨w�Ķ�b�IJÁv���+�vuxÏͱ¿��Èa��ėċ��
• 6B�,93�3/�– �' �ĆñÔwIJ]Éh��įďÙ�
• ;01387�3/�– �' �bĆñh�nÀV�¾Ä�
• <=,10�7,60�– ķ{Éin]��' �b¦²Ã�h�r]��¥V��
https://my-api-id.execute-api.region-id.amazonaws.com/stage-name/{resourcePath}�
#"&' �!�o���'��� �
�Nª°� ��Íào^xdj�
���§N¡ ��• �#���,55<�
– ķ{ÉiÛ÷�• �,=07.B�
– À���§�öeépra�Ėık�|sxÔÖX·ÀğY�
• �AA��;;8;�– �II�ĠinÛ÷�
• �AA��;;8;�– �II�ĠinÛ÷�
¦²�´µOSR¼Po��#���á�xdjM�
xpz�
Internet
Mobile Apps
Websites
Services
API Gateway
AWS Lambda functions
AWS
API Gateway Cache
Amazon CloudWatch
Amazon DynamoDB
Endpoints on Amazon EC2 /
Amazon Elastic
Beanstalk
Any other publicly accessible endpoint
�6,C87��#���,=0@,B�p��*&��,6-/,���äZuI�� �X�goĉĀr��#��ïćM�
W�]pY�acXxdj�