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
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