本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中建立儲存庫之後 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 檔案進行下列變更:
-
CodeArtifact 使用憑證 AWS 從中擷取授權權杖後,新增授權權杖。
-
將 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 指向儲存庫,以安裝或發佈套件。
Replace (取代)
my_domain
您的 CodeArtifact 網域名稱。Replace (取代)
111122223333
網域擁有者的帳戶 AWS ID。如果您要存取您擁有網域中的儲存庫,則不需要包含--domain-owner
。如需詳細資訊,請參閱跨帳戶網域。Replace (取代)
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 登錄檔
使用 設定 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