見出し画像

Amplify CLIでCognitoトリガー使いたいなら自力で書くしかないみたい


AmplifyならCLIの操作だけで全部いい感じに作ってくれる。

そんな夢を見ていた時代が私にもありました。
しかし実際は、自力でjsonだかymlだか統一されないCloudFormationテンプレートを弄りまくらないと使えたもんじゃありません。

しかも下手すると次回updateした時に自動生成テンプレートに上書きされて全部消えてしまうことも。

こんなんでCloseにする神経がわからん。。

https://github.com/aws-amplify/amplify-cli/issues/2303

何が起こってるかと言うと、

amplify auth add ← Cognito作成
amplify auth update ← フォーム選択してCognitoトリガー作成

これでいい感じのトリガーと雛形が作成されます。
中でAWS SDKを使ってCognitoの操作もいい感じに書いてくれてます。

だがしかし

このLambdaにはCognitoを操作する権限が全く付いてないばかりか、付けようとしても循環参照エラーで付けられないんです。(完全に確信犯)

CloudFormationにはdependsOnの記述でリソース作成順序を指定する構文があるんですが、これがえらいことになってます。

Lambda作成 → Cognito作成

この順で指定されているものですからLambda側からCognitoのリソース名が参照できない。したがって、Cognitoポリシーがアタッチできないと言うことです。

いやアホかと。

てなわけで、今のところ上に貼ったリンクにあるとうり手作業で修正していくしかなさそうです。

私はCustomMessage以外諦めました。

必要な操作はAdminQueries的なAPIで解決させました。
無駄に悩んで魔改造すると保守性がだだ下がりになります。

ちなみにCustomMessageに関してもテンプレにバグがあり、最後に加筆する必要があります。

return event// <--- index.jsの最後に追加

このissueですね。


この記事が気に入ったらサポートをしてみませんか?