You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言如何通过AWS SDK获取指定DynamoDB表的ARN

Go 获取DynamoDB指定表名对应ARN的实现

直接使用AWS SDK for Go调用DynamoDB原生接口即可获取,不需要手动拼接ARN字符串,避免因区域、账号ID获取错误导致ARN不匹配。

基于AWS SDK for Go v2(官方当前推荐版本)的实现

  • 先安装对应依赖包
go get github.com/aws/aws-sdk-go-v2/aws
go get github.com/aws/aws-sdk-go-v2/config
go get github.com/aws/aws-sdk-go-v2/service/dynamodb
  • 核心代码片段
package main

import (
	"context"
	"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"
)

// GetDynamoDBTableArn 传入表名,返回对应表的完整ARN
func GetDynamoDBTableArn(ctx context.Context, tableName string) (string, error) {
	// 加载默认AWS配置,自动从环境变量、本地凭证文件、云主机实例角色等位置读取凭证和区域配置
	cfg, err := config.LoadDefaultConfig(ctx)
	if err != nil {
		return "", err
	}

	// 初始化DynamoDB客户端
	client := dynamodb.NewFromConfig(cfg)

	// 调用DescribeTable接口拉取表元信息
	resp, err := client.DescribeTable(ctx, &dynamodb.DescribeTableInput{
		TableName: aws.String(tableName),
	})
	if err != nil {
		return "", err
	}

	// 返回结果直接携带官方生成的完整ARN,直接取值即可
	return *resp.Table.TableArn, nil
}

func main() {
	tableName := "my_new_table"
	arn, err := GetDynamoDBTableArn(context.Background(), tableName)
	if err != nil {
		log.Fatalf("获取表ARN失败: %v", err)
	}
	log.Printf("表 %s 的ARN为: %s", tableName, arn)
}

说明

  • 该实现不需要手动传入区域、账号ID等参数,SDK会自动匹配当前凭证对应的环境信息,返回的ARN和AWS控制台展示的内容完全一致,你示例中的arn:aws:dynamodb:eu-central-1:111122223333:table/my_new_table可以直接通过该方法获取。
  • 调用该方法需要你的凭证拥有dynamodb:DescribeTable权限,和常规DynamoDB操作的权限配置逻辑一致,不需要额外特殊权限。
  • 如果你还在使用旧版SDK v1,逻辑完全一致:初始化DynamoDB客户端后调用DescribeTable接口,从返回的Table.TableArn字段取值即可。
  • 不推荐手动按照ARN格式拼接字符串:虽然DynamoDB表ARN格式固定,但手动拼接需要额外获取当前账号ID、操作区域,多了冗余步骤还容易因为参数配置错误出问题,直接取SDK返回的官方字段是最稳妥的方案。

内容的提问来源于stack exchange,提问作者hmdevno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:19:18