Я создал EventBus через Cloud Formation, и у него есть несколько правил, которые должны отправлять сообщение в SQS. Правила, созданные через консоль для устранения неполадок, работают нормально, но не те, которые созданы через CF. Я подозреваю, что это может быть связано с доступом, поскольку AWS сообщает в консоли следующее:
Примечание. При использовании консоли EventBridge EventBridge автоматически настроит соответствующие разрешения для выбранных целей. Если вы используете AWS CLI, SDK или CloudFormation, вам необходимо настроить соответствующие разрешения.
У меня также есть одно правило, которое не работает, но когда я добавляю в одно и то же правило ту же цель SQS, что и цель 2, обе цели работают как положено. Когда я его удаляю, оригинал от CF перестает работать. Я не вижу никаких изменений в IAM при добавлении правила/цели в консоль.
Я попытался создать роль службы для EventBridge в IAM — я подозревал, что это решит проблему, но этого не произошло.
Моя роль IAM создана в Cloud Formation (yaml)
EventBridgeServiceRole:
Type: AWS::IAM::Role
Properties:
RoleName: EventBridgeServiceRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
Action: sts:AssumeRole
Effect: Allow
Principal:
Service: events.amazonaws.com
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonEventBridgeFullAccess
- arn:aws:iam::aws:policy/AmazonSQSFullAccess
- arn:aws:iam::aws:policy/AWSLambda_FullAccess
- arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
Какие-либо предложения?
Чтобы правило вашего EventBus могло доставляться в SQS, вам необходимо настроить политику на основе ресурсов в очереди SQS . Дополнительную информацию об этом можно найти в разделе документации EventBridge Использование политик на основе ресурсов для Amazon EventBridge — разрешения Amazon SQS
Например, ваша политика очереди может выглядеть так:
EventBridgeToToSqsPolicy:
Type: AWS::SQS::QueuePolicy
Properties:
PolicyDocument:
Statement:
- Effect: Allow
Principal:
Service: events.amazonaws.com
Action: SQS:SendMessage
Resource: !GetAtt SQSQueueResource.Arn
Queues:
- Ref: SQSQueueResource
Предполагается, что у вас нет существующей политики для очереди, и в этом случае вам придется объединить ее с существующими инструкциями.