Postman AWS S3快照请求ElasticSearch

ar7v8xwq  于 2022-12-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(159)

你好,我需要一些帮助发送一个PUT请求到我的AWS上的ElasticSearch,以创建一个快照在S3桶,与POSTMAN。
我已经创建了一个名为cb-search-es-backup的S3存储桶。我已经为S3 (see:this post of mine for the steps I've taken)创建了一个角色和一个策略。

请求URLhttps://myelasticsearchendpoint.eu-west-1.es.amazonaws.com/
请求方法:放
主体:原始/ json

{
 "type": "s3",
    "settings": {
        "bucket": "cb-search-es-backup",  // my bucketname
        "region": "eu-west-1", // region
        "role_arn": "arn:aws:iam::12345676890:role/Role_ES_TO_S3" // my role arn
   }
 }

我也试过授权类型:“AWS签名”,填写访问权限和密钥。

ux6nzvsh

ux6nzvsh1#

您似乎没有通过此请求传递AWS凭据。
这里有一个关于如何使用AWS身份验证发出Postman请求的详细指南:Use Postman to Call an API
您的Postman窗口可能如下所示:

要在python中执行同样的操作,请查看本文档页面的Sample python client部分,注意AWS4Auth对象已创建,并作为auth参数传递给requests.put()

credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

# Register repository

path = '_snapshot/my-snapshot-repo' # the Elasticsearch API endpoint
url = host + path

payload = {
  ...
}

headers = {"Content-Type": "application/json"}

r = requests.put(url, auth=awsauth, json=payload, headers=headers)

相关问题