Hello, I would like to share with a small python function I have designed to register a AWS S3 bucket as a snapshot repository for AWS Opensearch.
import boto3
import requests
from requests_aws4auth import AWS4Auth
region = 'eu-central-1'
service = 'es'
role_arn = "arn:aws:iam::<accountid>:role/EsSnapshotRole"
host = '<elasticsearch Endpoint>'
path = '/_snapshot/moo-es-snapshots'
url = host + path
credentials = boto3.Session(profile_name="moo-stag-es").get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)
#Register repository
payload = {
"type": "s3",
"settings": {
"bucket": "<bucket-name>",
"region": region,
"role_arn": ""
}
}
headers = {"Content-Type": "application/json"}
try:
r = requests.put(url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)
except Exception as e:
print(e)
I hope you like the tutorial, if you do give a thumps up! and follow me in Twitter, also you can subscribe to my Newsletter in order to avoid missing any of the upcoming tutorials.
Media Attribution
I would like to thank Clark Tibbs for designing the awesome photo I am using in my posts.