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

3
我是新手,使用 AWS(Amazon Web Services)控制台配置域以使用 ElasticSearch。 配置 Http 请求的使用。 从https://www.elastic.co/guide/en/elasticsearch/client/net-api/1.x/security.html阅读创建 ElasticSearch 客户端的文档。
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();
1个回答

3

我最近用了另一种方法来实现这个。我使用了Nuget包AwsSignatureVersion4和一个拥有适当权限的IAM用户来连接ElasticSearch服务。

但基本上,只需使用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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接