こんにちはますのです。
最近お仕事の関係でAPIGatewayを使いそうな気配があるので、少し触っておこうと思いお触り中です。
DevOps関係は全くの初心者さんになるので手探りです。
APIGateway構築終わったのにエラーが出てアクセスが出来ずに四苦八苦しました。
原因は至ってシンプル
アクセスするURL間違えてたというオチです。
その悲しさをブログに起こして忘れないようにしたいと思います。
やりたかったこと
APIGateway→Lambda→S3へのアップロード
よくあるやつですね。
チュートリアルもあるし余裕やでぇ!!って思ってたのですが、チュートリアル無視してやっていたら詰みました。
アップロードも画像ではなく、テキストアップロードが良かったのですがまずは画像でやってみようとスタート。
Lambda→APIGateway→S3の設定が完了する
それでは構築を進めます。
なお、構築方法から間違えています。カオスです。
Lambdaを1から作成
APIGatewayを1から作成
Lambdaの「トリガーを追加」から作成していればもう少し分かりやすかったのかなと思います。
作成したAPIGatewayのURLにアクセスするがエラーが出る
ちなみに以下の実施が必要であることは後から知ったという初心者さんです。
- ステージの作成
- APIのデプロイ
ちゃんと「APIのデプロイ」と「ステージの作成」を実施してアクセスします。
APIのデプロイ
ステージの作成
作成が終わると念願のURLが表示されました。
URLへアクセスしてみますが「message“:“Missing Authentication Token”」のエラーとなります。
Talend API Testerという拡張機能でPOSTしてみますが、同じく403エラーとなります。
恐らくcurlでテストしても同じでしょう。
解決方法:作成したステージの階層を開けてURLを確認する
APIGateway初心者泣かせです。
ステージ作ったら一番最初に表示されるURLではなく、その下の階層が本来アクセスすべきURLでした。
今回はPOSTしたい時のURLが欲しいので以下の通りです。
ステージ:testを開く>全部開ける>POSTをクリック>URLが表示される
POSTのURLは別建てになるってことでしょうか。
恐らくこれは他の部分の設定ミスでしょう。
APIGatewayで4xxエラーでも5xxエラーでも同じ値を返すようになっているからかと。
本来やりたかった「APIGateway→Lambda→S3」へのアップロードは以下の記事を参考に実施した際に出来ました。
AWS API Gateway + Lambda から multipart/form-dataを用いてバイナリデータ(wav)をS3にputする
PNGのアップロードはできた!
次はCSVやXMLのアップロードはどうやるの??という状態。
もう少しAPIGatewayと付き合っていきたい所存です。