Общая функция для создания сеансов для DynamoDB - PullRequest
0 голосов
/ 08 марта 2019

Я занимаюсь разработкой приложения на основе AWS Lambda, в котором используется go SDK.

У меня есть несколько функций, которые выполняют вызовы API-интерфейсов DynamoDB.

В настоящее время в каждой функции я создаю сеанс.

Вместо этого я думаю, смогу ли я создать общий метод, который может создать сеанс.Этот сеанс может использоваться другими функциями.

Фрагмент кода, как показано ниже -

func GetDynamoDbConnection(customerId string) *dynamodb.DynamoDB {

    roleArn := constants.IAM_ROLE_ARN_PREFIX + constants.AWS_ACCOUNT_ID + ":" + constants.IAM_ROLE_STR + constants.IAM_CUST_ROLE_PREFIX + "-" + customerId
    sess := session.Must(session.NewSession())
    creds := stscreds.NewCredentials(sess, roleArn)
    dynamoDbSession := dynamodb.New(sess, &aws.Config{Credentials: creds})

    return dynamoDbSession

}

Я вызываю эту функцию, как показано ниже -

dbInfo := utils.GetDynamoDbConnection(customerId)

Но когда яиспользуйте этот сеанс для вызовов DynamoDb, он не работает.Я получаю сообщение об ошибке - Доступ запрещен.

Но если я создаю сеанс в той же функции, в которой я его использую, он работает.

Любые указатели?

1 Ответ

1 голос
/ 08 марта 2019

Код вроде в порядке.Убедитесь, что вызовы функций внутри GetDynamoDbConnection получают параметры apt и возвращают ожидаемые данные.

Здесь ошибка Доступ запрещен , вероятно, указывает на то, что Роль ARN может быть неправильно настроена в функции stscreds.NewCredentials .Итак, проверьте, имеет ли строка RoleARN соответствующее значение.

...