翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CodeArtifact で npm を設定して使用する
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 --toolnpm--domainmy_domain--domain-owner111122223333--repositorymy_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 を設定するには
コマンドラインで、CodeArtifact 認可トークンを取得し、環境変数に保存します。npm はこのトークンを使用して CodeArtifact リポジトリで認証します。
注記
次のコマンドは、macOS または Linux 用です。Windows での環境変数の設定については、「環境変数を使用して認証トークンを渡す」を参照してください。
CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domainmy_domain--domain-owner111122223333--query authorizationToken --output text`次のコマンドを実行して、CodeArtifact リポジトリのエンドポイントを取得します。リポジトリエンドポイントは、パッケージをインストールまたは公開するために npm をリポジトリに指すために使用されます。
my_domainを CodeArtifact ドメイン名で置き換えます。111122223333「」をドメイン所有者の AWS アカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合、--domain-ownerを含める必要はありません。詳細については、「クロスアカウントドメイン」を参照してください。my_repoを CodeArtifact リポジトリ名で置き換えます。
aws codeartifact get-repository-endpoint --domainmy_domain--domain-owner111122223333--repositorymy_repo--format npm次の URL は、リポジトリエンドポイントの例です。
https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/重要
レジストリ URL はスラッシュ (/) で終わる必要があります。そうしないと、リポジトリに接続することはできません。
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.awsnpm config setコマンドを使用して、npm 設定に認可トークンを追加します。npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:_authToken=$CODEARTIFACT_AUTH_TOKENnpm 6 以下の場合: npm に常に認証トークンを CodeArtifact に渡すようにするには、
GETリクエストの場合は、npm config setでalways-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 モジュールの作成
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