【问题标题】:AWS ECS Windows Scheduled Task running as System - AWS Credentials not foundAWS ECS Windows 计划任务作为系统运行 - 未找到 AWS 凭证
【发布时间】:2021-06-17 08:23:11
【问题描述】:

寻找一些指针,

我正在尝试在 AWS ECS 上的 Windows 容器上运行 Windows 计划任务,到目前为止我有:

  • EC2 Windows 实例
  • 具有正在运行的容器实例的 ECS (Windows)
  • 应用于 ECS 主机的 IAM 角色
  • S3 存储桶

我编写了一个 powershell 脚本,用于与 S3 存储桶交互,当我从 AWS 会话管理器执行它并执行到正在运行的容器中时,它运行得非常好。 aws configure list 命令显示它正在使用的凭据(容器角色),一切正常交互。

问题是我需要这是一个定时操作,所以我创建了一个计划任务来运行 powershell 命令,这就是问题开始的地方:

  1. 以系统方式运行计划任务 not 意味着它不会像守护程序一样运行/无需登录/非交互方​​式 - 但是,当我尝试执行相同的脚本时,aws cli 命令会失败,因为他们找不到 AWS 凭证,aws configure list 返回空,s3 命令返回 No credentials found 消息。
  2. 以容器管理员用户身份运行计划任务(AWS Session shell 将我登录为该用户)拒绝执行任务 - 尽管它显示为准备就绪,但它从未运行,我相信因为那是同一个用户还设置了计划任务,它被隐式设置为仅在用户登录时运行 - 除非我使用 /NP 开关,它希望我以交互方式输入密码(不好)。

为什么以 SYSTEM 用户身份运行的计划任务无法使用与我通过 AWS 会话管理器登录的 ContainerAdmin 用户相同的 AWS CLI 命令?我是否在某处错过了计划任务命令的选项?

提前致谢

【问题讨论】:

    标签: windows amazon-s3 amazon-ec2 amazon-ecs


    【解决方案1】:

    从缺乏活动来看,这似乎是一件不常见的事情,但我最终还是设法解决了这个问题!

    在运行容器的上下文中执行时,可以通过众所周知的地址访问 AWS 任务角色身份,其中包含短期访问令牌、访问密钥和密钥。

    我最终创建了计划任务脚本,以将此 URI(具有唯一的任务角色 guid 作为其中的一部分)作为启动参数,以便可以使用 URI 来获取这些详细信息,并创建一个临时 AWS基于每次运行的后台任务的 CLI 配置。然后,这允许任务作为后台进程运行,同时能够以容器的身份访问 AWS。

    不确定 Windows 容器是否特别奇怪,或者 ECS 如何将该身份传播到容器运行时,但这是我可以使用内置 AWS IAM 任务身份使其以非交互方式运行的唯一方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 2019-09-25
      • 2019-08-27
      • 2018-11-19
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      相关资源
      最近更新 更多