amazon-web-services - 如何在 docker 镜像中使用 AWS cli?
问题描述
我正在开发一些微服务。我使用 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 vars 吗?我无法在容器中运行 aws configure,因为它需要手动输入。
编辑:
有一些简单的解决方案吗?我基本上只需要 AWS CLI,因为我需要运行aws codeartifact login
以便安装私有 NPM 包。
我确信创建一个任务会解决这个问题,没有更简单的方法吗?我通过 AWS-SDK 完成其他所有操作,并且我已经拥有了相应的凭证。但是这一步是 NPM 安装所必需的,所以我必须使用 CLI。
编辑2:
基本上我需要在构建阶段运行它:
aws codeartifact login --tool npm --repository xyz --domain something --region eu-west-1
我们有使用 CodeArtiact 的私有 NPM 存储库。我需要登录才能使用它。但是 Docker 不支持 Dockerfile 中的 ENV vars,所以我不知道如何提供 AWS 凭证。
基本上这是唯一的问题。
解决方案
推荐阅读
- reactjs - React / Reactstrap 警告:在严格模式树中检测到旧版上下文 API
- neo4j - 如何使用实体来接收neo4j关系的类型?
- java - 什么 intellji 插件可以帮助改进 java 编码?
- php - 错误:Apache 意外关闭。Xampp
- java - 如何在 Spring Boot 中使用阻塞队列?
- numpy - python numpy/scipy 缩放更改中心
- llvm - 在 llvm 结构之间转换
- java - 具有 Object 类型的成员变量的 Java 类
- python - Python将字符串列表简化为字符串
- flutter - 每次切换屏幕时 Flutter Webview 都会重新加载