2016-11-19 2 views
0

Ich habe Probleme beim Zugriff auf aws-sdk-go, ich versuche, mit Dynamo DB Verbindung mit AWS-SDK-Go. Ich bin in der Lage, Verbindung zur Datenbank herstellen und einfügen Operation funktioniert gut, aber wenn ich versuche, Daten aus der Tabelle abrufen, bekomme ich "Panik-Laufzeitfehler ungültige Speicheradresse oder Nullzeiger Dereferenz Golang" Fehler. Bitte finden Sie den Code, den ich verwendet habe. Ich bin neu in beiden Technologien.Panic Laufzeitfehler beim Abrufen von Datensätzen aus DynamoDB mit Golang

package main 
import (
    "github.com/aws/aws-sdk-go/aws" 
    "github.com/aws/aws-sdk-go/aws/session" 
    "github.com/aws/aws-sdk-go/aws/credentials" 
    "github.com/aws/aws-sdk-go/service/dynamodb" 
    "github.com/user/dynamo_connect/data" 
    "github.com/user/insert_api/read" 
) 
import (
    "fmt" 
    "log" 
    "net/http" 
    "crypto/md5" 
    "encoding/hex" 
    "io" 
    "time" 
    "github.com/gorilla/mux" 
) 

func main() { 
    router := mux.NewRouter().StrictSlash(true) 
    router.HandleFunc("/get", GetCampaignRecord) 
    log.Fatal(http.ListenAndServe(":8080", router)) 
} 

func GetCampaignRecord(w http.ResponseWriter, r *http.Request) { 
    var testCredentials = credentials.NewStaticCredentials("AKIxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "") 
    sess, err := session.NewSession() 
    svc := dynamodb.New(sess, &aws.Config{ 
    Region: aws.String("ap-south-1"), 
    Credentials: testCredentials, 
    }) 

    resp, err := read.GetCampaignData(svc) 
    if err != nil { 
    fmt.Println("An error occurred while writing to the Employee table") 
    fmt.Println(err.Error()) 
    } 

    if resp != nil { 
    fmt.Println("An error occurred while writing to the Employee table") 
    fmt.Println(err.Error()) 
    } 
} 

Paket lesen

package read 
    import "github.com/aws/aws-sdk-go/service/dynamodb" 
    import "github.com/aws/aws-sdk-go/aws" 

    func GetCampaignData(svc *dynamodb.DynamoDB) (*dynamodb.BatchGetItemOutput, error) { 
     params := &dynamodb.BatchGetItemInput{ 
     RequestItems: map[string]*dynamodb.KeysAndAttributes{ 
      "employee": { 
       Keys: []map[string]*dynamodb.AttributeValue{ 
        { 
         "employee_id": { 
          S: aws.String("1"), 
         }, 
        }, 
       }, 
       ProjectionExpression: aws.String("employee_id, employee_name"), 
      }, 
     }, 
     ReturnConsumedCapacity: aws.String("TOTAL"), 
    } 

    return svc.BatchGetItem(params) 
    } 

Full Error Ich erhalte

http: panic serving 127.0.0.1:36034: runtime error: invalid memory address or nil pointer dereference goroutine 18 [running]: net/http.(*conn).serve.func1(0xc820102000) /usr/local/go/src/net/http/server.go:1389 +0xc1 panic(0x8919a0, 0xc82000a110) /usr/local/go/src/runtime/panic.go:443 +0x4e9 github.com/aws/aws-sdk-go/aws/session.(*Session).Copy(0x0, 0xc82012a020, 0x1, 0x1, 0x0) /home/MyUser/work/src/github.com/aws/aws-sdk-go/aws/session/session.go:365 +0x2a github.com/aws/aws-sdk-go/aws/session.(*Session).ClientConfig(0x0, 0x935410, 0x8, 0xc82012a020, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...) /home/MyUser/work/src/github.com/aws/aws-sdk-go/aws/session/session.go:378 +0x72 github.com/aws/aws-sdk-go/service/dynamodb.New(0x7f20477cd248, 0x0, 0xc82012a020, 0x1, 0x1, 0xc820112260) /home/MyUser/work/src/github.com/aws/aws-sdk-go/service/dynamodb/service.go:153 +0x78 main.GetCampaignRecord(0x7f20477cd058, 0xc820122000, 0xc82010e000) /home/MyUser/work/src/github.com/user/insert_api/insert_api.go:80 +0x329 net/http.HandlerFunc.ServeHTTP(0xa07d38, 0x7f20477cd058, 0xc820122000, 0xc82010e000) /usr/local/go/src/net/http/server.go:1618 +0x3a github.com/gorilla/mux.(*Router).ServeHTTP(0xc8200125a0, 0x7f20477cd058, 0xc820122000, 0xc82010e000) /home/MyUser/work/src/github.com/gorilla/mux/mux.go:114 +0x2a8 net/http.serverHandler.ServeHTTP(0xc82006e180, 0x7f20477cd058, 0xc820122000, 0xc82010e000) /usr/local/go/src/net/http/server.go:2081 +0x19e net/http.(*conn).serve(0xc820102000) /usr/local/go/src/net/http/server.go:1472 +0xf2e created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2137 +0x44e 2016/11/19 13:31:34 http: panic serving 127.0.0.1:36035: runtime error: invalid memory address or nil pointer dereference goroutine 5 [running]: net/http.(*conn).serve.func1(0xc82006e200) /usr/local/go/src/net/http/server.go:1389 +0xc1 panic(0x8919a0, 0xc82000a110) /usr/local/go/src/runtime/panic.go:443 +0x4e9 github.com/aws/aws-sdk-go/aws/session.(*Session).Copy(0x0, 0xc82012a038, 0x1, 0x1, 0x0) /home/MyUser/work/src/github.com/aws/aws-sdk-go/aws/session/session.go:365 +0x2a github.com/aws/aws-sdk-go/aws/session.(*Session).ClientConfig(0x0, 0x935410, 0x8, 0xc82012a038, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...) /home/MyUser/work/src/github.com/aws/aws-sdk-go/aws/session/session.go:378 +0x72 github.com/aws/aws-sdk-go/service/dynamodb.New(0x7f20477cd248, 0x0, 0xc82012a038, 0x1, 0x1, 0xc820112540) /home/MyUser/work/src/github.com/aws/aws-sdk-go/service/dynamodb/service.go:153 +0x78 main.GetCampaignRecord(0x7f20477cd058, 0xc8201224e0, 0xc8200d20e0) /home/MyUser/work/src/github.com/user/insert_api/insert_api.go:80 +0x329 net/http.HandlerFunc.ServeHTTP(0xa07d38, 0x7f20477cd058, 0xc8201224e0, 0xc8200d20e0) /usr/local/go/src/net/http/server.go:1618 +0x3a github.com/gorilla/mux.(*Router).ServeHTTP(0xc8200125a0, 0x7f20477cd058, 0xc8201224e0, 0xc8200d20e0) /home/MyUser/work/src/github.com/gorilla/mux/mux.go:114 +0x2a8 net/http.serverHandler.ServeHTTP(0xc82006e180, 0x7f20477cd058, 0xc8201224e0, 0xc8200d20e0) /usr/local/go/src/net/http/server.go:2081 +0x19e net/http.(*conn).serve(0xc82006e200) /usr/local/go/src/net/http/server.go:1472 +0xf2e created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2137 +0x44e 2016/11/19 13:31:34 http: panic serving 127.0.0.1:36036: runtime error: invalid memory address or nil pointer dereference goroutine 34 [running]: net/http.(*conn).serve.func1(0xc820114280) /usr/local/go/src/net/http/server.go:1389 +0xc1 panic(0x8919a0, 0xc82000a110) /usr/local/go/src/runtime/panic.go:443 +0x4e9 github.com/aws/aws-sdk-go/aws/session.(*Session).Copy(0x0, 0xc82012a058, 0x1, 0x1, 0x0) /home/MyUser/work/src/github.com/aws/aws-sdk-go/aws/session/session.go:365 +0x2a github.com/aws/aws-sdk-go/aws/session.(*Session).ClientConfig(0x0, 0x935410, 0x8, 0xc82012a058, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...) /home/MyUser/work/src/github.com/aws/aws-sdk-go/aws/session/session.go:378 +0x72 github.com/aws/aws-sdk-go/service/dynamodb.New(0x7f20477cd248, 0x0, 0xc82012a058, 0x1, 0x1, 0xc820112840) /home/MyUser/work/src/github.com/aws/aws-sdk-go/service/dynamodb/service.go:153 +0x78 main.GetCampaignRecord(0x7f20477cd058, 0xc820122820, 0xc82016c000) /home/MyUser/work/src/github.com/user/insert_api/insert_api.go:80 +0x329 net/http.HandlerFunc.ServeHTTP(0xa07d38, 0x7f20477cd058, 0xc820122820, 0xc82016c000) /usr/local/go/src/net/http/server.go:1618 +0x3a github.com/gorilla/mux.(*Router).ServeHTTP(0xc8200125a0, 0x7f20477cd058, 0xc820122820, 0xc82016c000) /home/MyUser/work/src/github.com/gorilla/mux/mux.go:114 +0x2a8 net/http.serverHandler.ServeHTTP(0xc82006e180, 0x7f20477cd058, 0xc820122820, 0xc82016c000) /usr/local/go/src/net/http/server.go:2081 +0x19e net/http.(*conn).serve(0xc820114280) /usr/local/go/src/net/http/server.go:1472 +0xf2e created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2137 +0x44e

Antwort

1

Ich habe durch den Code gegangen und es scheint mir, dass es ein Problem mit Ihrer Datenbank-Konnektivität ist. Sie versuchen, eine Verbindung zu einer anderen Region herzustellen. Also, bitte überprüfen Sie zuerst Ihre Region. Es ist dort in der URL von AWS-Konto Ihrer dynamodb. (Z. B. us-Ost-2). Sie können Ihre Region auch überprüfen oder konfigurieren, indem Sie diesen Befehl in das Terminal eingeben: aws configure. Dann werden Sie aufgefordert, Ihren Zugangsschlüssel, geheimen Schlüssel, Regionsnamen usw. einzugeben. Geben Sie hier alle Details ein. Das ist es. Prost.

+0

Dank @Geek_KK, änderte Region dieses Problem, tatsächlich einer meiner Kollegen versucht, auf diese AWS-Anmeldeinformationen zuzugreifen, und er versehentlich Region auf den Standardwert gesetzt und ich 'Ap-South-1' diese Region verwendet. Danke noch einmal – WebSwami

Verwandte Themen