Go'da DynamoDB GetItem (AWS SDK v2)

GetItem tek bir öğeyi tam birincil anahtarıyla okur. Go v2 için AWS SDK'da dynamodb.GetItemInput ile client.GetItem'i çağırırsınız; anahtar değerleri types paketinden türlü üyelerdir (dizeler için &types.AttributeValueMemberS{...}, sayılar için ...MemberN).

Code

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"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() {
	ctx := context.TODO()
	cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("us-east-1"))
	if err != nil {
		log.Fatalf("load config: %v", err)
	}
	client := dynamodb.NewFromConfig(cfg)

	out, err := client.GetItem(ctx, &dynamodb.GetItemInput{
		TableName: aws.String("Music"),
		Key: map[string]types.AttributeValue{
			"Artist":    &types.AttributeValueMemberS{Value: "Arturo Sandoval"},
			"SongTitle": &types.AttributeValueMemberS{Value: "Cubano Chant"},
		},
		ProjectionExpression: aws.String("#proj0, #proj1, #proj2, #proj3"),
		ExpressionAttributeNames: map[string]string{
			"#proj0": "Artist",
			"#proj1": "SongTitle",
			"#proj2": "AlbumTitle",
			"#proj3": "Year",
		},
	})
	if err != nil {
		log.Fatalf("get item: %v", err)
	}

	if out.Item == nil {
		fmt.Println("Item not found")
		return
	}
	fmt.Println(out.Item)
}

out.Item'ı düz bir Go struct'ına unmarshal etmek için github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue'den attributevalue.UnmarshalMap'i kullanın (dynamodbav struct etiketleriyle).

Açıklama

  • TableName — okunacak tablo; skaler giriş alanları işaretçidir, bu nedenle değişmez değerleri aws.String(...) ile sarmalayın.
  • Keyher birincil anahtar özniteliğini içermelidir: basit bir anahtar için yalnızca bölüm anahtarı ya da bileşik bir anahtar için bölüm ve sıralama anahtarı. GetItem eksik bir anahtarı kabul etmez.
  • ProjectionExpression — isteğe bağlı; hangi özniteliklerin geri döneceğini sınırlar (okuma maliyetini değil, bant genişliğini azaltır). Yansıtılan her öznitelik ExpressionAttributeNames aracılığıyla bir takma ad alır (#proj0#proj3); bu da Year gibi ayrılmış sözcükleri güvende tutar.
  • out.Item — hiçbir öğe eşleşmediğinde nil olur; kullanmadan önce her zaman kontrol edin.
  • Varsayılan olarak okumalar nihai tutarlıdır. Güçlü tutarlı bir okuma için ConsistentRead: aws.Bool(true) ayarlayın (2× RCU'ya mal olur, yalnızca temel tablo).

Görsel olarak yapın

Projeksiyonu veya koşullu bir okumayı elle mi oluşturuyorsunuz? İfadeyi bir araya getirmek ve tam ProjectionExpression / ExpressionAttributeNames değerlerini kopyalamak için ücretsiz DynamoDB Expression Builder'ı kullanın.

Tabloları bir grafik arayüzde (GUI) gezinmek ve GetItem çalıştırmak için — anahtar formu, sonuç ızgarası, üretilen kodu tek tıkla kopyalama — DynoTable'ı indirin.

İlgili örnekler

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.