def _public_broadcast(topic: sns.Topic) -> Dict: return dict( Sid="PublicBroadcast", Effect=AWS.Allow, Principal=AWS.Principal("*"), Action=["SNS:Receive", "SNS:Subscribe"], Resource=topic.ref(), Condition=dict(StringEquals={"SNS:Protocol": ["lambda", "sqs"]}), )
def _owner_policy(topic: sns.Topic) -> Dict: return dict( Sid="OwnerPolicy", Effect=AWS.Allow, Principal=AWS.Principal("*"), Action=[ "SNS:Publish", "SNS:RemovePermission", "SNS:SetTopicAttributes", "SNS:DeleteTopic", "SNS:ListSubscriptionsByTopic", "SNS:GetTopicAttributes", "SNS:Receive", "SNS:AddPermission", "SNS:Subscribe", ], Resource=topic.ref(), Condition=dict(StringEquals={"AWS:SourceOwner": AccountId}), )