本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CodeArtifact 身份验证和令牌
CodeArtifact 要求用户通过服务进行身份验证才能发布或使用软件包版本。您必须使用您的 AWS 证书创建授权令牌,从而向 CodeArtifact 服务进行身份验证。要创建授权令牌,必须具有适当的权限。有关创建授权令牌所需的权限,请参阅 AWS CodeArtifact 权限参考中的 GetAuthorizationToken
条目。有关 CodeArtifact 权限的更多一般信息,请参阅AWS CodeArtifact 如何使用 IAM。
要从中获取授权令牌 CodeArtifact,必须调用GetAuthorizationToken API。使用 AWS CLI,您可以使用login
或get-authorization-token
命令GetAuthorizationToken
进行调用。
注意
Root 用户无法调用 GetAuthorizationToken
。
aws codeartifact login
:此命令可以轻松配置常用包管理器,以便 CodeArtifact 在单个步骤中使用。调用login
会使用获取令牌,GetAuthorizationToken
并使用令牌和正确的 CodeArtifact 存储库端点配置您的包管理器。支持包管理器如下:dotnet
npm
nuget
pip
迅速
缠绕
aws codeartifact get-authorization-token
:对于login
不支持的程序包管理器,您可以直接调用get-authorization-token
,然后根据需要使用令牌配置程序包管理器,例如,将其添加到配置文件或将其存储为环境变量。
CodeArtifact 授权令牌的默认有效期为 12 小时。令牌的有效期限可以配置为 15 分钟至 12 小时。当有效期限到期时,您必须获取另一个令牌。令牌的有效期限从 login
之后或调用 get-authorization-token
之后开始。
如果在代入角色时调用 login
或 get-authorization-token
,则可以通过将 --duration-seconds
的值设置为 0
,将令牌的有效期限配置为与角色会话持续时间中的剩余时间相等。否则,令牌有效期限与角色的最长会话持续时间无关。例如,假设您调用sts
assume-role
并指定会话持续时间为 15 分钟,然后调login
用获取 CodeArtifact 授权令牌。在这种情况下,令牌在整整 12 小时内有效,即使此时间比 15 分钟的会话持续时间更长。有关控制会话持续时间的信息,请参阅IAM用户指南中的使用IAM角色。
使用 login
命令创建的令牌
该aws codeartifact login
命令将使用获取令牌,GetAuthorizationToken
并使用令牌和正确的 CodeArtifact 存储库端点配置您的包管理器。
下表说明了 login
命令的参数。
参数 | 必需 | 描述 |
---|---|---|
|
是 |
要进行身份验证的程序包管理器。可能的值为 |
|
是 |
存储库所属域的名称。 |
|
否 |
域所有者的 ID。如果访问的域名归您未通过身份验证的 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 与 Python 一起使用。
调用所需的权限 GetAuthorizationToken
API
需要sts:GetServiceBearerToken
和codeartifact:GetAuthorizationToken
权限才能调用 CodeArtifact GetAuthorizationToken
API。
要在 CodeArtifact 仓库中使用包管理器,您的IAM用户或角色必须允许sts:GetServiceBearerToken
。虽然sts:GetServiceBearerToken
可以添加到 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 用户,请参阅不使用 login 命令配置 pip或配置和使用麻线 CodeArtifact。
-
对于 Maven 用户,请参阅 CodeArtifact 与 Gradle 搭配使用或 CodeArtifact 与 mvn 一起使用。
-
对于 npm 用户,请参阅不使用 login 命令配置 npm。
使用环境变量传递身份验证令牌
AWS CodeArtifact 使用出售的授权令牌对来自 Maven 和 Gradle 等构建工具的请求进行身份验证和授权。GetAuthorizationToken
API有关这些身份验证令牌的更多信息,请参阅使用创建的代币 GetAuthorizationToken API。
您可以将这些身份验证令牌存储在环境变量中,构建工具可以读取该变量,以获取从存储库中获取包或向 CodeArtifact 仓库发布软件包所需的令牌。
出于安全考虑,与将令牌存储在可能被其他用户或进程读取或意外提交到源代码控制的文件中相比,这种方法更好。
-
按照中所述配置您的 AWS 证书安装或升级 AWS CLI,然后对其进行配置。
-
设置
CODEARTIFACT_AUTH_TOKEN
环境变量:注意
在某些情况下,不需要包括
--domain-owner
参数。有关更多信息,请参阅 跨账户域。-
macOS 或 Linux:
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain
my_domain
--domain-owner111122223333
--query authorizationToken --output text` -
Windows(使用默认命令 shell):
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用户。