c# - 如何配置客户端? AWS Elasticsearch 请求 C#

标签 c# .net amazon-web-services http elasticsearch

我是 Amazon Web Services 的新手。 我将域配置为在 AWS(亚马逊网络服务)控制台中使用 ElasticSearch。确认使用 Http 请求。 浏览了创建 ElasticSearch 客户端的文档 https://www.elastic.co/guide/en/elasticsearch/client/net-api/1.x/security.html

var response = client.RootNodeInfo(c => c
    .RequestConfiguration(rc => rc
        .BasicAuthentication("UserName", "Password")
    ));

对我来说很好用(响应是 200) 但是当我尝试像这样配置身份验证凭据并将配置传递给客户端构造函数时,我需要有“cloudId”,但我没有在 AWS 中找到我应该在哪里搜索它?或者我必须做什么?

我的客户端代码:

BasicAuthenticationCredentials credentials = new BasicAuthenticationCredentials("UserName", "Password");

var config = new ConnectionSettings("cloudId???", credentials);

var client = new ElasticClient(config);
var response = client.Ping();

最佳答案

我最近这样做了,但方式不同。我使用了 Nuget 包 AwsSignatureVersion4 和对 ElasticSearch 服务具有适当权限的 IAM 用户。

但基本上,使用 ImmutableCredentials 并通过 REST 调用和 C# HttpClient 执行我需要执行的操作。我发现它比使用 .NET ElasticSearch 库更容易。然后我可以从 Kibana 来回复制/粘贴。

var credentials = new ImmutableCredentials("access_key", "secret_key", null);
HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(someObjOrQuery), Encoding.UTF8);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var resp = httpClient.PostAsync(es_url, 
    httpContent, 
    regionName: "us-east-1",
    serviceName: "es",
    credentials: credentials).GetAwaiter().GetResult();

if(resp.IsSuccessStatusCode) 
{
   //Good to go
}
else
{
  //this gets what ES sent back
  var content = response.Content.ReadAsStringAsync();
  dynamic respJson = JObject.Parse(content.Result());
  //Now you can access stuff by dot and it's dynamic respJson.something
}

关于c# - 如何配置客户端? AWS Elasticsearch 请求 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63308459/

相关文章:

.net - 如何将 GPS 观察器移至 App.xaml 父类(super class)并将事件调度至其他页面/类?

amazon-web-services - 我需要对这种部分无服务器架构设计的反馈

amazon-web-services - 无通信 - 具有不同子网中两个接口(interface)的 EC2 实例

java - Tomcat 管理器 : Cannot Upload Large WAR file

c# - 通过事件通知实例

c# - mvvm light - 发送带回调的通知消息

c# - 无法访问正在使用的文件

c# - 无法从用法中推断出开放泛型类型参数

c# - 为什么在 C# 中将方法分配给变量?

c# - 可以卸载的已安装程序/更新列表