Closed2
GoでDynamoDBから値を取得する
ChatGPTでやり方色々聞いてたら割と良いサンプルコード出てきたのでここにメモしておく。
package main
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"
)
func main() {
// AWS 設定をロード
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
log.Fatal(err)
}
// DynamoDB サービスクライアントを作成
client := dynamodb.NewFromConfig(cfg)
// Query 操作の入力パラメータを作成
input := &dynamodb.QueryInput{
TableName: "YourTableName", // テーブル名を指定
KeyConditionExpression: "YourPartitionKey = :partitionKey", // パーティションキーの条件式を指定
ExpressionAttributeValues: map[string]types.AttributeValue{
":partitionKey": &types.AttributeValueMemberS{
Value: "YourPartitionKeyValue", // パーティションキーの値を指定
},
},
}
// Query 操作を実行
result, err := client.Query(context.TODO(), input)
if err != nil {
log.Fatal(err)
}
// 結果を処理
if len(result.Items) == 0 {
fmt.Println("データが見つかりませんでした")
return
}
// 取得したアイテムを処理
for _, item := range result.Items {
// 必要な属性の値を取得
partitionKeyValue, ok := item["YourPartitionKey"]
if !ok {
fmt.Println("パーティションキーの値が取得できません")
continue
}
partitionKeyStringValue, ok := partitionKeyValue.(*types.AttributeValueMemberS)
if !ok {
fmt.Println("パーティションキーの値が文字列型ではありません")
continue
}
sortKeyValue, ok := item["YourSortKey"]
if !ok {
fmt.Println("ソートキーの値が取得できません")
continue
}
sortKeyNumberValue, ok := sortKeyValue.(*types.AttributeValueMemberN)
if !ok {
fmt.Println("ソートキーの値が数値型ではありません")
continue
}
fmt.Println("パーティションキー:", partitionKeyStringValue.Value)
fmt.Println("ソートキー:", sortKeyNumberValue.Value)
}
}
このスクラップは2023/05/26にクローズされました