Go言語学習24日目:DynamoDBに接続できた!?ListTablesでGoとクラウドがつながる感動の瞬間。

Go言語学習24日目

GoとAWSの連携学習もついに本番フェーズ突入!

今日は実際に DynamoDBクライアントがちゃんと動くかを確認するために、 ListTables というAPIを使って、テーブル一覧を取得してみました!

昨日まではコチラ。

kunio-ud-all.com

コツコツ、子育て中に無理のない範囲で、ほぼ毎日30分でいいから何か学習をするで続けております。


今日の目標

  • ListTables で DynamoDB に接続確認
  • 正しく認証されているかチェック
  • クライアント初期化コードを関数化して再利用しやすくする

1. DynamoDBクライアントの初期化(関数化)

package main

import (
    "context"
    "log"

    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/dynamodb"
)

func initDynamoClient() *dynamodb.Client {
    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
        log.Fatalf("設定の読み込みに失敗: %v", err)
    }

    return dynamodb.NewFromConfig(cfg)
}

💡 初期化コードを関数にまとめておくと、今後のCRUD操作でも便利!


2. ListTables を実行してみる

package main

import (
    "context"
    "fmt"
    "log"
)

func main() {
    svc := initDynamoClient()

    result, err := svc.ListTables(context.TODO(), &dynamodb.ListTablesInput{})
    if err != nil {
        log.Fatalf("テーブル一覧取得に失敗しました: %v", err)
    }

    fmt.Println("✅ 接続成功!DynamoDBテーブル一覧:")
    for _, tableName := range result.TableNames {
        fmt.Println("- " + tableName)
    }
}

出力例:

接続成功!DynamoDBテーブル一覧: - Users - Orders


3. トラブルが起きたら…

❗接続できないときに確認すべきポイント
  • ~/.aws/credentials に正しいアクセスキーがあるか
  • ~/.aws/config にリージョン指定があるか(例:ap-northeast-1)
  • IAMポリシーに dynamodb:ListTables 権限が含まれているか
  • ネットワーク接続 or AWS CLI で aws dynamodb list-tables が成功するか

今日のまとめ

✅ Go言語24日目の学習ポイント
  • svc.ListTables() を使って、DynamoDBとの接続確認ができた
  • AWS SDK v2 のクライアント初期化コードを関数化して整理できた
  • 認証・接続設定の理解が一段深まった

明日は書き込みを勉強する日になっているので、pythonのboto3でいう、put_item()を覚えたい。


以上となります。引き続きよろしくお願いいたします。