将服务添加到SNS策略

2024-04-24 00:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pythonbot3在多个帐户中自动创建cloudtrail。我的问题是create_trail不会自动创建sns主题来关联trail。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授予服务权限:

^{pr2}$

如果我在这里添加帐户,create_trail调用仍然失败:

调用CreateTail操作时出错(InsufficientSnsTopicPolicyException):SNS主题不存在或主题策略不正确!在

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


Tags: 权限主题create帐户策略botoustrail
2条回答

不知道这是哪一个版本的boto,但它是有可能做的更高版本今天。在

conn = boto3.Session()  # initialize you Session
sns = conn.client('sns')
lam = conn.client('lambda')

# add permission to lambda that allows sns service to invoke it
lam.add_permission(FunctionName="your_lambda_name",
                   StatementId=str(uuid.uuid4()),
                   Action="lambda:InvokeFunction",
                   Principal="sns.amazonaws.com")

# subscribe lambda to sns, to receive notifications
lambda_arn = "arn:aws:lambda:us-east-1:123456789012:function:your_lambda_name"
topic_arn = "arn:aws:sns:us-east-1:123456789012:your-sns-topic-name"

resp = sns.subscribe(TopicArn=topic_arn, Protocol='Lambda', Endpoint=lambda_arn)

相关问题 更多 >