Soy nuevo en Amazon Web Services. Configuré el dominio para usar ElasticSearch en la consola de AWS (Amazon Web Services). Uso confirmado de solicitudes Http. Pasó por la documentación de la creación del cliente ElasticSearch desde 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") ));Funciona bien para mí (la respuesta es 200) Pero cuando trato de configurar credenciales de autenticación como esta y pasar la configuración al constructor del cliente, necesito tener "cloudId" que no encontré en AWS, ¿dónde debería buscarlo? o que tengo que hacer?
Mi código de cliente:
BasicAuthenticationCredentials credentials = new BasicAuthenticationCredentials("UserName", "Password"); var config = new ConnectionSettings("cloudId???", credentials); var client = new ElasticClient(config); var response = client.Ping();Recientemente hice esto pero de una manera diferente. Usé el paquete Nuget AwsSignatureVersion4 y un usuario de IAM con los permisos adecuados para el servicio ElasticSearch.
Pero básicamente, use ImmutableCredentials y solo haga lo que necesito hacer a través de las llamadas REST y C# HttpClient. Lo encuentro más fácil que usar la biblioteca .NET ElasticSearch. Luego puedo copiar/pegar hacia adelante y hacia atrás desde 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 }