0

我想在 ecs 任务(ec2)上执行 django 命令($python manage.py foo)。我不想使用 ssh 因为生产服务器。我想使用 AWS Systems Manager 运行命令或会话管理器。

我以以下页面为例将安装命令添加到 Dockerfile。(https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html

我的 docker 镜像是 debian,因为它是 python 3.6 镜像

但是,当我用cfn检查ssm配置方法时,因为需要激活码,所以没有激活项。(https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_SSM.html

我以为我会手动创建一个管理器并生成一个激活码,但是在 30 分钟后我发现代码过期的默认设置。在这种情况下,您必须在每次执行 docker build 时生成一个激活码。

我正在尝试以这种方式设计操作。

  1. 我可以在除 SSM 和 ssh 之外的 ecs 任务(您的 docker 映像)上执行 shell 命令吗?

  2. 用cfn生成ssm,你能用Ref等获得激活码吗?

  3. 有没有办法使激活码期限无限期或不必要?

  4. 我可以让我的 docker 映像创建的 ecs 的 ec2 实例显示在管理器上吗?谢谢

4

1 回答 1

2

您可以查看 aws 系统管理器 - 会话管理器。您可以通过 Web 控制台或 cli 连接到任何实例,而无需在实例上打开任何端口。访问由 IAM 控制。 https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html

如果您想直接连接到您的 docker 容器,您可以使用会话管理器中的本地解决方案。 https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html

如果您想通过 ssh 连接到 ec2 实例,您也可以使用会话管理器来执行此操作,而无需打开 ssh(22) 端口。https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html

我还创建了一个简洁的 SSH ProxyCommand 脚本,在与目标实例建立连接期间临时将您的公共 ssh 密钥添加到目标实例。

AWS SSM SSH ProxyComand -> https://gist.github.com/qoomon/fcf2c85194c55aee34b78ddcaa9e83a1

于 2019-08-25T06:06:16.110 回答