Я вижу два способа решения проблемы.
Один - используйте параметр cfnresponse.send(...responseData)
. Смотрите здесь: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html#w2ab1c17c25c14b9c11
Мой пример:
cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, responseData['ClientSecret'])
После того, как вы вернули данные из Lambda, вы можете ссылаться на них в шаблоне CFN с помощью! GetAtt:
Value: !GetAtt HapiUserPoolClientPostProc.ClientSecret
Два - я использую пользовательские ресурсы в качестве компонентов «постпроцессора», т.е. создаю ресурсы и после них обновляю их параметры с помощью пользовательского ресурса. Этот порядок будет гарантирован заданными входными параметрами лямбда-ресурса (зависимость).
Мой пример - подача URL-адресов обратного вызова Cognito AppClient из моего ElasticBeanstalk WebApp. Поэтому я создаю и UserPool AppClient, и веб-приложение EB, затем лямбда-настраиваемый ресурс постпроцессора берет URL-адрес из EB и обновляет CallbackURL в Cognito.
Надеюсь, это поможет.