Opensearch를 복제하기 위해 다른 s3 버킷을 repository로하는 snapshot을 생성해야했다.
ElasticSearch와 달리 오픈서치는 스냅샷 UI에서 S3를 추가할 수 없게 되어있다.
Devtool이나 UI로 추가하는것이 아니라 Rest API로 추가해야하는데, 추가할때에도 반드시 role_arn을 인자로 주어야한다.
이게 골때리는데, role_arn에 s3 버킷 사용권한이 부여되어있어야 하는 것은 물론, 이 role_arn의 신뢰정책에 es.amazonaws.com 추가가 필요하고 마지막으로 이 role_arn을 부여할 수 있는 RestAPI 사용자의 신원인증 및 role_arn의 Passrole 권한까지 필요하다.
(access key 같은걸론 추가할 수 없다. ES는 되는데...)
RestAPI에서 AWS 신원을 인증하려면 AWS SignV4 시그니처를 쓸 수 밖에 없는데 손으로 만드려면 짜증나니 CURL의 --aws-sigv4 옵션 을 쓰면 쉽다. 아래처럼 하자.
curl -XPUT "https://ES.us-east-1.es.amazonaws.com/_snapshot/REPO" \
-H "Content-Type: application/json" \
-H "x-amz-security-token: SESSIONTOKEN" \
--data-binary @- \
--aws-sigv4 "aws:amz:us-east-1:es" \
--user "ACCESSKEY:SECRETKEY" <<DATA
{
"type": "s3",
"settings": {
"bucket": "bucketname",
"client": "default",
"base_path": "path",
"canned_acl": "bucket-owner-full-control",
"role_arn": "arn:aws:iam::...:role/..."
}
}
DATA
임시 세션이 아닌 경우 x-amz-security-token 헤더는 빼도 된다.
ACCESSKEY:SECRETKEY 위치 및 도메인, s3 정보를 수정해서 실행하면 된다.
'개발 > AWS' 카테고리의 다른 글
SYN FLOOD 공격 및 대응 사례 (0) | 2024.02.08 |
---|---|
AWS Athena Partition Projection 이란? (0) | 2021.10.15 |