У меня есть рабочий уровень Elastic Beanstalk Application, подключенный к SQS. Снова и снова я все время получаю сообщение об ошибке HTTP 400 в моем журнале, но я вообще не получаю сообщений об ошибках в журнале.Мой рабочий уровень возвращает 400 Error, CloudWatch Error?
[14/Apr/2014:18:03:26 +0000] "POST /customer-registered HTTP/1.1" 400 192 "-" "aws-sqsd"
Я не получаю какие-либо ошибки в error_log, единственная ошибка, я могу найти в моем журнале, заключается в следующем, который находится в /var/log/aws-sqsd/default.log:
2014-04-14T18:02:58Z error: AWS::CloudWatch::Errors::AccessDenied: User: arn:aws:sts::809571490243:assumed-role/aws-elasticbeanstalk-ec2-role/i-a00fffe2 is not authorized to perform: cloudwatch:PutMetricData
Если я иду в IAM пользователя (у меня только 1) Я следующая политика:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
Я не уверен, если они относятся к этому пользователю в сообщении об ошибке, когда он говорит: «эластичная beanstalk-ec2-role ", но я не могу найти другие профили пользователей. Я также не уверен, что это даже ошибка, которая вызывает какие-либо проблемы.
Вот код, который я пытаюсь запустить: http://pastebin.com/Tsnnht8b. Ничего особенного. Он работает нормально на локальной машине.
Мои сообщения очереди идет как {domain:"http://www.example.com"}
Любые идеи?
EDIT: Я смог решить CloudWatch: Ошибки: AccessDenied, добавив роль в ec2. Но это не решило проблему, но я все равно получаю HTTP 400 по всем запросам, даже если я упрощаю свой код настолько, насколько смогу, удаляя все дополнительные модули, кроме Flask, и просто пытаюсь напечатать «успех» и вернуть 200.
EDIT2: Мне удалось решить эту проблему, похоже, что-то связано с json = request.get_json()
или request.json
. Как только я использую эту линию, я получаю следующую информацию в моем журнале:
[Tue Apr 15 06:01:12 2014] [notice] caught SIGTERM, shutting down
[Tue Apr 15 06:01:13 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Apr 15 06:01:13 2014] [notice] Digest: generating secret for digest authentication ...
[Tue Apr 15 06:01:13 2014] [notice] Digest: done
[Tue Apr 15 06:01:13 2014] [notice] Apache/2.2.25 (Unix) DAV/2 mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations
Это происходит даже если я даже не используя информацию, полученый в запросе. Например, если я делаю следующее:
domain = request.json
domain = "http://staticdomain.com"
...
Я все еще получаю сообщение об ошибке. Поэтому, похоже, он участвует в запросе POST json, который SQS отправляет на мой EC2.
Для AccessDenied вам необходимо изменить свою роль, чтобы позволить cloudwatch PutMetricAccess. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.roles.aeb.html#AWSHowTo.iam.policies.actions.worker –