ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

使用 AWS SDK for .NET 操作 Amazon Kinesis:流与消费者管理实战指南

使用 AWS SDK for .NET 操作 Amazon Kinesis:流与消费者管理实战指南 示例工程教程后端【免费下载链接】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点击查看免费下载导读本指南基于 dotnetv3/Kinesis 目录下的官方代码示例系统讲解如何用 AWS SDK for .NET 以异步方式管理 Amazon Kinesis 数据流从创建流、列出流、打标签到注册/注销流消费者与分页查询消费者列表。读完本文你将掌握 8 个可直接编译运行的单一操作Single Action示例理解每个 API 调用的核心参数与返回值并能快速迁移到自己的 .NET 流处理应用中。Amazon Kinesis 是 AWS 提供的实时数据流服务用于大规模采集、处理和分析视频与数据流。对于 .NET 开发者上述示例覆盖了流生命周期管理与消费者管理两大基础面是构建实时数据管道前必备的控制面control plane操作。示例总览与工程结构dotnetv3/Kinesis目录按一个操作一个工程的方式组织共包含 8 个可独立构建的控制台示例。每个工程都遵循同一套.sln 子项目/.csproj结构操作AWS API源码文件创建流CreateStreamCreateStream.cs删除流DeleteStreamDeleteStream.cs列出流ListStreamsListStreams.cs为流打标签AddTagsToStreamTagStream.cs列出流标签ListTagsForStreamListTags.cs注册流消费者RegisterStreamConsumerRegisterConsumer.cs注销流消费者DeregisterStreamConsumerDeregisterConsumer.cs列出流消费者ListStreamConsumersListConsumers.cs所有示例统一通过IAmazonKinesis接口由Amazon.Kinesis与Amazon.Kinesis.Model命名空间提供发起异步调用并以System.Net.HttpStatusCode.OK判断操作是否成功。以 CreateStreamExample.csproj 为例工程面向net6.0依赖AWSSDK.Kinesis 3.7.0.55与AWSSDK.Core 3.7.2.7并引入StyleCop.Analyzers保证代码风格统一。前置条件与凭证配置根据 dotnetv3/README.md 中的说明运行这些示例需要合适的 .NET SDK本仓库多数示例基于 .NET 6部分示例要求 .NET 5Kinesis 各示例的 csproj 中TargetFramework均为net6.0AWS SDK for .NET通过 NuGet 安装AWSSDK.Kinesis包即可AWS 凭证可以在本地 AWS 凭证文件中配置或通过AWS_ACCESS_KEY_ID与AWS_SECRET_ACCESS_KEY环境变量注入。代码中通过无参构造new AmazonKinesisClient()创建客户端意味着 SDK 会按标准链自动解析凭证环境变量 → 本地凭证文件 → IAM 角色等无需在代码中硬编码密钥。⚠️ 注意运行本代码或相关测试可能产生 AWS 账户费用。建议遵循最小权限原则仅授予执行任务所需的最低 IAM 权限同时该代码并未在所有 AWS 区域测试请以 AWS Regional Services 为准确认目标区域支持情况。编译与运行示例标准构建流程按 dotnetv3/README.md 的通用步骤进入包含.sln文件的目录如CreateStreamExample/执行dotnet build CreateStreamExample.sln编译解决方案进入包含.csproj的示例项目目录如CreateStreamExample/CreateStreamExample/执行dotnet run运行项目。个性化配置settings.json 与 settings.local.json部分工程可能包含settings.json。编译前你可以修改其中的值以匹配自己的账户与资源或者新建一个settings.local.json存放本地个性化配置——应用运行时该文件会被自动加载。这种本地覆盖机制让你无需改动仓库中的公共配置文件即可在不同环境中切换流名称、ARN 等参数。在 IDE 中运行编译完成后也可以直接在 Visual Studio / Rider / VS Code 中打开解决方案运行对应项目。单操作示例深度解析下面结合仓库源码逐一解读 8 个示例的实现细节。1. 创建流CreateStreamCreateStream.cs 中的核心逻辑如下var request new CreateStreamRequest { StreamName streamName, ShardCount shardCount, }; var response await client.CreateStreamAsync(request); return response.HttpStatusCode System.Net.HttpStatusCode.OK;StreamName新流的名称示例中默认取AmazonKinesisStreamShardCount流的初始分片数。Kinesis 流的吞吐量是分片数量的函数——每个分片约提供 1 MB/s 写入与 2 MB/s 读取需要更高预置吞吐时必须增加分片数因此注释中明确提示more shards are required for greater provisioned throughput。示例默认创建 1 个分片。创建是异步操作CreateStreamAsync返回后流可能仍处于CREATING状态通常需要等待流进入ACTIVE才能写入数据后续的ListStreams可用于轮询状态。2. 删除流DeleteStreamDeleteStream.cs 演示了带消费者强删选项的删除调用var request new DeleteStreamRequest { StreamName streamName, EnforceConsumerDeletion true, }; var response await client.DeleteStreamAsync(request);EnforceConsumerDeletion true删除流时同时强制删除该流的所有消费者若设为false而流上仍存在消费者调用将抛出ResourceInUseException。源码注释特别强调了这一行为差异是实际运维中非常容易踩坑的点清理测试环境时应保留true而生产环境中若想先迁移消费者再删流则应显式置false并捕获异常。3. 列出流ListStreamsListStreams.cs 是最简单的只读示例var response await client.ListStreamsAsync(new ListStreamsRequest()); Liststring streamNames response.StreamNames; if (streamNames.Count 0) { streamNames.ForEach(s Console.WriteLine($Stream name: {s})); } else { Console.WriteLine(No streams were found.); }ListStreamsResponse.StreamNames返回账户下所有流的名称列表。注意ListStreams默认分页单页上限 100 条示例代码未处理分页游标当流数量较多时需要结合ExclusiveStartStreamName继续拉取——这与下面ListTags示例展示的分页模式一致。4. 为流添加标签AddTagsToStreamTagStream.cs 展示了键值对标签的写入var request new AddTagsToStreamRequest { StreamName streamName, Tags tags, // Dictionarystring, string }; var response await client.AddTagsToStreamAsync(request);示例构造了两组标签var tags new Dictionarystring, string { { Project, Sample Kinesis Project }, { Application, Sample Kinesis App }, };标签常用于成本归因、资源检索与权限策略基于标签的 IAM 条件键。Kinesis 对单流标签数量与键长度均有配额限制生产环境应保持标签键的规范化命名。5. 分页列出流标签ListTagsForStreamListTags.cs 是 8 个示例中唯一完整展示手动分页逻辑的代码值得重点学习var request new ListTagsForStreamRequest { StreamName streamName, Limit 10, }; var response await client.ListTagsForStreamAsync(request); DisplayTags(response.Tags); while (response.HasMoreTags) { request.ExclusiveStartTagKey response.Tags[response.Tags.Count - 1].Key; response await client.ListTagsForStreamAsync(request); }Limit 10单次返回最多 10 个标签response.HasMoreTags指示是否还有更多标签未返回分页续传机制将本页最后一个标签的Key赋给ExclusiveStartTagKey作为下一次请求的起始游标循环直到HasMoreTags为false。这种末位键即游标的分页模式是 Kinesis 标签/消费者列表类 API 的通用范式可直接复用到其他分页场景。6. 注册流消费者RegisterStreamConsumerKinesis 增强型 Fan-OutEFO消费者需先注册。RegisterConsumer.cs 的实现var request new RegisterStreamConsumerRequest { ConsumerName consumerName, StreamARN streamARN, }; var response await client.RegisterStreamConsumerAsync(request); return response.Consumer;ConsumerName消费者名称示例占位符为NEW_CONSUMER_NAMEStreamARN流的 Amazon 资源名称ARN示例格式为arn:aws:kinesis:us-east-2:000000000000:stream/AmazonKinesisStream——使用时必须替换为你的真实账户 ID、区域与流名返回值Consumer对象含ConsumerName、ConsumerARN、ConsumerStatus、ConsumerCreationTimestamp等字段示例直接打印consumer.ConsumerName。注册成功后消费者才能通过SubscribeToShard获得专属的 2 MB/s 读取带宽。7. 注销流消费者DeregisterStreamConsumerDeregisterConsumer.cs 展示了注销的三种寻址方式var request new DeregisterStreamConsumerRequest { StreamARN streamARN, ConsumerARN consumerARN, ConsumerName consumerName, }; var response await client.DeregisterStreamConsumerAsync(request); return response.HttpStatusCode System.Net.HttpStatusCode.OK;请求中同时提供了StreamARN、ConsumerARN、ConsumerName三个字段。按 API 设计ConsumerARN与(StreamARN ConsumerName)组合二选一即可唯一定位消费者示例同时填充三者属于保守写法。代码中的消费者 ARN 形如arn:aws:kinesis:us-west-2:000000000000:stream/AmazonKinesisStream/consumer/CONSUMER_NAME:000000000000即流 ARN /consumer/名称:时间戳的层级结构同样需要替换为真实值。8. 列出流消费者ListStreamConsumersListConsumers.cs 按流 ARN 查询已注册消费者var request new ListStreamConsumersRequest { StreamARN streamARN, MaxResults maxResults, // 示例为 10 }; var response await client.ListStreamConsumersAsync(request); return response.Consumers;StreamARN目标流 ARN示例为us-east-2区域占位值MaxResults单次返回的最大条数示例取 10合法范围为 1–100返回值ListConsumer示例遍历打印每个消费者的ConsumerName与ConsumerARN。与ListTagsForStream类似该接口同样支持分页NextToken续传当消费者数量超过MaxResults时应处理分页。常用调用模式小结API关键入参返回值/判定注意事项CreateStreamAsyncStreamName、ShardCountHTTP 状态码 OK创建后需等待流进入ACTIVEDeleteStreamAsyncStreamName、EnforceConsumerDeletionHTTP 状态码 OKfalse且存在消费者时抛ResourceInUseExceptionListStreamsAsync无可分页StreamNames列表流较多时需处理分页AddTagsToStreamAsyncStreamName、Tags字典HTTP 状态码 OK受标签数量/键长度配额限制ListTagsForStreamAsyncStreamName、Limit、ExclusiveStartTagKeyTagsHasMoreTags用末位键作为分页游标RegisterStreamConsumerAsyncConsumerName、StreamARNConsumer对象消费 EFO 前必须先注册DeregisterStreamConsumerAsyncConsumerARN或StreamARNConsumerNameHTTP 状态码 OK消费者 ARN 结构为流 ARN /consumer/...ListStreamConsumersAsyncStreamARN、MaxResultsListConsumer支持NextToken分页从源码结构看8 个示例全部遵循在Main中构造客户端 → 调用异步方法 → 校验返回结果/状态码的统一范式方法均封装为可独立测试的public static async Task签名如CreateNewStreamAsync、ApplyTagsToStreamAsync便于读者抽取到自己的业务层复用。延伸学习资源仓库级前置条件与通用构建说明见 dotnetv3/README.md测试运行方式见其中 Tests 一节在测试项目目录执行dotnet test注意运行测试同样可能产生费用全部示例源码集中在 dotnetv3/Kinesis 目录每个示例自带.sln与.csproj可直接构建服务全貌可参阅 Kinesis 开发者指南与 API ReferenceSDK 层面的类与接口定义见 AWS SDK for .NET 的 Kinesis 命名空间文档。Copyright 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点击查看免费下载相关推荐使用 AWS SDK for .NET 操作 Amazon S3 Glaciervault 管理与归档上传下载实战使用 AWS SDK for .NET 操作 Amazon S3 Glaciervault 管理与归档上传下载实战 Amazon S3 Glacier 是为不示例工程教程后端使用 AWS SDK for .NET 操作 Amazon RDS从 Hello 示例到实例生命周期管理实战使用 AWS SDK for .NET 操作 Amazon RDS从 Hello 示例到实例生命周期管理实战 导读 本文基于 aws doc sdk exam示例工程教程后端破解CUDA版本迷宫让bitsandbytes在复杂环境中优雅运行破解CUDA版本迷宫让bitsandbytes在复杂环境中优雅运行 当你兴奋地准备开始大语言模型训练却发现bitsandbytes库报出令人困惑的Libr示例工程教程后端上一篇5个实用技巧突破城通网盘限速ctfileGet工具让下载效率提升10倍下一篇WarcraftHelper问题解决指南宽屏适配的3种实战方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表