はじめに
前回、API GatewayからS3のオブジェクトを返す ことをやってみました。
そこで、次はAPI Gatewayから返すS3オブジェクトをメディアコンテンツにして
キャッシュの速度を測定してみようと思ったのですが、
あれこれいじっているうちに、なぜかTestではエラーとなるようになってしまいました。
Deployしてからブラウザで見ると正しく動作しています。
Testエラーの確認
まず、API GatewayのTestボタンをクリックすると以下のようなエラーログが出ます。
Execution log for request test-request
Wed Feb 10 07:54:23 UTC 2016 : Starting execution for request: test-invoke-request
Wed Feb 10 07:54:23 UTC 2016 : API Key: test-invoke-api-key
Wed Feb 10 07:54:23 UTC 2016 : Method request path: {}
Wed Feb 10 07:54:23 UTC 2016 : Method request query string: {}
Wed Feb 10 07:54:23 UTC 2016 : Method request headers: {}
Wed Feb 10 07:54:23 UTC 2016 : Method request body before transformations: null
Wed Feb 10 07:54:23 UTC 2016 : Execution failed due to configuration error: Invalid endpoint address
Wed Feb 10 07:54:23 UTC 2016 : Method completed with status: 500
しかし、ブラウザから見るとちゃんとS3のオブジェクトが表示されています。
意外な結論
このままでは正常なテストができません。
何かしらの環境設定が悪いのかとアレコレ設定をいじって見ましたが一向に解決しません。
あれやこれやとネットで調べたら驚きの結末がありました。
なんと、API Gatewayと同一のリージョンからS3を呼び出すには制限があるそうです。
ですので、テストで正しく動作させるにはS3を別リージョンに配置する必要があります。
そして、その原因はAWSのバグのようです。早い解決が望まれますね。
しかし新しいサービスにはこういった不具合がつき物ですが、
それを「まだまだの技術」と見るか、「いまの技術」と見るかは価値観が分かれそうですね。