Экземпляр EC2 не отображается в AWS Systems Manager

Я пытаюсь создать экземпляр EC2 (Amazon Linux, поэтому мне не нужно настраивать агент SSM, поскольку он должен быть настроен автоматически) в частной подсети, и я хочу иметь возможность подключаться к нему по SSH . Согласно этому сообщению я должен использовать для этого AWS Systems Manager.Раньше я довольно много работал с codestar / beanstalk, но теперь просто хочу иметь возможность создавать и удалять все вручную через интерфейс командной строки AWS для учебных целей.

Вот команды, с которыми я могу нормально работать (экземпляр ec2 успешно создан с моей ролью)

aws iam create-role --role-name ec2-role --assume-role-policy-document file://roles/ec2-role.json
aws iam attach-role-policy --role-name ec2-role --policy-arn "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
aws iam create-instance-profile --instance-profile-name ssm-instance-profile-for-ec2-instances
aws iam add-role-to-instance-profile --instance-profile-name ssm-instance-profile-for-ec2-instances --role-name ec2-role

// Creating the EC2 instance
aws ec2 run-instances --image-id ami-0db9040eb3ab74509 --count 1 --instance-type t2.micro --key-name key-pair-for-instance1 --subnet-id <my_valid_subnet_id> --iam-instance-profile Name=ssm-instance-profile-for-ec2-instances

Я взял части этих команд из этого сообщения .

Мой json-файл для роли ec2:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "Service": "ec2.amazonaws.com"},
      "Action": "sts:AssumeRole"
    }
  ]
}

К сожалению, этот экземпляр не отображается в SSM (System Manager):

aws ssm describe-instance-information
{
    "InstanceInformationList": []
}

Я следил за основной документацией по SSM и насколько мне известно из приведенной ниже страницы все, что вам нужно, это политика AmazonSSMManagedInstanceCore: https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-instance-profile .html

Веб-консоль до сих пор не помогала, согласно на этой странице она рассматривает роли и профили экземпляров как одно и то же.

Что мне здесь не хватает, чтобы использовать команду aws ssm для запуска сеанса ssh?

2
задан 18 April 2021 в 02:26
2 ответа

Для работы SSM необходим доступ к конечным точкам ssm и ssmmessages aws. Если ваш экземпляр ec2 не имеет доступа к интернету (частная подсеть без natgateway), вам нужно включить vpc частные конечные точки для этих служб.

https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html

3
ответ дан 24 April 2021 в 00:06

Мне удалось решить проблему, следуя этой картинке из видео AWS Networking Fundamentals: enter image description here

Что мне нужно было сделать:

  • Добавить интернет шлюз в VPC
  • Добавить NAT шлюз в публичную подсеть и выделить для него эластичный IP
  • Настроить две таблицы маршрутизации, одну для публичной подсети с маршрутом к интернет шлюзу и одну для частных таблиц с маршрутом к NAT шлюзу.
  • Создайте группу безопасности и добавьте в нее экземпляр EC2. Группы безопасности по умолчанию имеют исходящий доступ 0.0.0.0/0, и с этого момента я смог получить доступ к экземпляру и начать сеанс SSH в диспетчере сеансов в AWS Systems Manager. Забавно, что для этого не требуется правило для разрешения входящего SSH трафика на порту 22. enter image description here

Я постараюсь поделиться командами, как только приведу в порядок свои записи. Спасибо @Taylor и @Tim за предложения.

1
ответ дан 24 April 2021 в 00:06

Теги

Похожие вопросы