我正在开发一个使用 go SDK 的基于 AWS Lambda 的应用程序。
我有多个调用 DynamoDB API 的函数。
目前在每个函数中我都在创建会话。
而不是这个我在想,如果我可以创建一个可以创建会话的通用方法。这个会话可以被其他函数使用。
代码片段如下 -
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 调用时,它不起作用。我收到一个错误 - 访问被拒绝。
但是,如果我在使用它的同一函数中创建会话,它就可以工作。
任何指针?
Qyouu
相关分类