本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CodeArtifact 身份驗證和令牌
CodeArtifact 要求使用者透過服務進行驗證,才能發佈或使用套件版本。您必須使用憑據創建授權令牌來對 CodeArtifact 服務進行身份驗 AWS 證。為了創建授權令牌,您必須具有正確的權限。如需建立授權權杖所需的權限,請參閱中的GetAuthorizationToken
項目AWS CodeArtifact 權限參考。如需有關 CodeArtifact 權限的更多一般資訊,請參閱如何與 IAM AWS CodeArtifact 搭配使用。
要從中獲取授權令牌 CodeArtifact,您必須調用 GetAuthorizationToken API。使用 AWS CLI,您可以使GetAuthorizationToken
用login
或get-authorization-token
命令來呼叫。
注意
根使用者無法呼叫GetAuthorizationToken
。
aws codeartifact login
:這個命令可讓您輕鬆設定一般套件管理員,以便 CodeArtifact 在單一步驟中使用。調用login
獲取令牌,GetAuthorizationToken
並使用令牌和正確 CodeArtifact 的存儲庫端點配置您的包管理器。支持包管理器如下:dotnet
NPM
金塊
pip
迅速
纏繞
aws codeartifact get-authorization-token
: 對於不受支援的套件管理員login
,您可以get-authorization-token
直接呼叫,然後根據需要使用 Token 來設定套件管理員,例如,將它新增至組態檔或將其儲存為環境變數。
CodeArtifact 授權令牌在 12 小時的默認時間內有效。令牌可以在 15 分鐘到 12 小時之間配置生命週期。當生命週期到期時,您必須獲取另一個令牌。令牌生命週期在login
或get-authorization-token
被調用之後開始。
如果get-authorization-token
在假設角色時呼叫login
或,您可以將值設定為,將權杖的生命週期設定為等於角色工作階段持續時間中的剩餘時間0
。--duration-seconds
否則,權杖存留期與角色的工作階段持續時間上限無關。例如,假設您呼叫sts
assume-role
並指定 15 分鐘的工作階段持續時間,然後呼叫login
以擷取 CodeArtifact 授權權杖。在這種情況下,即使這比 15 分鐘的會話持續時間長,令牌在整個 12 小時內有效。如需控制工作階段持續時間的相關資訊,請參閱 IAM 使用者指南中的使用 IAM 角色。
使用login
指令建立的權杖
該aws codeartifact login
命令將獲取令牌,GetAuthorizationToken
並使用令牌和正確的 CodeArtifact 存儲庫端點配置您的包管理器。
下表說明命login
令的參數。
參數 | 必要 | 描述 |
---|---|---|
|
是 |
要驗證的套件管理員。可能的值為 |
|
是 |
存放庫所屬的網域名稱。 |
|
否 |
網域擁有者的識別碼。如果存取您未經驗證的 AWS 帳戶所擁有的網域,則需要此參數。如需詳細資訊,請參閱「跨帳戶網域」。 |
|
是 |
要進行驗證的存放庫名稱。 |
|
否 |
登入資訊有效的時間 (以秒為單位)。最小值為 900*,最大值為 43200。 |
|
否 |
將命名空間與儲存庫工具相關聯。 |
|
否 |
僅列印將執行的指令,以連接您的工具與儲存庫,而不對您的組態進行任何變更。 |
* |
下面的示例演示了如何使用命令獲取授權login
令牌。
aws codeartifact login \ --tool
dotnet | npm | nuget | pip | swift | twine
\ --domainmy_domain
\ --domain-owner111122223333
\ --repositorymy_repo
如需如何搭配 npm 使用指login
令的特定指引,請參閱配置和使用 npm CodeArtifact。如需 Python,請參閱使用CodeArtifact與蟒蛇。
使用 GetAuthorizationToken
API 建立的權杖
您可以調get-authorization-token
用從中獲取授權令牌 CodeArtifact。
aws codeartifact get-authorization-token \ --domain
my_domain
\ --domain-owner111122223333
\ --query authorizationToken \ --output text
您可以使用--duration-seconds
參數更改令牌的有效時間。最小值為 900,最大值為 43200。下列範例會建立持續 1 小時 (3600 秒) 的權杖。
aws codeartifact get-authorization-token \ --domain
my_domain
\ --domain-owner111122223333
\ --query authorizationToken \ --output text \ --duration-seconds3600
如果get-authorization-token
在假設角色的情況下調用,則令牌生命週期與角色的最大會話持續時間無關。您可以將權杖設定為在假定角色的工作階段持續時間到期時過期,方法是設定--duration-seconds
為 0。
aws codeartifact get-authorization-token \ --domain
my_domain
\ --domain-owner111122223333
\ --query authorizationToken \ --output text \ --duration-seconds0
如需詳細資訊,請參閱下列文件:
-
有關令牌和環境變量的指導,請參閱使用環境變量傳遞身份驗證令牌。
-
如需 Python 使用者,請參閱無需登錄命令即可配置 pip或配置和使用麻線CodeArtifact。
-
對於 Maven 使用者,請參閱使用CodeArtifact與搖籃或 CodeArtifact 與 mvn 一起使用。
-
如需 npm 使用者,請參閱在不使用登錄命令的情況下配置 npm。
使用環境變量傳遞身份驗證令牌
AWS CodeArtifact 使用 GetAuthorizationToken
API 提供的授權令牌來驗證和授權構建工具(例如 Maven 和 Gradle)的請求。有關這些身份驗證令牌的更多信息,請參閱使用 GetAuthorizationToken API 建立的權杖。
您可以將這些身份驗證令牌存儲在可以由構建工具讀取的環境變量中,以獲取從 CodeArtifact 存儲庫中獲取軟件包或將軟件包發佈到其中所需的令牌。
出於安全原因,這種方法比將令牌存儲在可能被其他用戶或進程讀取的文件中,或者意外簽入源代碼控制中的文件中更好。
-
如中所述設定您的 AWS 認證安裝或升級,然後設定 AWS CLI。
-
設定
CODEARTIFACT_AUTH_TOKEN
環境變數:注意
在某些情況下,您不需要包含引
--domain-owner
數。如需詳細資訊,請參閱 跨帳戶網域。-
macOS 系統或
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain
my_domain
--domain-owner111122223333
--query authorizationToken --output text` -
視窗 (使用預設命令介面):
for /f %i in ('aws codeartifact get-authorization-token --domain
my_domain
--domain-owner111122223333
--query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i -
視窗 PowerShell:
$env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain
my_domain
--domain-owner111122223333
--query authorizationToken --output text
-
撤銷 CodeArtifact 授權令牌
當經過身份驗證的用戶創建令牌以訪問 CodeArtifact 資源時,該令牌將持續到其可自定義的訪問期結束為止。預設存取期限為 12 小時。在某些情況下,您可能希望在訪問期限過期之前撤銷對令牌的訪問權限。您可以按照以下說明撤銷對 CodeArtifact 資源的存取權。
如果您使用臨時安全登入資料 (例如假設角色或聯合身分使用者存取權) 建立存取權杖,則可以透過更新 IAM 政策以拒絕存取權來撤銷存取權。如需詳細資訊,請參閱 IAM 使用者指南中的停用臨時安全登入資料的許可。
如果您使用長期 IAM 使用者登入資料建立存取權杖,則必須修改使用者的政策以拒絕存取或刪除 IAM 使用者。如需詳細資訊,請參閱變更 IAM 使用者的許可或刪除 IAM 使用者。