DynamoDBlocal에서 DynamoDB를 일단 만지기
개요
DynamoDB는 AWS의 관리형 서비스 중 하나입니다.
DynamoDB는 개발을 위해 손 PC에서 작동할 수 있습니다.
이 기사에서는 다음 방법을 소개합니다.
DynamoDBLocal을 손 PC에 넣기
다음 URL에서 DynamoDBLocal을 다운로드합니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마 젠 dy 나도 db / ㅁ st / ゔ ぇぺぺ ぐ い / Dy 이나 DB ㄉ인가 l. HTML
아카이브를 압축 해제한 후 다음 명령을 사용하여 DynamoDB 로컬을 시작합니다.
$ java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
http://localhost:8000/shell/
에 접속하면 Javascript로 조작할 수도 있습니다.aws-cli로 작업하기
aws-cli로 조작할 때의 포인트는 다음과 같습니다.
--endpoint-url
에 http://localhost:8000
를 지정한다 --profile
또는 AWS_PROFILE
설정이 필요합니다 테이블 만들기
$ aws dynamodb create-table --table-name Persons \
--attribute-definitions AttributeName=Id,AttributeType=N \
--key-schema AttributeName=Id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \
--endpoint-url http://localhost:8000
테이블 목록 보기
$ aws dynamodb list-tables --endpoint-url http://localhost:8000
테이블에 데이터 삽입
$ aws dynamodb put-item --table-name Persons --item '{"Id":{"N":"1"},"Name":{"S":"Jack"}}' --endpoint-url http://localhost:8000
데이터 얻기
$ aws dynamodb get-item --table-name Persons --key '{"Id":{"N":"1"}}' --endpoint-url http://localhost:8000
데이터 스캔
$ aws dynamodb scan --table-name Persons --endpoint-url http://localhost:8000
Go 언어로 조작하기
더미 Credentials를 준비하십시오.
로컬 DynamoDB에 연결할 때도 Credential을 설정해야 하므로 다음과 같이 더미를 설정해 둡니다.
# ~/.aws/credentials
[dummy]
aws_access_key_id = dummy
aws_secret_access_key = dummy
SDK 도입
go get -u github.com/aws/aws-sdk-go
일단 참조하는 코드
aws-cli로 작성한 Persons 테이블로부터 데이터를 취득하는 코드입니다.
// main.go
package main
import (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/dynamodb"
"fmt"
"github.com/aws/aws-sdk-go/aws/credentials"
)
func main() {
dynamoSession, err := session.NewSession(&aws.Config{
Region: aws.String("ap-northeast-1"),
Endpoint: aws.String("http://localhost:8000"),
Credentials: credentials.NewStaticCredentials("dummy", "dummy", "dummy"),
})
if err != nil {
panic(err)
}
db := dynamodb.New(dynamoSession)
res, err := db.GetItem(&dynamodb.GetItemInput{
TableName: aws.String("Persons"),
Key: map[string]*dynamodb.AttributeValue{
"Id": {
N: aws.String("1"),
},
},
AttributesToGet: []*string{
aws.String("Name"),
},
ConsistentRead: aws.Bool(true),
ReturnConsumedCapacity: aws.String("NONE"),
})
if err != nil {
panic(err)
}
fmt.Println(*res.Item["Name"])
}
guregu/dynamo 사용
ORM과 같습니다.
json 모듈처럼 구조체에 매핑합니다.
$ go get github.com/guregu/dynamo
// main.go
package main
import (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/guregu/dynamo"
)
type Person struct {
ID int `dynamo:"Id"`
Name string `dynamo:"Name"`
}
func main() {
dynamoSession, err := session.NewSession(&aws.Config{
Region: aws.String("ap-northeast-1"),
Endpoint: aws.String("http://localhost:8000"),
Credentials: credentials.NewStaticCredentials("dummy", "dummy", "dummy"),
})
if err != nil {
panic(err)
}
db := dynamo.New(dynamoSession)
table := db.Table("Persons")
var ret Person
err = table.Get("Id", 1).One(&ret)
if err != nil {
panic(err)
}
println(ret.Name)
}
Reference
이 문제에 관하여(DynamoDBlocal에서 DynamoDB를 일단 만지기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uchiko/items/b419d512f08279ab0f9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)