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

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

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

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

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

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

注記

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

重要

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

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

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

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

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

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

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

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

npm 設定を手動で更新することで、 aws codeartifact login コマンドを使用せずに CodeArtifact リポジトリで 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リクエストに対しても always-auth設定変数を に設定しますnpm config set

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

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

以下は、前述の手順に従って CodeArtifact レジストリエンドポイントを設定し、認証トークンを追加し、 を設定した後の .npmrc ファイルの例です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 モジュールの作成 を参照してください。でサポートされている npm コマンドのリストについては CodeArtifact、「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 を設定すると、npm レジストリが指定された CodeArtifact リポジトリに CodeArtifact 設定されます。への接続が完了したら、次のコマンドを実行して npm レジストリをデフォルトのレジストリに戻すことができます CodeArtifact。

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