AWS AppSync の API KEYの期限が切れたので、新しいKEYを適用する
忘れたころに、Amplify プロジェクト。この記事を自分で読み直す。
経緯
Androidに入れているアプリ(まだテスト段階)が、「ログインはできるんだけど、そのあとのデータ表示で落ちるようになったんだが(複数端末で同じ状況)」……と言われ、はて……?と思っていると、「API KEYで接続してます?」と。あ、そうですね。「じゃあ期限切れですかね、なんか1年で期限切れちゃうみたいなんですよね~、KEY新しいの振り出しますね」と言われ、あ、どうも……と新しいKEYが配布されてきたのだが。
……あれ?新しいKEYを振り出す画面に行ったのなら、同じKEYの期限伸ばせばいいのでは……???
まぁいいか、、えーと?どうすればこの新しいKEYを適用できるんだっけ???そもそもAPI KEYってなんだっけな???
と、さすらいの旅に出ました。
で、旅に出た結果、間違えて古いKEYの有効期限を延ばしてしまいました。その話はあとでしましょう…。
Androidアプリの仕組みとしては、Cognitoで認証して、AppSyncでデータ取りに行ってます。
とりあえず、ほんとにAPI KEY切れてるんかなぁ……とGraphiQLを立ち上げると……
ん、エラー出るね。たしかこれの上のほうにあるエラーだったかと……
で、GraphiQLの設定を新しいAPI KEYに変えると……あ、データ表示できるね。ふむ。やはりAPI KEYが原因か。
……でもAPI KEYを変えたところで、また1年後にアプリを変えないといけなくなるっていうのは、よろしくないですわな。
AWS AmplifyのAPI認証はどれがいいのか? - Qiita
API KEYじゃなくて、Amazon Cognito User Poolにしないといけないらしい。
そういえば、最初はAmazon Cognito User Poolで接続してた気がするんだけど、何かでうまくいかなくなって、とりまAPI KEYにすっか、ってそのままだった気がしますね……何でトラブっていたかすっかり忘れましたが……
で、とりあえず認証方法は変えるとして、まだテストアプリなので、パッチ的にAPI KEYを新しくしようというのが本日の議題。
間違えて期限を延長してしまう
API KEYってどこで設定したっけねぇ……??設定ファイルとかあったっけねぇ……???
とかいう捜索を大して行わずになんとなく適当に$ amplify api updateでできるのかな?ってやってたら古い方のAPI KEYの期限を延長してしまったやり方は以下です。
$ amplify api update
? After how many days from now the API key should expire (1-365): 365
$ amplify push
updateで何かできるのかなー、あ、何も変わらないなー、pushか……というわかっていなさ。
ちなみになんでこれでpushまでしてしまったかというと、$ amplify api update の中で
? Enter a description for the API key:
と訊かれたのですが、description?ここに新しいKEY入れるんかな?と思ってしまったからなのですが、descriptionってただの説明書きですわ。何も影響あらしません。
ちなみにupdate後、以下のローカルファイルのdescriptionとExpirationDaysが書き換わっていました。
amplify\backend\backend-config.json
あと、parameters.jsonで、APIKeyExpirationEpochを-1にするんだ!ってのが出てきたんだけれど、さっぱりわからん。指定してからpushしてみたけどたぶん関係ない。このあたりは別にまとめる。
で、、、そのあと元KEYでも新しいKEYでもGraphiQLが動くことを発見し、あーこれは単純に期限延長したねと。管理画面でKEYを確認してもらったところ、はたしてそうであった。(あ、期限って延長できるんだー、って言われました。)
正解
まぁ別にテストアプリは動きまして、1年以内には認証方法変えますので、いいっちゃいいんですが、気持ちが悪いですね。
おそらく、ちゃんとしたやり方は、
app/src/main/res/raw/amplifyconfiguration.json
このファイルを修正するのではないかな……?
ここのapiのところのapiKeyを違うものにしたらエラーがでたので、ここ変えたらよかったみたい。
余計なpushをしてしまった……
でもほかの箇所にあるapiKeyは当然そのままでして、そしたらやっぱりpushしないとだめなのかも。
$ amplify status
で確認しても古いキーですね。
いま古いキーも結局期限延長により使えるようになっているのでちょっとよくわからないことになっている。
あと、APIのとあるパラメーター変えた?って問い合わせがきまして、amplify update のログ(ターミナルに表示されたものを退避しておいた)確認したけれどもしていなくて、でもタイミング的にはわたしが何かしたか…?って感じなので震えております。amplifyこわいこわい。
謎のパラメータAPIKeyExpirationEpochについては未解決ですが次の記事にて。