これまで準備してきた環境を使って、今日は DynamoDBにデータを登録する初めての1件 を書き込んでみました!
今までの学習記録はコチラ。 kunio-ud-all.com
1日30分のみ頑張るをテーマにGo言語xAWSができるようになる為に進めてきました。
DB接続できると、何かを作る際に幅が広がりますね。
今日の目標
PutItem
API を使って、DynamoDBに1件データを登録- 主キー(
UserID
)を含む構造を作成 - エラーハンドリングも忘れずに!
🔧 DynamoDB 側のテーブル準備(再確認)
テーブル名 | 主キー(パーティションキー) | ソートキー |
---|---|---|
Go-Practice-Users |
UserID (文字列型) |
sortKey (文字列型) |
1. 必要パッケージのimport
import ( "context" "fmt" "log" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/dynamodb" "github.com/aws/aws-sdk-go-v2/service/dynamodb/types" )
2. クライアント初期化関数(再掲)
func initDynamoClient() *dynamodb.Client { cfg, err := config.LoadDefaultConfig(context.TODO()) if err != nil { log.Fatalf("設定の読み込みに失敗: %v", err) } return dynamodb.NewFromConfig(cfg) }
3. PutItem
でデータを登録する処理!
func putUser(svc *dynamodb.Client, userID, name string, age int) { input := &dynamodb.PutItemInput{ TableName: aws.String("Go-Practice-Users"), Item: map[string]types.AttributeValue{ "UserID": &types.AttributeValueMemberS{Value: userID}, "sortKey": &types.AttributeValueMemberS{Value: "User"}, "Name": &types.AttributeValueMemberS{Value: name}, "Age": &types.AttributeValueMemberN{Value: fmt.Sprintf("%d", age)}, }, } _, err := svc.PutItem(context.TODO(), input) if err != nil { log.Fatalf("データ登録に失敗しました: %v", err) } fmt.Println("✅ データ登録完了!") } func awsString(s string) *string { return &s }
4. main関数で呼び出し!
func main() { svc := initDynamoClient() // テスト用データ putUser(svc, "u123", "たろう", 30) }
実行結果
$ go run main.go ✅ データ登録完了!
AWS コンソールに値が書き込まれていました。 やったね。
今日の学びポイント
Go言語25日目の到達ポイントまとめ
PutItem
でクラウドにデータを「書き込む」処理が実装できた!- GoからDynamoDBにアクセスする流れがつかめた
- 型が多くて一見難しく見えるけど、パターンがわかれば使いやすい
types.AttributeValueMemberS/N
の使い分けが大事!
以上となります。引き続きよろしくお願いいたします。