Python 将服务添加到SNS策略

Python 将服务添加到SNS策略,python,amazon-web-services,aws-sdk,boto3,Python,Amazon Web Services,Aws Sdk,Boto3,我正在使用python boto3在多个帐户中自动创建cloudtrail。我的问题是create_trail不会自动创建与trail关联的sns主题。create_trail希望sns主题已经存在 我可以使用boto创建sns主题,但我似乎无法为该主题设置允许cloudtrail发布到该主题的策略 这是控制台中正确策略的外观: { "Sid": "AWSCloudTrailSNSPolicy20150319", "Effect": "Allow", "Principal": {

我正在使用python boto3在多个帐户中自动创建cloudtrail。我的问题是create_trail不会自动创建与trail关联的sns主题。create_trail希望sns主题已经存在

我可以使用boto创建sns主题,但我似乎无法为该主题设置允许cloudtrail发布到该主题的策略

这是控制台中正确策略的外观:

{
  "Sid": "AWSCloudTrailSNSPolicy20150319",
  "Effect": "Allow",
  "Principal": {
    "Service": "cloudtrail.amazonaws.com"
  },
  "Action": "SNS:Publish",
  "Resource": "arn:aws:sns:us-east-1:123456678912:us-east-1-trail"
}
似乎没有办法通过boto向服务授予权限:

client.add_permission(
    TopicArn=arn,
    Label='AWSCloudTrailSNSPolicy20150319',
    AWSAccountId=[
        '12345678912'
    ],
    ActionName=[
        'Publish',
    ]
)
如果我在此处添加帐户,则create_trail调用仍会失败,原因是:

调用CreateTrail操作时发生错误(InsufficientSnsTopicPolicyException):SNS主题不存在或主题策略不正确


在创建trail或sns主题时,有没有一种方法可以只授予服务权限或自动设置权限?

也许可以使用SetTopicAttributes()。
本主题讨论允许cloudwatch事件发布到SNS主题-

当我通过Terraform将Cloud Trail与SNS一起使用时,收到了完全相同的错误

问题在于,在Terraform中,
sns\u主题\u名称
是:

sns_topic_name-(可选)指定亚马逊sns主题的名称 为日志文件传递通知定义

当我输入SNS主题名称时,它给了我提到的错误

当我把它改为ARN时,它起了作用