CodeArtifact で npm を設定して使用する - CodeArtifact

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CodeArtifact で npm を設定して使用する

CodeArtifact でリポジトリを作成したら、npm クライアントを使用してパッケージをインストールして公開できます。リポジトリエンドポイントと認可トークンで npm を設定するための推奨される方法は、aws codeartifact login コマンドの使用です。npm を手動で設定することもできます。

login コマンドを使用した npm の設定

aws codeartifact login コマンドを使用して、npm で使用する認証情報を取得します。

注記

所有しているドメインのリポジトリにアクセスする場合は、--domain-owner を含める必要はありません。詳細については、「クロスアカウントドメイン」を参照してください。

重要

npm 10.x 以降を使用している場合、aws codeartifact login コマンドを正常に実行するには AWS CLI バージョン 2.9.5 以降を使用する必要があります。

aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo

このコマンドは、 ~/.npmrc ファイルに次の変更を加えます:

  • AWS 認証情報を使用して CodeArtifact からそれを取得した後、認可トークンを追加します。

  • npm レジストリを、--repository オプションで指定されたリポジトリに設定します。

  • npm 6 以下の場合: "always-auth=true" を追加すると、認可トークンがすべての npm コマンドに対して送信されます。

login を呼び出した後のデフォルトの認可時間は 12 時間であり、トークンを定期的に更新するには、login を呼び出す必要があります。login コマンドで作成される認可トークンの詳細については、「loginコマンドで作成されたトークン」を参照してください。

login コマンドを使用せずに npm を設定する

aws codeartifact login コマンドを使用せずに CodeArtifact リポジトリで npm を設定するには、npm 設定を手動で更新します。

login コマンドを使用せずに npm を設定するには
  1. コマンドラインで、CodeArtifact 認可トークンを取得し、環境変数に保存します。npm はこのトークンを使用して CodeArtifact リポジトリで認証します。

    注記

    次のコマンドは、macOS または Linux 用です。Windows での環境変数の設定については、「環境変数を使用して認証トークンを渡す」を参照してください。

    CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
  2. 次のコマンドを実行して、CodeArtifact リポジトリのエンドポイントを取得します。リポジトリエンドポイントは、パッケージをインストールまたは公開するために npm をリポジトリに指すために使用されます。

    • my_domain を CodeArtifact ドメイン名で置き換えます。

    • 111122223333 をAWS ドメインの所有者のアカウント ID で置き換えます。所有しているドメインのリポジトリにアクセスする場合は、--domain-owner を含める必要はありません。詳細については、「クロスアカウントドメイン」を参照してください。

    • my_repo を CodeArtifact リポジトリ名で置き換えます。

    aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm

    次の URL は、リポジトリエンドポイントの例です。

    https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/
    重要

    レジストリ URL はスラッシュ (/) で終わる必要があります。そうしないと、リポジトリに接続することはできません。

  3. npm config setコマンドを使用して、CodeArtifact リポジトリにレジストリを設定します。URL を、前のステップのリポジトリエンドポイントの URL に置き換えます。

    npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
  4. npm config set コマンドを使用して、npm 設定に認可トークンを追加します。

    npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:_authToken=$CODEARTIFACT_AUTH_TOKEN

    npm 6 以下の場合: npm に常に認証トークンを CodeArtifact に渡すようにするには、GET リクエストの場合は、npm config setalways-auth 設定変数を設定します。

    npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:always-auth=true

構成ファイルの例 (.npmrc)

次に .npmrc ファイルの例を示します。CodeArtifact レジストリエンドポイントを設定するための先の指示に従った後、認証トークンを追加し、always-auth を設定します。

registry=https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my-cli-repo/ //my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken=eyJ2ZX... //my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:always-auth=true

npm コマンドを実行する

npm クライアントを設定したら、npm コマンドを実行できます。パッケージがリポジトリまたはその上流のリポジトリの1つに存在すると仮定すると、パッケージを npm install でインストールできます。例えば、以下を使用して lodash パッケージをインストールします。

npm install lodash

次のコマンドを使用して、新しい npm パッケージを CodeArtifact リポジトリに公開します。

npm publish

npm パッケージを作成する方法については、npm ドキュメントウェブサイト 上の Node.js モジュールの作成 を参照してください。CodeArtifact でサポートされる npm コマンドのリストについては、npm コマンドのサポート を参照してください。

npm の認証と認可の検証

npm ping コマンドの呼び出しは、次のことを検証する方法です。

  • CodeArtifact リポジトリに対して認証できるように、認証情報が正しく設定されました。

  • 認可設定により、ReadFromRepository アクセス許可が与えられます。

npm ping の正常な呼び出しからの出力は次のようになります。

$ npm -d ping npm info it worked if it ends with ok npm info using npm@6.4.1 npm info using node@v9.5.0 npm info attempt registry request try #1 at 4:30:59 PM npm http request GET https://<domain>.d.codeartifact.us-west-2.amazonaws.com/npm/shared/-/ping?write=true npm http 200 https:///npm/shared/-/ping?write=true Ping success: {} npm timing npm Completed in 716ms npm info ok

-d オプションを指定すると、npm はリポジトリ URL を含む追加のデバッグ情報を出力します。この情報により、npm が期待するリポジトリを使用するように設定されていることを簡単に確認できます。

デフォルトの npm レジストリに戻す

npm を CodeArtifact で設定すると、npm レジストリが指定された CodeArtifact リポジトリに設定されます。次のコマンドを実行すると、CodeArtifact への接続が完了したら、npm レジストリをデフォルトのレジストリに戻すことができます。

npm config set registry https://registry.npmjs.com/

npm 8.x 以降でのインストールが遅い場合のトラブルシューティング

npm バージョン8.x 以降には既知の問題があります。パッケージリポジトリに対してリクエストが行われ、リポジトリがアセットを直接ストリーミングする代わりにクライアントを Amazon S3 にリダイレクトすると、npm クライアントが依存関係ごとに数分間ハングアップする可能性があります。

CodeArtifact リポジトリはリクエストを常に Amazon S3 にリダイレクトするように設計されているため、この問題が発生することがあり、npm のインストール時間が長くなるため、ビルド時間が長くなります。この動作が発生すると、進行状況バーが数分間表示されます。

この問題を回避するには、次の例のように npm CLI コマンドで --no-progress または progress=false フラグを使用します。

npm install lodash --no-progress