添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
完美的酱牛肉  ·  Vue3 TS ...·  2 年前    · 
逼格高的土豆  ·  vue中使用linq - 简书·  2 年前    · 

使用ecs上下文时,将环境变量传递给`docker-compose`。

0 人关注

我正在尝试使用最新的docker cli暴露的新ecs上下文。当我使用 docker context create ecs my_context 创建上下文时,我选择了使用环境变量的方法(推荐的方法),但现在无论我如何尝试调用 docker compose ,它总是返回信息 context requires credentials to be passed as environment variables 。在谷歌上搜索这条信息,没有任何结果 :/

我试着用 -e --environment 标志传递,我试着用 .env 文件和 --env-file 标志。

docker --context my_ecs compose -f docker-compose.yml -f docker-compose.dev.yml -e AWS_ACCESS_KEY_ID=XXXXXXX -e AWS_SECRET_ACCESS_KEY=XXXXXXXX -e AWS_DEFAULT_REGION=XXXXXXXX up

如果我不使用环境变量方法,它就会遇到另一个已知的(令人沮丧的)错误,即它使用了错误的aws区域,尽管上下文是以正确的区域设置的。我觉得环境变量选项可以解决这个问题,如果我可以让它看到环境变量的话。

amazon-web-services
docker
docker-compose
environment-variables
amazon-ecs
raydenl
raydenl
发布于 2021-06-03
4 个回答
mreferre
mreferre
发布于 2022-01-06
已采纳
0 人赞同

我认为在 docker compose up 命令中传递变量并不可行。它的工作方式是,你在你的shell中导出访问密钥ID、秘密访问密钥和区域变量,然后你通过指向这些变量来创建docker上下文, 如这里所示

你可以通过启动 docker context create ecs myecscontext ,然后挑选 AWS environment variables 来交互式地进行,或者你可以直接运行 docker context create ecs myecscontext --from-env

是的,如果你指的是 这个 ,那么区域错误是令人讨厌的。

是的,这就是地区问题:S在windows shell中没有导出选项,这可能是我失败的地方。
OMG Windows ... :)......这简直是15年后的事情了。开玩笑,....,我从来没有在Windows上使用过它,但我想一个 SET (而不是 EXPORT )就可以了?
是的,我已经试过 SET 很多次了,甚至手动添加了ENV变量,但它并没有接收到它们。有趣的是,我发现 docker-compose cli会自动拾取 .env 文件中的变量,甚至不需要用 --env-file 标志来指定文件,这似乎是另一个bug :S 然而对于ecs集成,我需要使用 docker cli和新的 compose 选项...我不相信它对 .env 文件的接收是一样的,否则我可能就不会有这个问题了 :D
可以确认的是,使用 docker compose -f docker-compose.build.yml build 时,默认也会在同一位置拾取一个 .env
Shintaro Maruyama
Shintaro Maruyama
发布于 2022-01-06
0 人赞同

谷歌搜索让我看到了这个帖子,(我使用的不是Windows,而是aws cloud9 IDE,)。 我可以通过向环境变量传递假值来摆脱信息 context requires credentials to be passed as environment variables 的情况,它是这样的。

$ docker context create ecs myecscontext 
? Create a Docker context using: AWS environment variables
Successfully created ecs context "myecscontext"
$ docker context use myecscontext                                                                    
myecscontext
$ docker context ls
context requires credentials to be passed as environment variables
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context ls     
NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT               KUBERNETES ENDPOINT   ORCHESTRATOR
default             moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                         swarm
myecscontext *      ecs                 credentials read from environment                                                             
$ AWS_SECRET_ACCESS_KEY=dummy AWS_ACCESS_KEY_ID=dummy AWS_DEFAULT_REGION=dummy docker context use default
default
$ docker context ls
NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT               KUBERNETES ENDPOINT   ORCHESTRATOR
default *           moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                         swarm
myecscontext        ecs                 credentials read from environment                                                             
$ docker context rm myecscontext
myecscontext
Daniel Orozco
Daniel Orozco
发布于 2022-01-06
0 人赞同

在Linux或MacOs上修改和导出环境变量 环境变量配置AWS CLI

  • export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
  • export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  • export AWS_DEFAULT_REGION=us-west-2
  • 稍后,你可以通过这个命令看到这些选项。

    docker context create ecs --help
    

    描述。为Amazon ECS创建一个上下文

    使用方法。 docker context create ecs CONTEXT [flags].

  • --access-keys string:使用文件中的AWS访问密钥
  • --description string:环境的描述
  • --from-env:使用AWS的环境变量作为配置文件,或凭证和区域的环境变量。
  • -h,--help:ecs的帮助
  • --local-simulation:为ECS的本地模拟端点创建上下文。
  •