本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 CodeArtifact 中建立儲存庫之後,您可以使用 npm 用戶端來安裝和發佈套件。使用儲存庫端點和授權字符設定 npm 的建議方法是使用 aws codeartifact login
命令。您也可以手動設定 npm。
使用登入命令設定 npm
使用 aws codeartifact login
命令來擷取登入資料,以便與 npm 搭配使用。
注意
如果您要存取您擁有之網域中的儲存庫,則不需要包含 --domain-owner
。如需詳細資訊,請參閱跨帳戶網域。
重要
如果您使用的是 npm 10.x 或更新版本,則必須使用 2 AWS CLI .9.5 或更新版本才能成功執行aws codeartifact login
命令。
aws codeartifact login --tool
npm
--domainmy_domain
--domain-owner111122223333
--repositorymy_repo
此命令會對 ~/.npmrc 檔案進行下列變更:
-
使用您的 AWS 登入資料從 CodeArtifact 擷取授權字符後,新增授權字符。
-
將 npm 登錄檔設定為
--repository
選項指定的儲存庫。 -
對於 npm 6 和更低:新增 ,
"always-auth=true"
以便為每個 npm 命令傳送授權字符。
呼叫 後的預設授權期間login
為 12 小時,login
必須呼叫 以定期重新整理字符。如需使用 login
命令建立的授權字符的詳細資訊,請參閱 使用 login命令建立的字符。
不使用登入命令設定 npm
您可以使用 CodeArtifact 儲存庫設定 npm,無需 aws codeartifact login
命令,方法是手動更新 npm 組態。
設定 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 網域名稱取代
my_domain
。以網域擁有者 AWS 的帳戶 ID 取代
111122223333
。如果您要存取您擁有之網域中的儲存庫,則不需要包含--domain-owner
。如需詳細資訊,請參閱跨帳戶網域。將
my_repo
取代為您的 CodeArtifact 儲存庫名稱。
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
/注意
若要使用雙堆疊端點,請使用
codeartifact.
端點。region
.on.aws使用
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
範例 npm 組態檔案 (.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 命令。假設套件存在於您的儲存庫或其上游儲存庫之一,您可以使用 安裝套件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 登錄檔
使用 CodeArtifact 設定 npm 會將 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 安裝時間過長。此行為的執行個體會以進度列顯示自己幾分鐘。
若要避免此問題,請使用 --no-progress
或 progress=false
旗標搭配 npm
cli 命令,如下列範例所示。
npm install lodash --no-progress