Вот мое лямбда-определение в облачной информации:
CommandTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: 'ns-poc-commands'
TopicName: 'ns-poc-commands'
SendMessage:
Type: AWS::Serverless::Function
Properties:
CodeUri: send_lambda
Handler: app.lambda_handler
Runtime: python3.7
FunctionName: send_message
MemorySize: 128
Timeout: 15
Policies:
- SNSPublishMessagePolicy:
TopicName: !Ref CommandTopic
Теперь я хочу, чтобы моя лямбда могла публиковать sh сообщения обратно в CommandTopi c, и для этого мне нужен доступ политика для topi c, которая позволяет это:
CommandTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: SnsTopicPolicy
Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sns:Publish
Resource: !Ref CommandTopic
Condition:
ArnEquals:
aws:SourceArn: !Ref SendMessage
- Sid: SnsRolePolicy
Effect: Allow
Principal:
AWS: !Ref SendMessageRole # -- 1
Action: sns:Publish
Resource: !Ref CommandTopic
Topics:
- Ref: CommandTopic
Поэтому мне нужно дать topi c директиву, позволяющую пользователю, назначенному моей лямбде, публиковать на нем сообщения.
Рассмотрим строку, на которую ссылается --1. Как это не работает, так как эта ссылка не доступна.
Так что я не знаю, как получить доступ к той роли, которая была создана ... Я бы предпочел не создавать эту роль самостоятельно, поскольку это только усложняет ситуацию и делает ее более трудоемкой ...