amazon-web-services - DynamoDB创建Session的常用函数

标签 amazon-web-services go amazon-dynamodb

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

我有多个调用 DynamoDB API 的函数。

目前我正在创建 session 的每个函数中。

我想的不是这个,如果我可以创建一个可以创建 session 的通用方法。这个 session 可以被其他函数使用。

代码片段如下-

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)

但是当我使用这个 session 进行 DynamoDb 调用时,它不起作用。 我收到一个错误 - 访问被拒绝。

但如果我在使用它的同一函数中创建 session ,它就可以工作。

有什么建议吗?

最佳答案

代码似乎没问题。请确保 GetDynamoDbConnection 中的函数调用正在获取适当的参数并返回预期的数据。

此处,错误Access Denied 可能暗示 Role ARN 可能未在 stscreds.NewCredentials 函数中正确配置。因此,请检查 RoleARN 字符串是否具有适当的值。

关于amazon-web-services - DynamoDB创建Session的常用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058058/

相关文章:

amazon-web-services - 仅更新某些属性时如何使用 DynamoDBStreamEvent 触发 Lambda

amazon-dynamodb - 在 dynamoDB 中更新或创建嵌套元素

java - 在运行时更改 GSI 投影类型

java - 无法使用 SMTP 使用 JavaMail 和 Amazon SES 发送邮件

javascript - 如何构建云连接器?

amazon-web-services - 如何更改 AWS Elastic Beanstalk 中的应用程序名称

pointers - 定义结构时何时使用指针

amazon-web-services - AWS IAM 是否支持允许 AWS 组织内的所有账户的策略?

go - Javascript 对 Golang 的 bool 转换

Golang 上下文。上下文传播