📑

amplify + container-base api を使ってハマったメモ

2021/03/20に公開

初めてのzennへの投稿です。

今日ハマったことをメモ書き的に残しておきます。
このメモが誰かの役に立てば幸いです。

amplify api addで追加するときのの名前は小文字のみでないといけない

amplify push するときにecrの作成でこけました。
amplify-cliで作成してくれる AdminQuery とかにならってAdminServiceとかつけたらダメですってお話です。

amplify status の変更検知のトリガーが謎

amplify/backend/api/{service name}/src 配下を修正したらamplify statusが Update になる。
でもamplify push を実行してもsrc配下のファイルをデプロイしてくれない。
自分でsrcをzip圧縮してs3にあげましょう。
s3のパスは amplify/backend/api/{service name}/parameters.jsonに記載があります。

Docker hub のrate limit でこける。

code buildで早速こけました。

toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

最初にamplify pushを実行したときに buildspec.yml ができていたので、よしよし、こいつにdocker loginを追加して・・・
は大間違い、
再度amplify pushを実行するとで修正が無かったことにしてくれます。
結局でecrを別で構築して、ベースイメージをそちらにコピーすることに。

そしたらecrからのdocker pull でこける。

error pulling image configuration: denied: User: arn:aws:sts::xxxx:assumed-role/xxxxx/xxxx is not authorized to perform: ecr:GetDownloadUrlForLayer on resource: arn:aws:ecr:ap-northeast-1:xxxx:repository/xxxx

これはおそらくバグ
codebuildのロールのインラインポリシーが間違ってる。
https://github.com/aws-amplify/amplify-cli/blob/master/packages/amplify-category-api/src/provider-utils/awscloudformation/pipeline-with-awaiter.ts#L158
マネコンで直接'ecr:BatchGetDownloadUrlForLayer'となっているところをecr:GetDownloadUrlForLayerに修正しました。

Dockerfileに書いたRUNで standard_init_linux.go:211: exec user process caused "exec format error"

これはもはやamplifyは関係ないんだけど、
私がm1マックでpullしたイメージをtagつけしてecrにあげていたのでアーキテクチャがarmになっていて、codebuildで扱えなかったって話でした。


全然纏まってないですが、生年祝いに招待されているので今日はここまで。

Discussion