LoginSignup
9
5

More than 5 years have passed since last update.

API GatewayのS3プロキシを利用するときのつまずきポイント

Last updated at Posted at 2016-10-20

ハマったポイントが沢山あったので、まとめてみました。

東京リージョンでテスト実行すると500エラー

問題

http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html#api-root-get-as-s3-get-service
上記を見ながらAPI Gatewayを触って見ていた。説明どおりに設定して、テスト実行!
すると、以下のエラーが。

{
  "message": "Internal server error"
}

解決(?)

うーん、これ、バグなんですかね?
デプロイした先のエンドポイントを呼び出すと正常に動くから・・・
テストを行いたかったら、東京リージョン以外で作成するのが良いのかもしれません。

デプロイ先から呼び出すとAccessDenied

問題

気を取り直して、東京リージョンではなく、バージニア北部に作り直してさくさく作成!
テスト実行して、問題なさそうだったので試しにデプロイして、生成されたエンドポイントからAPIGatewayを呼び出したら以下のエラーが。

$ curl "https://xxxx.execute-api.us-east-1.amazonaws.com/production"

~~~xml
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>xxxx</RequestId><HostId>xxxx</HostId>
</Error>

解決

cloudfrontのアクセス権限が必要みたいです。
統合リクエストで指定している「実行ロール」に、cloudfrontの権限を付加するとアクセス出来るようになります。

PermanentRedirect

問題

http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html#api-items-in-folder-as-s3-objects-in-bucket
上記を試している時に。
設定完了して、テスト実行!存在するバケットを指定して、存在するファイル名を指定しているのに、以下のエラーが出てしまった。

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>PermanentRedirect</Code>
<Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message>
<Bucket>xxxxxx</Bucket>
<Endpoint>xxxxxx.s3.amazonaws.com</Endpoint>
<RequestId>xxxx</RequestId>
<HostId>xxxx</HostId>
</Error>

解決

  • GUI上からだと、S3はリージョンが存在しないように見えるが、ちゃんとリージョンで分かれている。
  • 各バケットのプロパティを見ると、バケットのリージョンが確認できる。
  • 統合リクエストで指定するリージョンと同じ場所に存在するバケットを指定するとうまく行く。

スクリーンショット 2016-10-20 19.13.05.png

リソースを作るときにパスパラメータが指定できない

問題

リソース作るじゃないですか。
パスパラメータが使えるから、リソース名に入力するじゃないですか。
スクリーンショット 2016-10-20 19.50.06.png

リソースパスが補完されるじゃないですか。
スクリーンショット 2016-10-20 19.51.46.png

なんか{username}じゃなくて-username-になってるけどこれで設定できたと思うじゃないですか。
意図した通りに動かないです。

解決

リソース名に入力しないで、リソースパスに直接入力してください。
そのあとにリソース名も入力しましょう。

スクリーンショット 2016-10-20 19.54.05.png

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5