で 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/
    注記

    デュアルスタックエンドポイントを使用するには、codeartifact.region.on.awsエンドポイントを使用します。

  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