Choi Jiho
AWS Amplifyを使ってみて感じたこと2
2023/09/12
Table of Contents
Amplifyのfunctionで楽
Lambdaのbuildとデプロイが楽
-
pythonを使うLambdaの場合、「amplify push」するとPipenvに書かれているpackageをインストールしてデプロイしてくれます
-
ただし、「amplify push」するマシンにPipenvインストールが必要です
FROM node:16.17.0-bullseye ...もろもろ省略... USER $UNAME RUN git clone https://github.com/pyenv/pyenv.git /home/$UNAME/.pyenv ENV PYENV_ROOT /home/$UNAME/.pyenv ENV PATH $PYENV_ROOT/bin:$PATH RUN pip3 install --user pipenv ENV PATH /home/$UNAME/.local/bin:$PATH
プログラミング言語のバージョン選択が不便。pythonは3.8固定で作られます。変えたいなら別途修正必要です
例えばpython3.9にするためには
- function名-cloudformation-template.jsonでpythonバージョンを変える
- Pipfileで python_version = "3.9" にする
- cd Pipfileのところで pipenv --rm を実行
- amplify push
単位テスト書くなら別のディレクトリに書く必要があります。そうしないと一緒にデプロイされます。
赤線と同じ階層でディレクトリ作ったら、「amplify push」の時一緒にデプロイされてしまいます。これを避けるために緑の線のようにfunction外部に単位テスト用ディレクトリ作成がお勧めです。
Amplifyのcustomで楽
CloudFormationとCDKを使えます
Amplifyのcustomでよくない
- CDKでLambdaを扱う場合、「amplify push」の時Lambdaのコード変更を検知してくれないことを経験しました。Lambdaを使う場合は「amplify add function」がよいかと思います
- 関係があると推測しているissueです。 https://github.com/aws-amplify/amplify-cli/issues/9055
Amplifyのoverrideで楽
amplify override authなどでAWSリソースを細かく調整できます
Amplifyのoverrideでよくない
Amplifyデプロイ時に使うyarn run build(next build)でこけますから、調整が必要です。(AmplifyのcustomでCDK使う場合もそうですね)
./amplify/#current-cloud-backend/auth/xxxx/override.ts:1:xx
Type error: Cannot find module '@aws-amplify/cli-extensibility-helper' or its corresponding type declarations.
その他
-
AmplifyのNext.jsをbuildするところ(amplify.yml)でのnodeのバージョン変えたいなら別途修正必要です。
version: 1 ...省略 frontend: phases: preBuild: commands: - nvm use 18 - node -v - yarn install ...省略
-
Amplifyが作ったCloudFormationを修正した場合は「amplify env checkout 私の環境」が必要です。
Choi Jiho
Company : Fusic CO., LTD Program Language : PHP, Go, Ruby