Невозможно выполнить SQL-запрос в AWS RDS с помощью golang SDK - PullRequest
0 голосов
/ 14 октября 2019

Я новичок в AWS и впервые работаю над службой реляционных баз данных (RDS).

Я создал базу данных (MySQL) на RDS с консоли AWS. Сейчас я пытаюсь создать несколько таблиц в базе данных и просто вставить и извлечь из нее данные, используя 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 - ссылка . Я сомневаюсь, что эти API предназначены только для базы данных Aurora, а не для других. Пожалуйста, исправьте меня, если я ошибаюсь, и предложите правильные ссылки API.

1 Ответ

0 голосов
/ 15 октября 2019

Наконец, проблема решена.

На самом деле было несколько проблем с ним.

  1. Сначала я получал ошибку ниже -

    BadRequestException: Недопустимый кластер arn: arn: aws: rds: us-east-2: 9xxxxxxxx9: db: состояние базы данных-1код: 400, идентификатор запроса: a7744d7c-4f19-232f-8bf1-c25662968d55

это потому, что я использовал неправильный ARN. Вы можете найти ARN на этой странице - RDS -> database

enter image description here

и убедиться, что в ARN есть кластер, как показано ниже - arn: aws: rds: us-east-2: 9xxxxxxxx9: кластер : база данных-1

Это то, чего мне не хватало.

Тогда я получил ниже ошибку -

BadRequestException: HttpEndpoint не включен для кластера базы данных-2. См. https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html#data-api.troubleshooting код состояния: 400, идентификатор запроса: f6ceef3e-c43c-43a3-a5f2-aeafdedd9b71

Эта ошибка решается путем включения API данных. Подробности в ссылке выше.

...