0
IAM에서 제어하는 ElasticSearch 도메인에 연결하려고합니다. 요청을 작성하고 서명했습니다. 모든 메소드가 제대로 작동하지만 POST 메서드에서 400 개의 잘못된 요청이 발생했습니다.AWS ElasticSearch에서 잘못된 요청이 발생했습니다.
이것은 페이로드와 관련이 있습니다. 페이로드 빈 문자열 ("")을 제공하면 적절하게 작동하지만 잘못된 결과가 나오는 경우
무엇이 누락 되었습니까?
val url = s"https://$host/TEST/article/_search"
val serviceName = "es"
val regionName = "us-east-1"
val request = new DefaultRequest(serviceName)
val payload =
"""{"1":"1"}""".trim
val payloadBytes = payload.getBytes(StandardCharsets.UTF_8)
val payloadStream = new ByteArrayInputStream(payloadBytes)
request.setContent(payloadStream)
val endpointUri = URI.create(url)
request.setEndpoint(endpointUri)
request.setHttpMethod(HttpMethodName.POST)
val credProvider = new EnvironmentVariableCredentialsProvider
val credentials = credProvider.getCredentials
val signer = new AWS4Signer
signer.setRegionName(regionName)
signer.setServiceName(serviceName)
signer.sign(request, credentials)
val context = new ExecutionContext(true)
val clientConfiguration = new ClientConfiguration()
val client = new AmazonHttpClient(clientConfiguration)
val rh = new MyHttpResponseHandler
val eh = new MyErrorHandler
val response =
client.execute(request, rh , eh, context);