首页/新闻资讯/正文详情

使用 AWS SDK for Go V2 调用 Amazon Bedrock:基础模型列表实战指南

发布时间:2026/9/25 10:04:33 来源:云帆数科 栏目:资讯中心
使用 AWS SDK for Go V2 调用 Amazon Bedrock:基础模型列表实战指南
示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载本文基于aws-doc-sdk-examples仓库中 gov2/bedrock 的官方代码示例系统讲解如何用 AWS SDK for Go V2 初始化 Amazon Bedrock 客户端、调用ListFoundationModels列出账户可用基础模型并通过真实源码、运行命令与测试方式帮助你快速掌握生成式 AI 场景下的 Bedrock Go 开发起点。一、概览Amazon Bedrock 与 SDK for Go V2Amazon Bedrock 是 AWS 提供的托管式生成式 AI 服务让你能够通过统一 API 使用多家厂商的**基础模型Foundation ModelFM**来构建和扩展生成式 AI 应用。仓库中的 gov2/bedrock/README.md 明确说明该示例模块展示了如何使用AWS SDK for Go V2与 Amazon Bedrock 交互。从仓库结构看本模块围绕基础模型这一个核心动作展开代码组织为三个相互配合的部分目录/文件作用hello/hello.go入门示例创建 Bedrock 客户端并列出可用基础模型actions/foundation_model.go将ListFoundationModels封装为可复用的单动作Single Actionstubs/foundation_model_stubs.go单元测试用的 AWS 调用桩Stub不发真实请求actions/foundation_model_test.go基于桩驱动的单元测试模块依赖关系记录在 gov2/bedrock/go.mod 中其中核心依赖为github.com/aws/aws-sdk-go-v2/service/bedrock v1.16.2与github.com/aws/aws-sdk-go-v2/config v1.27.33Go 版本要求为1.21。二、前置条件账户、凭据与模型访问权限根据 gov2/bedrock/README.md 与 gov2/README.md 中的要求运行本模块代码前需要满足AWS 账户必须拥有 AWS 账户并按 AWS 共享配置与凭据参考指南配置好默认凭据~/.aws/credentials和默认区域~/.aws/config。Go 环境需要 Go 1.18 或更高版本本模块 go.mod 声明为 1.21。模型访问权限关键且容易踩坑⚠️ 使用前必须先为账户申请request目标模型的访问权限。如果尚未申请就通过 API 或控制台调用该模型会收到错误提示。详细流程见 Amazon Bedrock 用户指南的模型访问Model access章节。IAM 最小权限官方强烈建议遵循最小权限原则Grant least privilege只授予完成当前任务所需的最少权限对ListFoundationModels而言通常只需bedrock:ListFoundationModels权限。三、Hello Amazon Bedrock第一个可运行示例仓库在 hello/hello.go 中提供了完整的入门示例它只做一件事加载 SDK 配置 → 创建 Bedrock 客户端 → 列出基础模型。完整源码如下package main import ( context fmt github.com/aws/aws-sdk-go-v2/config github.com/aws/aws-sdk-go-v2/service/bedrock ) const region us-east-1 // main uses the AWS SDK for Go (v2) to create an Amazon Bedrock client and // list the available foundation models in your account and the chosen region. // This example uses the default settings specified in your shared credentials // and config files. func main() { ctx : context.Background() sdkConfig, err : config.LoadDefaultConfig(ctx, config.WithRegion(region)) if err ! nil { fmt.Println(Couldnt load default configuration. Have you set up your AWS account?) fmt.Println(err) return } bedrockClient : bedrock.NewFromConfig(sdkConfig) result, err : bedrockClient.ListFoundationModels(ctx, bedrock.ListFoundationModelsInput{}) if err ! nil { fmt.Printf(Couldnt list foundation models. Heres why: %v\n, err) return } if len(result.ModelSummaries) 0 { fmt.Println(There are no foundation models.) } for _, modelSummary : range result.ModelSummaries { fmt.Println(*modelSummary.ModelId) } }逐段解读客户端初始化与调用链区域硬编码与可覆盖示例用config.WithRegion(region)显式指定us-east-1。这说明 Bedrock 的区域行为需要特别留意——README 提醒过本代码并未在每个 AWS 区域测试不同区域可用的基础模型列表可能不同。默认配置加载config.LoadDefaultConfig会按 SDK 标准顺序解析共享配置文件、环境变量、IAM 角色等来源与前置条件中的默认凭据与区域配置直接对应。请求构造ListFoundationModels的请求体是空的bedrock.ListFoundationModelsInput{}即不附带任何过滤条件返回账户在指定区域下全部可用基础模型的摘要列表ModelSummaries。响应遍历每个modelSummary.ModelId是该模型的唯一标识符例如 Anthropic Claude、Amazon Titan 等模型的 ID后续调用推理接口时需要用到。运行方式在 gov2/bedrock 目录下执行go run ./hello运行成功后会按行打印可用的基础模型 ID如果账户尚未申请任何模型访问权限输出为空或返回错误此时应先回到前置条件的模型访问权限步骤。四、单动作封装ListFoundationModels 的复用写法入门示例把逻辑直接写在main中而可复用的姿势是将其封装为独立的动作Action。仓库在 actions/foundation_model.go 中定义了FoundationModelWrapper// FoundationModelWrapper encapsulates Amazon Bedrock actions used in the examples. // It contains a Bedrock service client that is used to perform foundation model actions. type FoundationModelWrapper struct { BedrockClient *bedrock.Client } // ListPolicies lists Bedrock foundation models that you can use. func (wrapper FoundationModelWrapper) ListFoundationModels(ctx context.Context) ([]types.FoundationModelSummary, error) { var models []types.FoundationModelSummary result, err : wrapper.BedrockClient.ListFoundationModels(ctx, bedrock.ListFoundationModelsInput{}) if err ! nil { log.Printf(Couldnt list foundation models. Heres why: %v\n, err) } else { models result.ModelSummaries } return models, err }设计要点结构体封装客户端FoundationModelWrapper持有*bedrock.Client后续若要扩展其他 Bedrock 动作如模型推理、自定义模型管理等只需在同一结构体上增加方法即可符合仓库中单服务动作的组织惯例。动作方法返回领域类型方法返回[]types.FoundationModelSummary而非原始响应对象调用方无需关心 HTTP 细节直接遍历模型 ID 即可。错误处理约定出错时记录日志并同时返回err由上层调用方决定如何处理hello 示例中是打印后退出。五、测试无需真实 AWS 请求的桩驱动单元测试README 提醒运行测试可能产生 AWS 费用但好消息是本模块的单元测试通过桩stub模拟 AWS 响应不会发出真实请求也就不会产生任何费用。桩的定义stubs/foundation_model_stubs.go 用testtools.Stub定义了预期的操作名、输入与输出func StubListFoundationModels(raiseErr *testtools.StubError) testtools.Stub { var modelSummaries []types.FoundationModelSummary return testtools.Stub{ OperationName: ListFoundationModels, Input: bedrock.ListFoundationModelsInput{}, Output: bedrock.ListFoundationModelsOutput{ModelSummaries: modelSummaries}, Error: raiseErr, } }测试的执行路径actions/foundation_model_test.go 通过testtools.RunScenarioTests驱动测试流程SetupDataAndStubs先注入桩RunSubTest再真正调用FoundationModelWrapper.ListFoundationModels并打印模型 ID。其底层机制见 gov2/testtools/awsm_stubber.goAwsmStubber利用 AWS SDK for Go V2 的中间件middleware机制在Serialize步骤之前插入拦截函数比对实际调用与预期操作的名称和输入参数匹配后直接短路返回桩输出——请求从未到达 AWS。若桩上挂有StubError且ContinueAfter为 false则测试到此停止用于验证错误处理分支。运行测试在 gov2/bedrock 目录下执行单元测试go test ./...若需运行会真实创建/销毁 AWS 资源并可能产生费用的集成测试则需加上integration标签详见 gov2/README.mdgo test -tagsintegration ./...此外gov2 目录还提供了批量运行脚本 run_all_tests.shLinux/macOS与 run_all_tests.batWindows以及一键代码格式化/静态检查脚本 lint_all_go.sh、lint_all_go.bat。六、其他场景的运行入口cmd runnerREADME 提到所有场景scenario都可以通过统一的cmdrunner 启动。若模块中包含更复杂的多步场景可在目录下执行go run ./cmd -h该命令会列出可用场景列表及各场景的参数帮助部分示例需要命令行参数用-h查看具体说明。本 Bedrock 模块目前以入门示例和单动作示例为主cmdrunner 是为后续场景扩展预留的统一入口其运行约定见 gov2/README.md。七、运行注意事项与成本控制最后回顾 gov2/bedrock/README.md 中的四条重要提醒它们同样适用于任何基于本模块的二次开发费用运行示例代码和测试都可能向你的 AWS 账户计费请关注 AWS 定价与免费套餐。最小权限IAM 策略尽量只授予当前任务所需的最小权限避免使用过宽的权限范围。区域差异本代码未在每个 AWS 区域测试Bedrock 并非所有区域都提供相同的模型能力跨区域部署时请确认目标区域的模型可用性。模型访问使用任何模型前必须先申请访问权限否则调用会失败。八、更多学习资源gov2/bedrock/actions/foundation_model.go单动作封装源码gov2/bedrock/actions/foundation_model_test.go单元测试源码gov2/testtools/awsm_stubber.go桩驱动的测试基础设施gov2/README.mdSDK for Go V2 全部示例的通用前置条件、运行与测试约定官方资料Amazon Bedrock 用户指南、Bedrock API 参考、SDK for Go V2 Bedrock 包参考pkg.go.dev上的github.com/aws/aws-sdk-go-v2/service/bedrockCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐CANN/asc-devkit__ll2half_rn函数\_\_ll2half\_rn 产品支持情况 ! npu950 id1 Ascend 950PR/Ascend 950DT支持 ! end id1示例工程教程后端Zutilo深度解析提升Zotero文献管理效率的实用插件指南Zutilo深度解析提升Zotero文献管理效率的实用插件指南 Zutilo是一款专为Zotero文献管理软件设计的功能增强插件它为研究人员、学者和学生提供示例工程教程后端使用 AWS SDK for .NET 调用 Amazon Bedrock RuntimeConverse、工具调用与图像生成实战指南使用 AWS SDK for .NET 调用 Amazon Bedrock RuntimeConverse、工具调用与图像生成实战指南 导读 本文以开源仓库示例工程教程后端上一篇Vibe Coding 实战用 AI 从零构建 VS Code 智能项目助手插件 AI Project Bot下一篇5步掌握vJoy虚拟手柄从零开始打造你的游戏控制中心创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

CLI-Anything 只能用于桌面端软件吗?如何为自己的软件生成 Agent 可用的 CLI
CLI-Anything 只能用于桌面端软件吗?如何为自己的软件生成 Agent 可用的 CLI

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 10:04:33

IronOS 焊台固件设置菜单深度解析:完整参数指南与固件设置系统实现
IronOS 焊台固件设置菜单深度解析:完整参数指南与固件设置系统实现

嵌入式固件硬件开发智能硬件 【免费下载链接】IronOS Open Source Soldering Iron firmware 项目地址: https://gitcode.com/gh_mirrors/ir/IronOS 点击查看 免费下载 本文基于 IronOS 仓库中自动生成的设置菜单文档 Documentation/Settings.md,逐一讲解… · 2026/9/25 10:04:26

Fur Trader 游戏 Perl 移植版:从 1978 年 BASIC 经典到现代脚本的完整重构解析
Fur Trader 游戏 Perl 移植版:从 1978 年 BASIC 经典到现代脚本的完整重构解析

示例工程 【免费下载链接】basic-computer-games An updated version of the classic "Basic Computer Games" book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic… · 2026/9/25 10:04:12

MinGW-w64 GCC工具链选型指南:posix-seh-msvcrt配置与多线程异常处理实战
MinGW-w64 GCC工具链选型指南:posix-seh-msvcrt配置与多线程异常处理实战

简介:这是一份面向 Windows 平台 C/C 开发者的 MinGW-w64 完整工具链发行包,版本为 GCC 13.2.0,采用 POSIX 线程模型与 SEH 异常处理机制,并链接 msvcrt 运行时库,适合需要在 Windows 上获得类 GNU/Linux 编译体验、又… · 2026/9/25 10:38:42

手把手教你用 Trellis + TaoToken:从安装到上手,打造 AI 编程标准流
手把手教你用 Trellis + TaoToken:从安装到上手,打造 AI 编程标准流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 10:38:05

NVIDIA计算卡真实算力与显存效能深度解析(2026版)
NVIDIA计算卡真实算力与显存效能深度解析(2026版)

1. 这份报告不是“参数罗列”,而是算力决策的底层坐标系你手头正要采购一批计算卡,预算卡在300万,任务是支撑一个千卡规模的推理集群——但采购清单还没敲定,技术负责人却已经收到三份不同厂商的“性能对比PPT”:有的强… · 2026/9/25 10:37:47

运动想象BCI实战:基于ironbci库的IV2a数据集处理全流程解析
运动想象BCI实战:基于ironbci库的IV2a数据集处理全流程解析

我估计你听说 pieeg-club/ironbci 时,大概率是被"运动想象"或者"IV2a"这个词勾过来的。这个项目是个纯 Python 的脑机接口工具库,主打把 BCI 竞赛经典数据集——尤其是 BCI Competition IV Dataset 2a——下载、预处理、特征提取、分… · 2026/9/25 10:37:46

vnpy-01 服务器图形化环境与 AI Agent 部署文档:用 TaoToken 统一 Key 打通配置链路
vnpy-01 服务器图形化环境与 AI Agent 部署文档:用 TaoToken 统一 Key 打通配置链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 10:37:40

台达杯电力电子AI设计竞赛:从赛题拆解到闭环验证的实操指南
台达杯电力电子AI设计竞赛:从赛题拆解到闭环验证的实操指南

1. 从“台达杯”看电力电子与AI的交叉赛道“台达杯”电力电子人工智能设计竞赛,全称是第十二届高校电力电子应用设计大赛,这个比赛在高校电力电子圈子里分量不轻。我第一次接触这个赛事是在几年前,当时带的学生团队做的是数字电源控制方向&am… · 2026/9/25 10:37:40

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码