我是 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/