【问题标题】:How to connect to Amazon Kinesis Firehose in ASP.Net Core 2.2 Web Api Application如何在 ASP.Net Core 2.2 Web Api 应用程序中连接到 Amazon Kinesis Firehose
【发布时间】:2019-02-06 06:44:16
【问题描述】:

我是 AWS 的初学者,我想使用 ASP.Net Core 2.2 Web Api 应用程序中的 Amazon Kinesis 将示例数据发送到 s3 存储桶。但我无法发送数据。以下是我尝试过的。 我做的步骤:

  1. 创建了一个 AWS 账户,然后创建了一个 s3 存储桶。

  2. 创建了 Kinesis 帐户并将 s3 存储桶链接到该帐户。

3。 在主要

  public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
        Amazon.Util.ProfileManager.RegisterProfile("demo-aws-profile", "MyAccessKeyId", "MySecretKey");
    }

问题 1: 我应该通过什么来代替 "demo-aws-profile"?它可以是任何随机名称吗?

问题 2:连接 AWS 还需要其他什么吗?

代码片段

        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            var o = new
            {
                Message = "Hello World"
            };
            byte[] oByte = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(o));
            AmazonKinesisConfig config = new AmazonKinesisConfig();
            config.RegionEndpoint = Amazon.RegionEndpoint.USEast1;
           // QUESTION 3: DO I NEED TO SET ANY OTHER PROPERTY IN CONFIG??
            var client = new AmazonKinesisClient(config);
            try
            {
                using (MemoryStream ms = new MemoryStream(oByte))
                {
                    PutRecordRequest requestRecord = new PutRecordRequest();
                    // QUESTION 4: What is this stream name??? 
                    requestRecord.StreamName = "test-stream";
                    requestRecord.Data = ms;
                    var response = client.PutRecordAsync(requestRecord);
                    response.Wait();
                    return Ok(new
                    {
                        seq = response.Result.SequenceNumber
                    });
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            return new string[] { "value1", "value2" };
        }

我收到了System.Threading.Tasks.TaskCanceledException: A task was canceled. 的异常

P.S:我是初学者,我可能会犯任何基本错误,所以如果我应该提供任何进一步的细节,请告诉我。我仍然认为我无法与 Kinesis 通信,因此无法与我的 s3 存储桶通信。我是做错了什么还是错过了一些设置。

【问题讨论】:

    标签: c# amazon-web-services amazon-s3 amazon-kinesis amazon-kinesis-firehose


    【解决方案1】:

    尝试将您的 AccessKeyId、SecretAccessKey 和 Region 作为测试直接传递给构造函数(您永远不想在实际版本中对这些内容进行硬编码)。确保与这些凭据关联的用户配置了允许访问 Kinesis 的策略。

    也使用异步/等待。

        [HttpGet]
        public async Task ActionResult<IEnumerable<string>> Get()
        {
            var o = new
            {
                Message = "Hello World"
            };
            byte[] oByte = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(o));
    
            var client = new AmazonKinesisClient(<AccessKeyId>, <SecretAccessKey>, <Region>);
            try
            {
                using (MemoryStream ms = new MemoryStream(oByte))
                {
                    PutRecordRequest requestRecord = new PutRecordRequest();
                    // QUESTION 4: What is this stream name??? 
                    requestRecord.StreamName = <your Kinesis stream name>;
                    requestRecord.Data = ms;
                    var response = await client.PutRecordAsync(requestRecord);
                    return Ok(new
                    {
                        seq = response.Result.SequenceNumber
                    });
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            return new string[] { "value1", "value2" };
        }
    

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 2016-02-03
      • 1970-01-01
      • 2018-11-30
      • 2022-01-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多