Я хочу, чтобы сценарий, запущенный на моем экземпляре EC2, указывал, когда он полезен для группы автомасштабирования. Для этого можно запустить следующие из моего сценария:Как я могу позволить экземпляру EC2 с ролью IAM устанавливать только работоспособность экземпляра для itselt?
aws --region $AWSREGION \
autoscaling \
set-instance-health \
--instance-id $(curl http://169.254.169.254/latest/meta-data/instance-id) \
--health-status Unhealthy
Перед выдачей каких-либо специальных разрешений на IAM роли, я получаю следующее сообщение об ошибке (как я ожидал):
An error occurred (AccessDenied) when calling the SetInstanceHealth operation: User: arn:aws:sts::ACCOUNTID:assumed-role/ROLENAME/i-INSTANCEID is not authorized to perform: autoscaling:SetInstanceHealth
Я мог бы добавить следующее заявление в мои IAM ролей, чтобы обойти эту проблему:
{
"Action": [
"autoscaling:SetInstanceHealth"
],
"Effect": "Allow",
"Resource": "*"
}
Но это не было бы разрешить экземпляры в этой роли, чтобы установить здоровье экземпляра всех случаи (при условии, что они знают идентификатор экземпляра)? Я бы не хотел, чтобы один скомпрометированный экземпляр мог вывести других из своих собственных ПГС.
Этот метод может работать: [Предоставление доступа к ресурсам S3 на основе имени роли] (http://stackoverflow.com/a/35720528/174777). Он также имеет метод для использования идентификатора экземпляра. Однако он жестко закодирован, а не является переменной. –