ããã«ã¡ã¯ãéç°(è£)ã§ãã
常ã
ãAPI GatewayããPowerShellãã¼ã¹ã®Lambdaãå®è¡ãããï¼ã¨èãã¦ããã®ã§ããããããããã©ãçããã®ã§ãåå¿ãå
¼ãã¦ã®ãç´¹ä»ã§ãã
ä¸è¨ã®è¨äºã§ãã³ã¼ãã®æºåãããããã¤ã¾ã§ãç´¹ä»ãã¦ããã®ã§ãä½µãã¦ã確èªãã ããã blog.serverworks.co.jp
ãã®ããã°ã§æ¸ãã¦ãããã¨
1.LambdaããAPI Gatewayã«å¤ã渡ãããã«å¿ è¦ãªPowerShellã®å®è£ 2.ã³ã¼ãå®è£ ä¾ 3.API Gatewayã®è¨å® 4.API Gatewayã§çºè¡ãããURLã«POSTãã¦ã¿ã
1.LambdaããAPI Gatewayã«å¤ã渡ãããã«å¿ è¦ãªPowerShellã®å®è£
ä¸è¨ã®å ¬å¼ããã¥ã¡ã³ãã«ãè¨è¼ããã¦ãã¾ãããAPI Gatewayããå¼ã³åºãããWebãªã¯ã¨ã¹ãã«è¿çããå ´åãLambdaå´ã§è¿ãå¤ãå¿ è¦ã§ãã https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/powershell-handler.html#powershell-handler-output
PowerShellã®ã³ã¼ãã§ã¯ããPowerShellã¹ã¯ãªããã®æå¾ã«ãããªãã¸ã§ã¯ãããè¿ãããããã«ãªã£ã¦ãã¦ã
- PowerShellã¹ã¯ãªããã®æå¾ã«ãããªãã¸ã§ã¯ããæååã®å ´åããã®ã¾ã¾è¿ã
- PowerShellã¹ã¯ãªããã®æå¾ã«ãããªãã¸ã§ã³ã¨ãæåå以å¤ã®å ´åãConverTo-Jsonã§JSONã«å¤æãã¦è¿ã
ã¨ãã仿§ã«ãªã£ã¦ãã¾ãã ãªã®ã§å®è£ ã¨ãã¦ã¯ãæå¾ã«ãªãã¸ã§ã¯ããè¿ããããªå½¢ã®å®è£ ããã¦ãããã¨ãããã¨ã«ãªãã¾ãã
2.ã³ã¼ãå®è£ ä¾
å°ãåããã¥ããã®ã§ãå®éã®ã³ã¼ãä¾ãè¦ã¦ã¿ã¾ãããã
$json = $LambdaInput.body
@{
'statusCode' = 200;
'body' = $json;
'headers' = @{'Content-Type' = 'text/plain'}
}
ããã¯ãLambda颿°ã®PowerShellã³ã¼ãã¨ãã¦ãå®è£ ããé¨åã§ãã API Gatwayã«å¤ãè¿ããããHTTPã®Statusã³ã¼ããæ¬æãããããããããè¨å®ãã¦ãã¦ããã®å¤ãæå¾ã®ãªãã¸ã§ã¯ãã¨ãã¦ãã¾ãã ããã§ãAPI Gatewayã¯å¤ãåãåã£ã¦ãWeb表示ãããããªæåãåºæ¥ããã¨ãã訳ã§ãã
ã³ã¼ãå ¨ä½ã¨ãã¦ã¯ãAPI Gatewayããéããããã¼ã¿ãLambdaã®$LambdaInputã¨ãããªãã¸ã§ã¯ãã®ä¸ã«ããbodyã«å ¥ã£ã¦ããã®ã§åãåºãããã®ã¾ã¾ãã®å¤ãè¿ããã¨ãããããªã³ã¼ãã§ãã æ¨æºãã³ãã¬ã¼ãã§ä½ã£ãPowerShellã®ã³ã¼ããããä¸è¨ã®é¨åãå®è£ ã¨ãã¦ã³ã¼ãã£ã³ã°ãã¦ãã¾ãã
3.API Gatewayã®è¨å®
API Gatewayãè¨å®ãã¦ãPowerShellãã¼ã¹ã®Lambdaãèµ·åã§ããããã«ãã¦ã¿ã¾ãããã
ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ä¸ããAPI Gatwayã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããå³ä¸ã«ãããAPIã使ããã¯ãªãã¯ãã¾ãã

APIã¿ã¤ãã鏿ããç»é¢ã«ãªãã®ã§ã"REST API"ãã®ã¨ããã«ãããæ§ç¯ããã¯ãªãã¯ãã¾ãã

APIã®è©³ç´°ç»é¢ã«ãªãã¾ãã "æ°ããAPI"ãé¸ã³ãAPIåãå ¥åãã¦ããAPIã使ããã¯ãªãã¯ãã¾ãããã

ã¾ãã¯API Gatewayãä½ããã¨ãåºæ¥ã¾ããã
ç¶ãã¦ãPOSTã¡ã½ãããLambdaã«æ¸¡ãã¦ããããã®è¨å®ããã¾ãã

ã¡ã½ããã®ä½æç»é¢ã«ãªãã¾ãã
ã¡ã½ããã¿ã¤ãã«POSTãçµ±åã¿ã¤ãã¯Lambda颿°ãé¸ã³ã¾ããã¾ããLambdaãããã·çµ±åã¯æå¹ã«ãã¦ããã¾ãããããæå¹ã«ãã¦ãããªãã¨ãAPI GatewayããLambdaã«ãã¼ã¿ã渡ããã¾ãããLambda颿°ã¯ãPowerShellã§ãããã¤ããLambdaã鏿ãã¾ãããã
鏿ãªã©ãçµãã£ããããã¡ã½ããã使ããã¯ãªãã¯ãã¾ãã

æºåãæ´ã£ãã®ã§ãAPIããããã¤ãã¦ããã¾ãããAPIããããã¤ããã¯ãªãã¯ãã¾ãã

ã¹ãã¼ã¸ã¯ ãNew stageãã鏿ãã¾ããã¹ãã¼ã¸åã®å ¥åãåºæ¥ãããã«ãªãã®ã§ãä»»æã®ã¹ãã¼ã¸åãå ¥åãã¾ããããå ¥ååºæ¥ããããããã¤ããã¯ãªãã¯ãã¾ãã

å¼ã³åºãç¨ã®URLã¾ã§çºè¡ããã¾ããï¼

4.API Gatewayã§çºè¡ãããURLã«POSTãã¦ã¿ã
å®éã«çºè¡ãããURLã«POSTãã¦ã¿ã¾ããããã£ãããªã®ã§ãPowerShellã§POSTãã¦ã¿ã¾ãããã ãã¹ããããã¼ã¿ã®å¤æ°ãç¨æããä¸ã§POSTãã¦ã¿ã¾ãã
$postparam = @"
{
"Name":"test"
}
"@
invoke-WebRequest -Uri https://xxx.execute-api.ap-northeast-1.amazonaws.com/powershelltest -Method POST -Body $postparam
ããã¨ã
StatusCode : 200
StatusDescription : OK
Content : {
"Name":"test"
}
RawContent : HTTP/1.1 200 OK
(以ä¸ã¯çç¥)
ããPowerShellã®æå¾ã«æå®ãããªãã¸ã§ã¯ããç¡äºæ»ã£ã¦ãã¾ããã ããã§ãAPI Gatewayãçµç±ããPowerShellã®ã³ã¼ãããè²ã æ¸ãã¦ã¿ããã¨ãåºæ¥ããã§ãã
ã¾ã¨ã
PowerShellã¨API Gatewayã¨ãããªããªãçµã³ã¤ãã¥ãããã®ãçµã¿åããããã®ãç´¹ä»ãã¾ãããããããã§ããã§ããããã ããã§ãPowerShellã§ã³ã¼ãã£ã³ã°ãã¦ãµã¼ãã¼ã¬ã¹åºæ¥ããã¨è¨ãå¼µããã¨ãåºæ¥ããã§ãã
誰ãã®ãå½¹ã«ç«ã¡ã¾ããã幸ãã§ãã