OpenSearchで手動スナップショットを作成するためには、事前にスナップショットリポジトリの登録をしなければなりません。
公式ドキュメントのサンプルにはpythonのコードが掲載されています。
Using the sample Python client
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