首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用go在dynamodb中创建项

使用go在dynamodb中创建项
EN

Stack Overflow用户
提问于 2018-03-01 03:10:38
回答 1查看 2.8K关注 0票数 3

我使用以下代码在dynamodb表中创建一个项:

代码语言:javascript
复制
package main

import (
    "fmt"

    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/aws/endpoints"
    "github.com/aws/aws-sdk-go-v2/aws/external"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb/dynamodbattribute"
)

type Record struct {
    ID     string
    URLs   []string
}


// Using the SDK's default configuration, loading additional config
// and credentials values from the environment variables, shared
// credentials, and shared configuration files
var cfg, err = external.LoadDefaultAWSConfig()

func createNewExtraction() error {
    svc := dynamodb.New(cfg)

    r := Record{
        ID:   "ABC123",
        URLs: []string{
            "https://example.com/first/link",
            "https://example.com/second/url",
        },
    }
    item, err := dynamodbattribute.MarshalMap(r)
    if err != nil {
        panic(fmt.Sprintf("failed to DynamoDB marshal Record, %v", err))
    }

    req := svc.PutItemRequest(&dynamodb.PutItemInput{
        TableName: aws.String("test"), Item: item })

    _, err = req.Send(); if err != nil {
        return err
    }
    return nil
}

func main() {
    if len(cfg.Region) > 0 {
        // Set Region to us-east-1 as default.
        cfg.Region = endpoints.UsEast1RegionID
    }

    err = createNewExtraction(); if err != nil {
        panic(err.Error())
    }
}

但它返回的是错误:

代码语言:javascript
复制
panic: ValidationException: One or more parameter values were invalid: Missing the key id in the item
    status code: 400, request id: F3VCQSGRIG5GM5PEJE7T5M4CEVVV4KQNSO5AEMVJF66Q9ASUAAJG

goroutine 1 [running]:
main.main()
    /Users/user/go/src/Test2/test.go:56 +0x102
exit status 2

我已经尝试在我的记录结构中声明id、ID和Id,但它不起作用。

更奇怪的是:我在官方文档中获得了这段代码(我正在更新以使用aws-sdk-go-v2)。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 08:41:09

我不知道golang,但我在nodejs中也遇到过类似的问题。

确保您放入表中的item包含“分区键”和区分大小写的sorting key

编辑:

·这是一个golang问题,当DynamoDB列名为小写时,无法正确构建item

·考虑重新定义Record结构(详情请参阅this link ):

代码语言:javascript
复制
type Record struct{
    ID     string `json:"id"`
    URLs   []string `json:"url"`
}

其中idurl是DynamoDB表中的列名。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49036888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档