Amazon web services 为DynamoDB创建会话的通用函数

Amazon web services 为DynamoDB创建会话的通用函数,amazon-web-services,go,amazon-dynamodb,Amazon Web Services,Go,Amazon Dynamodb,我正在开发一个基于AWS Lambda的应用程序,它使用go SDK 我有多个函数调用dynamodbapi 目前在我创建会话的每个函数中 相反,我在想,如果我能创建一个通用的方法来创建一个会话。此会话可由其他功能使用 代码片段如下所示- func GetDynamoDbConnection(customerId string) *dynamodb.DynamoDB { roleArn := constants.IAM_ROLE_ARN_PREFIX + constants.AWS_A

我正在开发一个基于AWS Lambda的应用程序,它使用go SDK

我有多个函数调用dynamodbapi

目前在我创建会话的每个函数中

相反,我在想,如果我能创建一个通用的方法来创建一个会话。此会话可由其他功能使用

代码片段如下所示-

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)
我调用这个函数如下-

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调用时,它不起作用。 我收到一个错误-访问被拒绝

但是,如果我在使用会话的同一个函数中创建会话,它就会工作


有什么提示吗?

代码似乎很好。请确保GetDynamoDbConnection内的函数调用正在获取apt参数并返回预期数据


此处,拒绝访问的错误可能提示在stscreds.NewCredentials函数中可能未正确配置角色ARN。因此,请检查RoleARN字符串是否具有适当的值。

我更正了角色ARN,它开始正常工作。谢谢@supret