本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
配置和使用 npm CodeArtifact
在中建立儲存庫之後 CodeArtifact,您可以使用 npm 用戶端來安裝和發佈套件。使用存儲庫端點和授權令牌配置 npm 的推薦方法是使用aws codeartifact login
命令。您也可以手動配置 npm。
使用登錄命令配置 npm
使用該aws codeartifact login
命令獲取憑據以與 npm 一起使用。
注意
如果您正在訪問您擁有的域中的存儲庫,則不需要包含--domain-owner
。如需詳細資訊,請參閱 跨帳戶網域。
重要
如果您使用 npm 10.x 或更新版本,則必須使用 2.9.5 或更新 AWS CLI 版本才能成功執行命令。aws codeartifact login
aws codeartifact login --tool
npm
--domainmy_domain
--domain-owner111122223333
--repositorymy_repo
這個命令會對 ~/.npmrc 檔案進行下列變更:
-
從 CodeArtifact 使用 AWS 憑據獲取後添加授權令牌。
-
將 npm 註冊表設置為由
--repository
選項指定的存儲庫。 -
對於 npm 6 及更低版本:添加
"always-auth=true"
以便為每個 npm 命令發送授權令牌。
呼叫後的預設授權期間login
為 12 小時,login
必須呼叫以定期重新整理權杖。如需有關使用login
指令建立之授權權杖的詳細資訊,請參閱使用login指令建立的權杖。
在不使用登錄命令的情況下配置 npm
您可以通過手動更新 npm 配置來使用 CodeArtifact 存儲庫配置 npm,而無需使用aws codeartifact login
命令。
在不使用登錄命令的情況下配置 npm
在命令行中,獲取 CodeArtifact 授權令牌並將其存儲在環境變量中。npm 將使用此令牌與您的存儲庫進行身份驗證。 CodeArtifact
注意
以下指令適用於 macOS 或 Linux 電腦。如需在 Windows 電腦上設定環境變數的資訊,請參閱使用環境變量傳遞身份驗證令牌。
CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain
my_domain
--domain-owner111122223333
--query authorizationToken --output text`通過運行以下命令獲取 CodeArtifact 存儲庫的端點。您的存儲庫端點用於將 npm 指向存儲庫以安裝或發布包。
使用您的
網域名稱取代我的網
CodeArtifact 域名稱。以網域擁有者的 AWS 帳號識別碼取代
111122223333
。如果您正在訪問您擁有的域中的存儲庫,則不需要包含--domain-owner
。如需詳細資訊,請參閱 跨帳戶網域。用您的 CodeArtifact 存儲庫名稱替換
my_repo
。
aws codeartifact get-repository-endpoint --domain
my_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
/使用該
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 auth 令牌傳遞給甚至對於
GET
請求,請使用npm config set
.always-auth
npm config set //
my_domain
-111122223333
.d.codeartifact.region
.amazonaws.com/npm/my_repo
/:always-auth=true
實例 npm 配置文件(.npmrc
)
以下是遵循上述指示設定 CodeArtifact 登錄端點、新增驗證 Token 並進行設定之後的範例.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 命令。假設軟件包存在於您的存儲庫或其上游存儲庫之一中,則可以使用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 將 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 安裝時間造成建置時間。這種行為的實例將自己顯示為顯示幾分鐘的進度條。
若要避免此問題,請使用--no-progress
或progress=false
旗標搭配 npm
cli 命令,如下列範例所示。
npm install lodash --no-progress