Политики 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.

Вам нужно будет использовать пользовательский ресурс на основе лямбда-функции, чтобы добавить такую ​​функциональность в свои шаблоны.

Другие вопросы по тегам