超お父さんの日記

日記とか雑談とか、スノーボードとか、サーフィンとか、たまに技術系とか。

【Amplify iOS】AppSyncの認証モードをIAMにして未認証ユーザーが使えるようにする

前回、未認証ユーザーのIDを取得できるようになって、
アプリをガシガシ作り込んで一通り動くまでになった。

バックエンドを勝手にやってくれるAmplify万歳。
なのだけど、動かせるようになって7日経過した頃に問題が発生。

APIのqueryが全てエラーに。
ステータスコードが401となっていた。
APIキーの期限が切れたようだ。

Amplifyのチュートリアルを何も考えずに進めていると、
知らず知らずのうちに認証モードをAPIキーにしていて、有効期限が7日に設定される。
最大365日に設定できるみたいだけど、この認証モードだとアプリを1年に1回APIキー更新のアップデートが必要になってしまう。
まるで昔のプッシュ通知のように。。。

そこでAppSyncの設定画面をみてみると、認証モードでIAMが設定できることに気付き、設定方法を調べてみる。
公式ドキュメントをみる感じ、IAMのロールにポリシー追加したら行けそうな気配。
セキュリティ - AWS AppSync

amplify add api(あるいはamplify update api )をして認証の質問のとこでIAMを選び、プッシュします。*1
そしてIAMの管理画面でポリシーの追加の際、Resource部分を自分のリソース名に変えて設定。
「1 つ以上のアクションがこのリソースをサポートしていません。」という警告がでますがとりあえず気にせず。
そのポリシーをunauthRoleにアタッチして、アプリを動かしてみたら、、、行けたー。

Amplifyっていろいろ勝手に裏側を設定してくれるので、楽っちゃ楽なのですが、何か起きた時に裏側がどうなってるか知らないと太刀打ちできません。
この記事とても参考になりました、ありがとうございました。
qiita.com

*1:ちなみにAmplify CLIのバージョンは4.22.0