【发布时间】:2021-05-13 19:43:42
【问题描述】:
当使用 aws ecr get-login-password --region us-east-1 的 AWS CLI 命令时,我得到了一个大小合适的令牌,可用于我的 Docker 命令。然而,使用 API 会生成一个更大的令牌,该令牌无效并在尝试登录 Docker 时导致 400 错误。
var ecrClient = new AmazonECRClient(awsAccessKeyId, awsSecretAccessKey, RegionEndpoint.USEast1);
var tokenResponse = await ecrClient.GetAuthorizationTokenAsync(new GetAuthorizationTokenRequest());
var token = tokenResponse.AuthorizationData.Single().AuthorizationToken;
awsAccessKeyId 和 awsSecretAccessKey 从 API 使用到 CLI 使用都是相同的(在执行 aws configure 并将它们设置在那里时)。 API 的文档有点稀疏,我遗漏了什么(或误解)?
【问题讨论】:
-
get-login-password和get-authorization-token是两个不同的 API 调用,目的不同。为什么在 CLI 中使用第一个,而在 c# 中使用第二个? -
@Marcin 因为 .GetAuthorizationTokenAsync 的文档暗示它是 get-login-password 的 API 版本(如果这是对参考文档的错误阅读,那么他们可能应该删除对 CLI 的引用该方法描述中的命令或更好地阐明您需要做什么)。
-
我明白了,你是对的。你有没有关注instructions关于如何使用这个api?
-
@Marcin 使用 CLI 命令,我能够成功地将令牌传递给 docker login 没有其他任何东西(只有其他参数是用户名和它正在登录的结尾)。我希望我能够对 API 提供的令牌做同样的事情,实际上我希望得到相同的令牌,但是我得到了一个更大的令牌并且它无法工作。如果我需要对 API 令牌做一些不同的事情,那就是我正在寻找的。span>
标签: c# amazon-web-services amazon-ecr