OpenSearchの手動スナップショットリポジトリ登録スクリプトをRubyで書く

OpenSearchで手動スナップショットを作成するためには、事前にスナップショットリポジトリの登録をしなければなりません。

docs.aws.amazon.com

公式ドキュメントのサンプルにはpythonのコードが掲載されています。
Using the sample Python client

この登録スクリプトRubyで書いてみました。

region = 'ap-northeast-1'
service = 'es'

# AWSの認証情報を取得
credentials = Aws::CredentialProviderChain.new.resolve
aws_signer = Aws::Sigv4::Signer.new(service: service, region: region, credentials_provider: credentials)

host = 'OpenSearchドメインエンドポイント'
path = '_snapshot/スナップショットリポジトリ名'
url = URI(host + path)

bucket_name = 'スナップショットS3バケット名'
role_arn = 'スナップショット IAM Role ARN'

payload = {
  type: 's3',
  settings: {
    bucket: bucket_name,
    region: region,
    role_arn: role_arn
  }
}.to_json

# AWSの署名付きリクエストを作成
signed_request = aws_signer.sign_request(
  http_method: 'PUT',
  url: url.to_s,
  headers: { 'Content-Type' => 'application/json' },
  body: payload
)
headers = signed_request.headers
headers['Content-Type'] = 'application/json'
response = Faraday.put(url, payload, signed_request.headers)

puts response.status
puts response.body

AWSの認証情報を取得の部分は各環境に応じて変更してください。
参考: AWSのSigV4署名を付与してIAM認証のAPI GatewayにHTTPリクエストを送るRubyとGoのサンプルコード #Ruby - Qiita