amazon-web-services - 为 Amazon Aurora 启用数据 API

标签 amazon-web-services go 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

这没有用!

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

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
}

最佳答案

I could not find any way to enable this for my Aurora instance

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

关于amazon-web-services - 为 Amazon Aurora 启用数据 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65030986/

相关文章:

amazon-web-services - 如何使用多个索引查询 AWS DynamoDB?

java - AWS EC2 Amazon Linux 2 如何在启动时运行 Java

for-loop - Go 中的捕获闭包(用于循环变量)

go - 替代哈希来处理 Go 中的混合类型

java - Springboot 1.5.9版本无法连接mysql RDS

java - 将 Amazon RDS 与只读副本结合使用时,如何处理最终的不一致问题?

sockets - 如何配置 EC2 安全组以允许通过公共(public) IP 地址进行环回?

multithreading - 与 goroutine 并行运行代码的首选语法是什么?

amazon-web-services - Elastic Beanstalk CLI,如何使用RDS实例创建环境?

amazon-web-services - AWS ECS 生产 Docker 部署