Политики Amazon EventBridge для сервисов AWS в качестве целей с использованием CF/SAM
Я использую AWS CloudFormation для настройки шины EventBridge + правила + цели (например, SNS). Для SNS в качестве цели, согласно документу на https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html, мне нужно применить политики ресурсов вне CloudFormation, и я не думаю, что CF это еще поддерживает? Для группы журналов CW в качестве цели я используюaws logs put-resource-policy
чтобы настроить это в скрипте. Есть ли лучший способ автоматизировать это?
2 ответа
Вот отрывок из моего SAM:
{
"MyDevQueue": {
"Properties": {
"QueueName": "my-dev-queue",
"ReceiveMessageWaitTimeSeconds": 20,
"Tags": [
{
"Key": "env",
"Value": "dev"
}
],
"VisibilityTimeout": 300
},
"Type": "AWS::SQS::Queue"
},
"MyDevQueuePolicy": {
"Properties": {
"PolicyDocument": {
"Statement": [
{
"Action": [
"SQS:SendMessage"
],
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:events:<region>:<AccountID>:rule/my-dev-queue/my-dev-queue"
}
},
"Effect": "Allow",
"Principal": {
"Service": [
"events.amazonaws.com"
]
},
"Resource": [
{
"Fn::GetAtt": [
"MyDevQueue",
"Arn"
]
}
]
}
]
},
"Queues": [
"MyDevQueue"
]
},
"Type": "AWS::SQS::QueuePolicy"
}
}
Ссылка, которую вы предоставили, относится к настройке разрешений для темы SNS. Установка таких разрешений поддерживается CloudFormation с помощью AWS::SNS::TopicPolicy.
Однако вы также заявляете, что хотите установить политики на основе ресурсов для журналов CloudWatch (aws logs put-resource-policy
). Если это так, то вы правы, и это не поддерживается в CloudFormation.
Вам нужно будет использовать пользовательский ресурс на основе лямбда-функции, чтобы добавить такую функциональность в свои шаблоны.