Поместите правило CloudWatch Events с помощью интерфейса командной строки

Я хочу останавливать свой экземпляр EC2 каждый день с помощью CloudWatch Events. На консоли работает без проблем. Путем реверс-инжиниринга конфигурации, которую я проделал с консолью, серия эквивалентных ей команд выглядит следующим образом:

aws events put-rule \
  --name stop-ec2-instance \
  --schedule-expression 'cron(0 13 * * ? *)' \
  --description "Stop EC2 instance everyday" \
  --role-arn arn:aws:iam::012345678901:role/AWS_Events_Actions_Execution

aws events put-targets \
  --rule stop-ec2-instance \
  --targets "[{ \
    \"Arn\": \"arn:aws:automation:ap-northeast-1:012345678901:action/EC2StopInstance/EC2StopInstance_stop-ec2-instance\", \
    \"Id\": \"EC2StopInstance_stop-ec2-instance\", \
    \"Input\": \"\\\"arn:aws:ec2:ap-northeast-1:012345678901:instance/i-01234567\\\"\" \
  }]"

.

Однако это не работает, потому что я получаю следующую ошибку при первой команде:

A client error (ValidationException) occurred when calling the PutRule operation: Provided role 'arn:aws:iam::012345678901:role/AWS_Events_Actions_Execution' cannot be assumed by principal 'events.amazonaws.com'.

.

Как установить правило Amazon CloudWatch Events с помощью интерфейса командной строки?


person Akihiro HARAI    schedule 29.01.2016    source источник
comment
Он должен работать без роли.   -  person Lubo Sach    schedule 29.01.2016
comment
@LuboSach Выполнение не удастся, если я удалю --role-arn из первой команды. Кроме того, если для выполнения задачи не требуется никакой роли, какая роль требуется для разрешений AWS на шаге 2: настройка сведений о правилах на консоли?   -  person Akihiro HARAI    schedule 30.01.2016
comment
Надеемся, что участники форума AWS смогут помочь - forum.aws.amazon.com   -  person Lubo Sach    schedule 02.02.2016


Ответы (1)


Созданная вами роль IAM (т.е. arn:aws:iam::012345678901:role/AWS_Events_Actions_Execution) не позволяет CloudWatch Events принимать ее на себя.

Перейдите к роли в консоли IAM и на вкладке «Отношения доверия» убедитесь, что ваш Statement блок включает events.amazonaws.com в качестве принятой службы, которая может взять на себя роль (также известное как действие sts:AssumeRole). Например:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
person rowanu    schedule 18.05.2016