class OpenSearch::Aws::Sigv4RequestSigner

puts client.cat.health
})
)
session_token: ‘<session_token>’
secret_access_key: ‘<secret_access_key>’,
access_key_id: ‘<access_key_id>’,
region: ‘us-east-1’,
service: ‘es’,
request_signer: OpenSearch::Aws::Sigv4RequestSigner.new(
host: ‘my-os-domain.us-east-1.es.amazonaws.com/’,
client = OpenSearch::Client.new({
@example
@option options [String] :session_token (optional) The AWS session token.
@option options [String] :secret_access_key The AWS secret access key.
@option options [String] :access_key_id The AWS access key ID.
@option options [String] :region The AWS region.
@option options [String] :service (‘es’) The AWS service name.
@param [Hash] options Signer options
@link github.com/opensearch-project/opensearch-ruby/blob/main/DEVELOPER_GUIDE.md#create-a-request-signer<br><br>AWS Sigv4 request signer for OpenSearch::Transport::Client.

def initialize(options = {})

def initialize(options = {})
  @signer = ::Aws::Sigv4::Signer.new({
    service: 'es'
  }.merge(options))
end

def sign_request(method:, path:, params:, body:, headers:, host:, port:, url:, logger:) # rubocop:disable Lint/UnusedMethodArgument

rubocop:disable Lint/UnusedMethodArgument
def sign_request(method:, path:, params:, body:, headers:, host:, port:, url:, logger:) # rubocop:disable Lint/UnusedMethodArgument
  logger&.info("Signing request with AWS SigV4: #{method} #{url}")
  signature_body = body.is_a?(Hash) ? body.to_json : body.to_s
  signature = @signer.sign_request(
    http_method: method,
    url: url,
    headers: headers,
    body: signature_body,
    logger: logger
  )
  signed_headers = signature.headers
  logger&.debug("Signed headers with AWS SigV4: #{signed_headers}")
  (headers || {}).merge(signed_headers)
end