为 Amazon Aurora 启用 DATA Api

Sil*_*ium 4 go amazon-web-services amazon-rds amazon-aurora

我们有一个正在运行的 AWS Aurora 集群(不是无服务器版本)。我已经通过 Querious(SQL 的 GUI)成功从外部连接到数据库当使用 Golang RDS SDK 时,我收到以下错误消息:

未对集群 Sample-db-cluster 启用 HttpEndpoint。请参阅https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html#data-api.troubleshooting

此链接告诉我激活数据 API。

问题:此链接以及迄今为止我发现的任何其他内容始终与无服务器 Aurora 相关,并且我找不到任何方法为我的 Aurora 实例启用此功能。

我还尝试通过 CLI 启用 DATA Api:

aws rds modify-db-cluster --db-cluster-identifier my-cluster-id --enable-http-endpoint --region us-east-1
Run Code Online (Sandbox Code Playgroud)

这不起作用!

下面是我连接到 Aurora 的 go 代码:

package main

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

func main() {

    sess:= getSession()
    SQLStatement := `SELECT * FROM testTable`
    fmt.Println("SQLStatement",SQLStatement)
    rdsdataservice_client := rdsdataservice.New(sess)
    req, resp := rdsdataservice_client.ExecuteStatementRequest(&rdsdataservice.ExecuteStatementInput{
        Database:    aws.String("my-database-name"),
        ResourceArn: aws.String("arn:aws:rds:us-east-1:XXXXXXXXXXX:cluster:XXXXXXXX"),
        SecretArn:   aws.String("arn:aws:secretsmanager:us-east-1:XXXXXXXXXXX:secret:XXXXXXXX"),
        Sql:         aws.String(SQLStatement),
    })

    err1 := req.Send()
    if err1 == nil {
        fmt.Println("Response:", resp)
    } else {
        fmt.Println("error:", err1) // Produces the mentioned error
    }
}


func getSession() *session.Session {

    var sess *session.Session
    var err error
    if os.Getenv("aws_access_key_id") != "" && os.Getenv("aws_secret_access_key") != "" && os.Getenv("aws_region") != "" { // explicit credentials
        creds := credentials.NewStaticCredentials(os.Getenv("aws_access_key_id"), os.Getenv("aws_secret_access_key"), "")
        sess, err = session.NewSession(&aws.Config{
            Region:      aws.String("us-east-1"),
            Credentials: creds,
        })
        if err != nil {
            log.Println("Error cred")
        }
    } else {
        sess = session.Must(session.NewSession()) // credentials are passed implicit by role lambda-news-parser-executor (defined in IAM)
    }
    return sess
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 5

我找不到任何方法为我的 Aurora 实例启用此功能

这是因为它不受支持。数据 API 仅适用于 Serverless Aurora。