TransWikia.com

Amazon EventBridge Policies for AWS Services as targets using CF/SAM

Stack Overflow Asked by cloud jockey on December 20, 2021

I’m using AWS CloudFormation to setup an EventBridge Bus + Rules + Targets (say SNS). For SNS as a target, per the doc at https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions, I need to apply resource policies outside of CloudFormation and I don’t think CF supports this yet?
For CW Logs Group as a target, Im using the aws logs put-resource-policy to set this up in a script. Is there a better way to automate this?

2 Answers

Here is a snippet from my 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"
  }
}

Answered by cloud jockey on December 20, 2021

The link you've provided refers to setting up permissions for SNS topic. Setting such permissions is supported by the CloudFormation by means of AWS::SNS::TopicPolicy.

However, you also state that you want to set resource-based policies on the CloudWatch Logs (aws logs put-resource-policy). If this is the case, then you are correct and it is not supported in CloudFormation.

You would have to use custom resource based on a lambda function to add such functionality to your templates.

Answered by Marcin on December 20, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP