如何解决来自 AWS CLI 与 API 的不同令牌
当使用 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 的文档有点少,我缺少什么(或误解)?
解决方法
结果是来自 API 的响应是 Base64Encoded(它实际上在文档中说,我只是假设来自 CLI 的令牌也被编码,我不需要解码它,只需将它传递如给定)。
通过以下方式解码:
var tokenData = Convert.FromBase64String(tokenResponse.AuthorizationData.Single().AuthorizationToken);
var tokenContent = Encoding.UTF8.GetString(tokenData);
以 Foo:bar
格式返回字符串,其中 bar
是与 CLI 返回的匹配的标记。因此,在冒号上将其拆分然后为您提供与通过 CLI 相同的信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。