Я пишу несколько функций AWS Lambda, используя Go.Общая функциональность разделена на модули, например, у меня есть модуль (M1), который обеспечивает реализацию интерфейса с резервным хранилищем в терминах DynamoDB (поэтому имеет зависимость от AWS Go SDK).
В одномЛямбда-функция (F1) Я импортирую M1, поэтому граф зависимостей для пути кода выглядит следующим образом:
F1 -> M1 -> SDK -> dynamodb.DynamoDB.PutItem
Будучи AWS, мне нужно написать соответствующую политику IAM, чтобы разрешить F1 выполнять PutItem
.
В данный момент я вручную идентифицирую вызовы AWS SDK и исправляю все ошибки, зарегистрированные в CloudWatch.
Моя цель - определить, есть ли способ получить набор инструментов Go, чтобы определить, какиефункции вызываются из данного модуля / import.
До сих пор я мог попробовать несколько вариантов ниже:
# this doesn't return much as most of my code lives within directories
# under main
go mod why "github.com/aws/aws-sdk-go"
# github.com/aws/aws-sdk-go
(main module does not need package github.com/aws/aws-sdk-go)
# this only identifies a single F1 {-> ...} -> SDK invocation
# but not all of them
grep -r github.com/aws/aws-sdk-go --include="*.go" \
| cut -f2 -d'"' \
| sort -u \
| xargs go mod why
Я не окунулся в источник go build
иgo mod why
, но до сих пор я не вижу способа убедить "go mod Why" в понимании простых расширений / регулярных выражений glob и соответствующих точек вызова.Я также не продвинулся на втором уровне deps (то есть M1-> SDK).