【问题标题】:How to use AWS cli in an docker image?如何在 docker 镜像中使用 AWS cli?
【发布时间】:2021-03-30 17:38:27
【问题描述】:

我正在开发一些微服务。 我使用 docker-compose 进行本地测试,并通过 copilot 将内容部署到 ECS。

其中一项 NodeJS 服务现在需要 AWS CLI。

添加这个的最好方法是什么?

Dockerfile

FROM node:lts-buster-slim as base

RUN apt-get update
RUN apt-get install -y --no-install-recommends python build-essential curl unzip

RUN curl --insecure "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install

...

RUN npm install

问题是 AWS CLI 无法以这种方式找到凭证,因此 NPM 安装失败。如何使凭证可用? 我尝试向 docker-compose.yml 添加一个卷,但没有成功。

我能否以某种方式提供 AWS 配置/凭证作为 ENV 变量?我无法在容器中运行 aws configure,因为它需要手动输入。

编辑:

有一些简单的解决方案吗?我基本上只需要 AWS CLI,因为我需要运行 aws codeartifact login 以便我可以安装私有 NPM 包。

我确定创建一个任务会解决这个问题,没有更简单的方法吗? 我通过 AWS-SDK 完成其他所有操作,并且我已经拥有了相应的凭证。但是这一步是 NPM install 需要的,所以我必须使用 CLI。

EDIT2:

基本上我需要在构建阶段运行它:

aws codeartifact login --tool npm --repository xyz --domain something --region eu-west-1

我们有使用 CodeArtiact 的私有 NPM 存储库。我需要登录才能使用它。但是 Docker 不支持 Dockerfile 中的 ENV vars,所以我不知道如何提供 AWS 凭证。

基本上这是唯一的问题。

【问题讨论】:

  • 我觉得这个问题令人困惑。您是否只需要在 docker 构建期间使用 AWS CLI?或者容器在ECS上运行时需要在容器中使用吗?
  • 是的!很抱歉造成混乱。我只在构建阶段需要它,而 npm install 正在运行。我需要安装私有 NPM 包。
  • @MarkB 你在吗?
  • 这个问题让每个人都感到困惑,因为您包含了所有有关使用 ECS 的信息,而这与您要解决的问题完全无关。您只是尝试在 Docker 构建阶段运行 AWS CLI,这与 docker 映像最终将部署在哪里无关。只需将 AWS 凭证作为环境变量传递到 Docker 构建中。
  • 好的,但是怎么做? Docker 在构建期间不处理环境变量。或者你的意思是我应该将它们作为构建参数传递?

标签: amazon-web-services dockerfile amazon-ecs


【解决方案1】:

有许多选项可以向 CLI 提供凭据。它们被记录在here 中,并具有优先级。

虽然我不确定您的具体设置和 copilot 的最佳方法,但我会尝试选择环境变量选项,因为 docker-compose 很好地支持它。

同样,JS-SDK 有一个凭证链(参考 V2 here)。

【讨论】:

  • 感谢您的信息!实际上我需要在构建阶段安装私有 npm 包,这就是为什么我需要 cli
  • 所以唯一的选择是将 IAM 角色与我的 ECS 容器相关联,对吗?我的意思是,Docker 不支持 ENV 变量,它不能从上下文之外复制文件(所以我不能复制 ~/.aws/*)
  • 评论中的问题对我来说不是很清楚。当然,您可以复制 AWS 凭证文件(如果存在)。然后,您会将凭据烘焙到 docker 映像中,出于安全原因,这不是非常推荐的。此外,在大多数用例中,构建映像所需的权限(+ 连接到私有 nom 存储库等)和正在运行的应用程序(ECS 任务)所需的权限差异很大。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2022-10-15
  • 2021-04-05
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
  • 2020-07-03
相关资源
最近更新 更多