Я занимаюсь разработкой приложения на основе 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, он не работает.Я получаю сообщение об ошибке - Доступ запрещен.
Но если я создаю сеанс в той же функции, в которой я его использую, он работает.
Любые указатели?