AWS SSM description-instance-information не находит мои экземпляры - PullRequest
0 голосов
/ 26 мая 2018

Я использую boto3 для управления экземплярами EC2 на AWS из среды python, используя сервисы ec2 и ssm.Я создал учетную запись IAM, которая имеет доступ к политикам AmazonSSMFullAccess и AmazonEC2FullAccess.

ec2 = boto3.client(
    'ec2',
    region_name='eu-west-1',
    aws_access_key_id='…',
    aws_secret_access_key='…/…+…'
)

ssm = boto3.client(
    'ssm',
    region_name='eu-west-1',
    aws_access_key_id='…',
    aws_secret_access_key='…/…+…'
)

Я запустил:

ec2.describe_instances()['Reservations']

, который возвратил список всех моих экземпляров.Но когда я запускаю:

ssm.describe_instance_information()

, я получаю пустой список, хотя у меня есть хотя бы один экземпляр, работающий на AWS Linux AMI (ami-ca0135b3), и шесть других на последних Ubuntu AMI.Они все в ЕС-западе-1 (Ирландия).На них должен быть предварительно установлен агент SSM: (https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-ssm-agent.html)

Я зашел в экземпляр AWS Linux и попытался получить журналы для ssm, используя:

sudo tail -f /var/log/amazon/ssm/amazon-ssm-agent.log

Но ничего не происходит, когда язапустить мой код Python. Время от времени отображается последовательность сообщений:

HealthCheck reporting agent health.
error when calling AWS APIs. error details - NoCredentialProviders: no valid providers in chain. Deprecated.

Я также попытался выполнить команду через веб-интерфейс, выбрал «AWS-RunRemoteScript», но ни один экземпляр не показан ниже.

Моя цель - запустить:

ssm.send_command(
        DocumentName="AWS-RunShellScript",
        Parameters={'commands': [command]},
        InstanceIds=[instance_id],
    )

Но это дает мне следующую ошибку, вероятно, из-за предыдущей проблемы.

botocore.errorfactory.InvalidInstanceId: An error occurred (InvalidInstanceId) when calling the SendCommand operation

1 Ответ

0 голосов
/ 27 мая 2018

Агент предварительно установлен, но для экземпляра (а не только для вашего пользователя IAM) по-прежнему требуется соответствующая роль для связи с администратором системы.В частности, это шаг Настройка доступа к системному диспетчеру .

По умолчанию системный менеджер не имеет разрешения на выполнение действий с вашими экземплярами.Вы должны предоставить доступ с помощью профиля экземпляра IAM.Профиль экземпляра - это контейнер, который передает информацию о роли IAM в экземпляр Amazon EC2 при запуске.

Вам следует ознакомиться с полным руководством по настройке и убедиться, что все необходимые роли настроены надлежащим образом.

...