У меня есть две базы кода.Один определяет сервис (Сервис A), который включает в себя лямбда-AWS, который запрашивает таблицу динамо-базы данных.
Другой определяет агрегирующий шлюз API, который должен вызывать лямбда-запросы нескольких служб.
Импорт шлюза APIлямбда, определенная в службе A с использованием перекрестной ссылки, и создает для нее лямбда-интеграцию:
const queryTrackFunction = lambda.Function.import(this, 'TrackQueryServiceQueryTrackFunction', {
functionArn: cdk.Fn.importValue('TrackQueryServiceStack:QueryTrackFunctionArn')
})
const customerApi = new api.RestApi(this, 'CustomerAPI')
const tracks = customerApi.root.addResource('tracks')
tracks.addMethod('GET', new api.LambdaIntegration(queryTrackFunction))
Когда вызывается API, он завершается сбоем, предположительно потому, что службе apigateway не были предоставлены разрешения на вызов.
В проекте aws-cdk для Service AIдобавить следующее:
queryTracksFunction.grantInvoke(new ServicePrincipal('apigateway.amazonaws.com'))
Когда я пытаюсь развернуть службу, я получаю эту ошибку:
Ошибка: невозможно использовать токены в идентификаторе конструкции: Invoke {"Service": ["$ {Token [TOKEN.139]}"]}