thisチュートリアルに従っていて、Pythonを使用してテーブルを設定しましたが、golangではなくPythonでアイテムを取得できます。私は間違って何をしていますか?goantzがgoamz dynamodbで正しく動作するようにしました
私はこの(ほとんどコピーしてチュートリアルから貼り付ける)ように私のテーブルを作った:私は(Pythonで)このようなデータをロード
from __future__ import print_function # Python 2/3 compatibility
import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-west-2')
table = dynamodb.create_table(
TableName='Movies',
KeySchema=[
{
'AttributeName': 'year',
'KeyType': 'HASH' #Partition key
},
{
'AttributeName': 'title',
'KeyType': 'RANGE' #Sort key
}
],
AttributeDefinitions=[
{
'AttributeName': 'year',
'AttributeType': 'N'
},
{
'AttributeName': 'title',
'AttributeType': 'S'
},
],
ProvisionedThroughput={
'ReadCapacityUnits': 10,
'WriteCapacityUnits': 10
}
)
:
my_item = {"year": 1999, "title": "MyMovie", "info": {"Plot": "DynamoDB"}}
table.put_item(Item=my_item)
とするとき、私はデータを読みます(Pythonで):
response = table.get_item(Key={"year":1999,
"title":"MyMovie",
}
)
print response
私の出力は、次のとおりです。
{u'Item': {u'info': {u'Plot': u'DynamoDB'}, u'year': Decimal('1999'), u'title': u'MyMovie'}, 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'C8I2Q46K06T030INBCFN35RELVVV4KQNSO5AEMVJF66Q9ASUAAJG', 'HTTPHeaders': {'x-amzn-requestid': 'C8I2Q46K06T030INBCFN35RELVVV4KQNSO5AEMVJF66Q9ASUAAJG', 'content-length': '93', 'server': 'Server', 'connection': 'keep-alive', 'x-amz-crc32': '4025342458', 'date': 'Wed, 02 Nov 2016 18:20:14 GMT', 'content-type': 'application/x-amz-json-1.0'}}}
マイgolangコード:
package main
import (
"fmt"
"github.com/goamz/goamz/aws"
"github.com/goamz/goamz/dynamodb"
)
func main() {
access_key := "MyAccessKey"
secret_key := "MySecretKey"
auth := aws.Auth{AccessKey: access_key, SecretKey: secret_key}
server := &dynamodb.Server{Auth: auth, Region: aws.USWest2}
desc_ptr, err := server.DescribeTable("Movies")
if err != nil {
fmt.Println(err)
}
primary_key, err := desc_ptr.BuildPrimaryKey()
if err != nil {
fmt.Println(err)
}
table := server.NewTable("Movies", primary_key)
my_key := dynamodb.Key{HashKey: "1999", RangeKey: "MyMovie"}
result, err := table.GetItem(&my_key)
if err != nil {
fmt.Println(err)
}
fmt.Println("Printing Result")
for k, v := range(result) {
fmt.Println(k, *v)
}
}
結果で:
Printing Result
title {S title MyMovie [] }
year {N year 1999 [] }
これは私が提供title
とyear
以外のすべてのものが欠落しています。私は何が欠けていますか?
編集:
マイgo
バージョン:
go version go1.7.3 linux/amd64
私は私が持っているものgoamz
バージョン知りませんが、私は、マスターの先端にだということを非常に確信しています。
コードは私のために正常に動作します。私は印刷結果の表に他の属性を表示します。 – notionquest
@notionquest、ありがとうございます。私は確かに他の属性を取得していません。私はあなたと違うやり方をしているのだろう... – Akavall
GOとgoamzのバージョンを分かち合うことができますか? – notionquest