Amazon web services 使用CF/SAM将AWS服务作为目标的Amazon EventBridge策略

Amazon web services 使用CF/SAM将AWS服务作为目标的Amazon EventBridge策略,amazon-web-services,amazon-cloudformation,aws-event-bridge,Amazon Web Services,Amazon Cloudformation,Aws Event Bridge,我正在使用AWS CloudFormation设置EventBridge总线+规则+目标(比如SNS)。对于作为目标的SNS,根据位于的文档,我需要在CloudFormation之外应用资源策略,我认为CF还不支持这一点? 对于作为目标的CW Logs组,Im使用aws Logs put resource policy(aws日志放置资源策略)在脚本中进行设置。有没有更好的方法来自动执行此操作?您提供的链接指的是为SNS主题设置权限。CloudFormation通过支持设置此类权限 但是,您还声

我正在使用AWS CloudFormation设置EventBridge总线+规则+目标(比如SNS)。对于作为目标的SNS,根据位于的文档,我需要在CloudFormation之外应用资源策略,我认为CF还不支持这一点?
对于作为目标的CW Logs组,Im使用aws Logs put resource policy(aws日志放置资源策略)在脚本中进行设置。有没有更好的方法来自动执行此操作?

您提供的链接指的是为SNS主题设置权限。CloudFormation通过支持设置此类权限

但是,您还声明要在CloudWatch日志上设置基于资源的策略(
aws日志放置资源策略
)。如果是这种情况,那么您是正确的,CloudFormation中不支持它


您必须使用基于lambda函数将此类功能添加到模板中。

以下是我的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"
  }
}
{
“MyDevQueue”:{
“财产”:{
“队列名称”:“我的开发人员队列”,
“ReceiveMessageWaitTimeSeconds”:20,
“标签”:[
{
“密钥”:“env”,
“值”:“开发”
}
],
“可视性超时”:300
},
“类型”:“AWS::SQS::队列”
},
“MyDevQueuePolicy”:{
“财产”:{
“政策文件”:{
“声明”:[
{
“行动”:[
“SQS:SendMessage”
],
“条件”:{
“ArnEquals”:{
“aws:SourceArn”:“arn:aws:events:::规则/我的开发队列/我的开发队列”
}
},
“效果”:“允许”,
“委托人”:{
“服务”:[
“events.amazonaws.com”
]
},
“资源”:[
{
“Fn::GetAtt”:[
“MyDevQueue”,
“阿恩”
]
}
]
}
]
},
“队列”:[
“MyDevQueue”
]
},
“类型”:“AWS::SQS::QueuePolicy”
}
}

重新表述这个问题,我指的是两个目标(SNS和CW日志组)。我将检查链接。@cloudjockey如果没有自定义资源,则无法从CloudFormation为CW日志组设置基于资源的策略:-(