Top View


Author Choi Jiho

AWS Amplifyを使ってみて感じたこと2

2023/09/12

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にするためには

  1. function名-cloudformation-template.jsonでpythonバージョンを変える
  2. Pipfileで python_version = "3.9" にする
  3. cd Pipfileのところで pipenv --rm を実行
  4. 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

Choi Jiho

Company : Fusic CO., LTD Program Language : PHP, Go, Ruby