🏗️

AWS Amplify のビルド時にAWS CodeArtifactにあるnpmパッケージをインストールする

2024/09/28に公開

はじめに

AWS CodeArtifact にある npm パッケージを使用したプロジェクトを AWS Amplify でホスティングする際にビルドに一設定あったので、備忘録として残しておきます。

方法

前提条件

  • AWS Amplify にホスティング済み
  • AWS CodeArtifact に npm パッケージが登録されている
  • AWS CodeArtifact にアクセスするための IAM ロールが作成されている

1. Amplify のビルド環境で AWS CLI2 を使えるようにする

Amplify のビルド時に AWS CLI2 を使えるようにします。
Amplify のビルド環境にAmazon Linux 2023を選択している場合は、デフォルトで AWS CLI2 がインストールされています。

https://docs.aws.amazon.com/linux/al2023/ug/awscli2.html

カスタムイメージ等を使っている場合は、ビルド環境に AWS CLI2 をセットアップする必要があります。
preBuildフェーズで AWS CLI2 のセットアップを行うのがいいかと思います。

2. AWS CodeArtifact から npm パッケージインストールできる IAM ロールを Amplify サービスロールとして設定する

Amplify で AWS CodeArtifact から npm パッケージをインストールするためには、AWS CodeArtifact にアクセスするための IAM ロールを Amplify サービスロールとして設定する必要があります。
以下を参照して、Amplify サービスロール追加設定を行ってください。

https://docs.aws.amazon.com/ja_jp/amplify/latest/userguide/how-to-service-role-amplify-console.html

3. Amplify のビルド時に AWS CodeArtifact login する

2ステップまで行ったら、Amplify のビルド時に AWS CLI2 を使用して AWS CodeArtifact へのログインが行えると思います。
npm install前に AWS CodeArtifact にログインして、npm パッケージをインストールするようにします。

amplify.yml
version: 1
frontend:
  phases:
    preBuild:
      commands:
        # npm install 前に AWS CodeArtifact にログイン
        - aws codeartifact login --tool npm --repository foo --domain bar --domain-owner 1234567890 --region ap-northeast-1
        - npm ci --cache .npm --prefer-offline
    build:
      commands:
        - npm run build

    # 以下省略

以上が AWS Amplify のビルド時に AWS CodeArtifact にある npm パッケージをインストールする設定でした。

おわりに

AWS Amplify で AWS CodeArtifact にある npm パッケージをインストールする方法について紹介しました。
npm レジストリからパッケージインストール必要がある場合は、対象の AWS CodeArtifact リポジトリに npm レジストリをアップストリームリポジトリを設定する必要があります。
必要に応じて設定を行ってください。

Discussion