Я пытаюсь создать экземпляр 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?
Для работы SSM необходим доступ к конечным точкам ssm и ssmmessages aws. Если ваш экземпляр ec2 не имеет доступа к интернету (частная подсеть без natgateway), вам нужно включить vpc частные конечные точки для этих служб.
https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html
Мне удалось решить проблему, следуя этой картинке из видео AWS Networking Fundamentals:
Что мне нужно было сделать:
Я постараюсь поделиться командами, как только приведу в порядок свои записи. Спасибо @Taylor и @Tim за предложения.