如何登入AWS Fargate

2024-03-20  本文已影响0人  ZeroWang

由于Fargate是aws ecs的托管容器,我们无法直接通过ssh 或者RDP登入排查问题.

但是aws也给我们提供了方法,通过aws ssm服务我们可以登入到Fargate的容器里面.

参考文献:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html

此教程只展示关键步骤,需要读者事先对AWS ECS有所了解. 请自行安装最新版本的 aws cli

第一步:为任务IAM角色添加SSM权限

您应该将以下策略添加到现有 ECS 任务 IAM 角色。这将授予 ECS 任务与 SSM 会话管理器服务连接的权限。

 {
   "Version": "2012-10-17",
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}

第二步:修改任务定义

注意 只有windows的容器才需要添加如下片段,linux可以跳过这一步. (参考文献中有关于initProcessEnabled 的修改 请自行决定)

"containerDefinitions": [
    {
      "entryPoint": [
        "powershell",
        "-Command"
      ],
      "command": [
        "ping -t localhost"
      ]
      ......
      ......

第三步:为您的service或者task启用 ECS Exec (1和2根据需求选择一种即可)

--enable-execute-command您可以通过在使用以下 AWS CLI 命令之一时指定标志来为您的服务和独立任务打开 ECS Exec 功能: create-service、update-service、start-task或run-task。

  1. 如果运行以下命令,将为新创建的service开启 ECS Exec 功能。有关创建服务的更多信息,请参阅create-service。
aws ecs create-service \
    --cluster cluster-name \
    --task-definition task-definition-name \
    --enable-execute-command \
    --service-name service-name \
    --desired-count 1
  1. 如果运行以下命令,直接创建一个开启了ECS Exec功能的task(测试首选)
aws ecs run-task \ 
--cluster <CLUSTER_NAME> \
--task-definition <TASK_DEFINATION> \
--network-configuration awsvpcConfiguration="{subnets=[<PUBLIC_SUBNET_ID>],securityGroups=[<SECURITY_GROUP_ID>],assignPublicIp=ENABLED}" \
--enable-execute-command \
--launch-type FARGATE \
--region <AWS_REGION>

第四步:验证

为任务打开 ECS Exec 后,您可以运行以下命令来确认该任务已准备好使用。如果lastStatus的属性ExecuteCommandAgent列为RUNNING且该enableExecuteCommand属性设置为true,则您的任务已准备就绪。

aws ecs describe-tasks \
    --cluster cluster-name \
    --tasks task-id

第五步: 安装 AWS CLI 的会话管理器插件 以及登入ECS Fargate

1.安装 AWS CLI 的会话管理器插件:

会话管理器插件是 AWS CLI 的附加组件,允许您连接到 EC2 实例或 AWS Fargate。

要在 Windows 上安装会话管理器插件,请下载并安装此可执行文件:

https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe

要在 macOS 和 Linux 上安装会话管理器插件,请使用 homebrew:

brew install --cask session-manager-plugin

2.登入:

linux:

aws ecs execute-command --cluster cluster-name --task task-id --container container-name --interactive --command "/bin/sh"

windows:

aws ecs execute-command --cluster cluster-name --task task-id --container container-name --interactive --command "powershell"
上一篇 下一篇

猜你喜欢

热点阅读