gpt4 book ai didi

amazon-web-services - 无法使用Golang SDK在AWS RDS上运行SQL查询

转载 作者:行者123 更新时间:2023-12-01 22:08:58 24 4
gpt4 key购买 nike

我是AWS的新手,并且是第一次从事关系数据库服务(RDS)。

我已经从AWS控制台在RDS上创建了一个数据库(MySQL)。现在,我试图在数据库中创建一些表,并使用 Golang SDK 简单地从数据库中插入和检索数据。我已经在Golang中创建了以下代码来运行SQL查询,但是出现以下错误。

package main

import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/rdsdataservice"
)

func main() {

// Initialize a session in us-east-2
sess, _ := session.NewSession(&aws.Config{
Region: aws.String("us-east-2")},
)


// Sending a request using the ExecuteStatementRequest method.

SQLStatement := `CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);`

// Create RDS service client
rdsdataservice_client := rdsdataservice.New(sess)

req, resp := rdsdataservice_client.ExecuteStatementRequest(&rdsdataservice.ExecuteStatementInput{
Database: aws.String("database-1"),
ResourceArn: aws.String("arn:aws:rds:us-east-2:9xxxxxxxx9:db:database-1"),
SecretArn: aws.String("arn:aws:secretsmanager:us-east-2:9xxxxxxxx9:secret:RDS_Credentials-IZOXv0"),
Sql: aws.String(SQLStatement),
})

err1 := req.Send()
if err1 == nil { // resp is now filled
fmt.Println("Response:", resp)
} else {
fmt.Println("error:", err1)
}

}

我遇到错误-
BadRequestException: Invalid cluster arn: arn:aws:rds:us-east-2:9xxxxxxxx9:db:database-1
status code: 400, request id: a7744d7c-4f19-232f-8bf1-c25662968d55

如果有人可以帮助我找到问题,我将不胜感激。

我正在使用以下API引用文档- link。我怀疑这些API仅适用于Aurora数据库,而不适用于其他API。如果我写错了,请纠正我,并提出正确的API引用。

最佳答案

终于,问题解决了。

实际上,它存在多个问题。

  • 首先,我遇到了以下错误-

    BadRequestException: Invalid cluster arn: arn:aws:rds:us-east-2:9xxxxxxxx9:db:database-1 status code: 400, request id: a7744d7c-4f19-232f-8bf1-c25662968d55


  • 这是因为我使用了错误的ResourceArn。请按照以下步骤查找ResourceArn-

    RDS->数据库

    enter image description here

    并确保ARN中具有群集,如下所示-

    arn:aws:rds:us-east-2:9xxxxxxxx9: 群集:数据库-1

    这就是我所缺少的。
  • 然后我得到以下错误-

  • BadRequestException: HttpEndpoint is not enabled for cluster database-2. Please refer to https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html#data-api.troubleshooting status code: 400, request id: f6ceef3e-c43c-43a3-a5f2-aeafdedd9b71



    通过启用数据API可以解决此错误。详细信息在上面的链接中。

    编辑

    如何获取SecretARN

    为了获得SecretARN,您必须使用 Secret Manager创建一个 secret。 AWS Secrets Manager是一项AWS服务,可让您更轻松地管理 secret 。 secret 可以是数据库凭据,密码,第三方API key ,甚至是任意文本。您可以使用Secrets Manager控制台,Secrets Manager命令行界面(CLI)或Secrets Manager API和SDK集中存储和控制对这些 secret 的访问。

    按照此 link创建RDS的 secret 。首先,您可以禁用 secret的自动旋转。

    关于amazon-web-services - 无法使用Golang SDK在AWS RDS上运行SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376371/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com