amazon-web-services - 从 gitlab CI 运行 `aws ecr get-login-password --region eu-west-3` 时出现 UnrecognizedClientException

我正在尝试从 gitlab CI 运行以下命令:

$ aws ecr get-login-password --region eu-west-3

以下是 .gitlab-ci.yml 中的工作的样子

publish-job:
  stage: publish
  image:
    name: amazon/aws-cli:latest
    entrypoint: [""]
  script:
    - aws configure set aws_access_key_id MY_ACCESS_KEY_ID
    - aws configure set aws_secret_access_key MY_SECRET_ACCESS_KEY
    - aws configure set default.region eu-west-3
    - aws ecr get-login-password --region eu-west-3

在最后一步,我收到以下错误:

$ aws ecr get-login-password --region eu-west-3
An error occurred (UnrecognizedClientException) when calling the GetAuthorizationToken operation: The security token included in the request is invalid.

我知道堆栈溢出有一个 https://stackoverflow.com/questions/48488172/unrecognizedclientexception-error-when-authenticating-on-aws-cli 但我认为这不是同一个问题。在那个问题中,这是一个与权限有关的问题。就我而言,我很确定这不是出于两个原因:

  • 我给了与访问权限相关的用户 key AdministratorAccess (暂时以排除我正在处理权限问题的可能性)
  • 我用 docker 执行了完全相同的步骤(通过复制和粘贴)并且它有效,所以它不是凭据。这是 Dockerfile:
FROM amazon/aws-cli:latest

RUN aws configure set aws_access_key_id THE_SAME_ACCESS_KEY_ID
RUN aws configure set aws_secret_access_key THE_SAME_SECRET_ACCESS_KEY
RUN aws configure set default.region eu-west-3
RUN aws ecr get-login-password --region eu-west-3

然后我跑了 $ docker build --progress=plain . 并且最后一步返回了一个哈希

知道为什么这些步骤会产生不一致的结果吗?以及如何修复 CI?

回答1

我声明了一个阻止 cli 执行命令的 AWS_DEFAULT_REGION 环境变量(即使我在此阶段对凭据进行了硬编码)。当我删除环境变量时,一切都开始正常工作。

相似文章

bash - 明智地列出 pod 区域

我正在尝试明智地列出pod的区域,为此,我正在获取节点的详细信息,其中包含区域详细信息以及节点标识符,而pods列表具有公共节点标识符,现在我想合并两个结果并希望打印pod的区域。kubectlget...

随机推荐

最新文章