【问题标题】:How can I install aws cli, from WITHIN the ECS task?如何从 ECS 任务中安装 aws cli?
【发布时间】:2021-05-12 08:32:59
【问题描述】:

问题: 如何从 ECS 任务中安装 aws cli?

说明: 我正在使用 docker 容器来运行 logstash 应用程序(它是弹性系列的一部分)。

docker 镜像名称是“docker.elastic.co/logstash/logstash:7.10.2” 此 logstash 应用程序需要写入 S3,因此需要安装 AWS CLI。 如果未安装 aws,则会崩溃。

# 第 1 步 # 为了避免崩溃,当我将此应用程序仅用作 docker 时,我以一种在 docker 容器启动后导致“logstash start”延迟的方式运行它。 我通过在启动 logstash 之前将“sleep”命令添加到外部 docker-entrypoint 文件来做到这一点。

这是它在 docker-entrypoint 文件中的样子: 睡眠 120

if [[ -z $1 ]] || [[ ${1:0:1} == '-' ]] ; then
  exec logstash "$@"
else
  exec "$@"
fi
 # EOF

# 第 2 步 # 使用“--entrypoint”标志运行 docker,这样它将使用我的入口点文件

docker run \
           -d \
           --name my_logstash \
           -v /home/centos/DevOps/psifas_logstash_docker-entrypoint:/usr/local/bin/psifas_logstash_docker-entrypoint  \
           -v /home/centos/DevOps/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
           -v /home/centos/DevOps/logstash.yml:/usr/share/logstash/config/logstash.yml \
           --entrypoint /usr/local/bin/psifas_logstash_docker-entrypoint  \
           docker.elastic.co/logstash/logstash:7.10.2

#步骤 3 # 从托管 docker 的服务器安装 aws cli 并配置 aws cli:

docker exec -it -u root <DOCKER_CONTAINER_ID> yum install awscli -y
docker exec -it <DOCKER_CONTAINER_ID> aws configure set aws_access_key_id <MY_aws_access_key_id>
docker exec -it <DOCKER_CONTAINER_ID> aws configure set aws_secret_access_key <MY_aws_secret_access_key>
docker exec -it <DOCKER_CONTAINER_ID> aws configure set region <MY_region>

这对我有用, 现在我想将此流程“翻译”为 AWS ECS 任务。 在 ECS 中,我将使用参数而不是运行上述 3 个“aws configure”命令。

我的问题 如何从 ECS 任务中执行我的第三步,安装 aws cli? (意思是不在托管ECS集群的EC2服务器上运行)

当我在 docker 上工作时,我也想到了使用 aws cli 的这些选项:

  1. 找到一个包含logstash和aws cli的官方弹性docker镜像。
  2. 自己创建这样的图像并使用。

最终我选择了上面的 3 个步骤,但我愿意接受建议。

另外,我的测试表明在同一个 ECS 任务中运行 2 个容器:

  1. logstah
  2. awscli 然后 logstash 容器将使用 aws cli 容器 (图片“amazon/aws-cli”)不工作。

非常感谢 :-)

【问题讨论】:

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


    【解决方案1】:

    您的选项#2,自己创建图像,确实是最好的方法。其他任何事情都将成为“黑客”。此外,您不应为在 ECS 中运行的映像运行 aws configure,您应该为任务分配 IAM 角色,AWS CLI 会选择并使用它。

    【讨论】:

    • 嗨,马克,谢谢你的回答 :-)
    【解决方案2】:

    Mark B,您的回答帮助我解决了这个问题。谢谢!

    在这里写下解决方案,以防对其他人有所帮助。

    无需安装 AWS CLI,在 ECS 任务内运行的 logstash docker 容器中。

    在 logstash 容器内(来自图像“docker.elastic.co/logstash/logstash:7.10.2”)有 AWS SDK 可以连接到 S3。

    唯一需要的是允许 ECS 任务执行角色访问 S3。 (我附上了 AmazonS3FullAccess 政策)

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 2017-01-20
      • 1970-01-01
      • 2017-01-06
      • 2023-01-18
      • 2021-11-15
      • 2021-02-13
      • 1970-01-01
      • 2016-05-04
      相关资源
      最近更新 更多