AWS/AWS 알아두면 좋은 지식

[ElastiCache] 다른 계정으로 레디스 이미지 이관방법

[앙금빵] 2024. 10. 13. 17:41

개요

다른 계정으로 레디스 이미지 이관하고 생성하는 방법에 대한 글이다. EC2 이미지 복제와는 달리 다소 여러 절차들이 요구되어진다. 방법을 알고나면 단순하지만 처음 방법을 찾는데 시간이 다소 소요되었다.


전체과정 요약

(1) 버킷 생성 및 퍼미션 설정
(2) ElastiCache 백업본 Source S3로 export
(3) 복제된 Source S3 레디스 이미지 Target S3로 복제
(4) Target account에서 레디스 이미지 생성


Solution

이 과정은 Source 계정에서 Redis Backup 이미지가 구성되어져 있다는 기저하에 진행된다. 
 

Step 1. Source, Target 계정에 대해 S3 버킷 생성 및 퍼미션 설정

먼저, S3 버킷을 Source, Target 계정에 대해 생성해준다. 편의상 source-migration, target-migration으로 칭하도록 하겠다.
생성 이후, 각 버킷에 퍼미션 설정을 진행해준다. <<your-bucket-name>> 부분에 source-migration, target-migration을 넣어주면 된다. (반드시 Source, Target 버킷 모두 퍼미션 설정 진행이 필요하다.)
 
Bucket Policy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt15399483",
            "Effect": "Allow",
            "Principal": {
                "Service": "elasticache.amazonaws.com"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<<your-bucket-name>>",
                "arn:aws:s3:::<<your-bucket-name>>/*"
            ]
        },
        {
            "Sid": "Stmt15399484",
            "Effect": "Allow",
            "Principal": {
                "Service": "ap-northeast-1.elasticache-snapshot.amazonaws.com"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<<your-bucket-name>>",
                "arn:aws:s3:::<<your-bucket-name>>/*"
            ]
        }
    ]
}

 
<source-migration 예시>

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt15399483",
            "Effect": "Allow",
            "Principal": {
                "Service": "elasticache.amazonaws.com"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::source-migration",
                "arn:aws:s3:::source-migration/*"
            ]
        },
        {
            "Sid": "Stmt15399484",
            "Effect": "Allow",
            "Principal": {
                "Service": "ap-northeast-1.elasticache-snapshot.amazonaws.com"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::source-migration",
                "arn:aws:s3:::source-migration/*"
            ]
        }
    ]
}

Step 2. ElastiCache 백업본 Source S3로 export

 

 

Step 3. 복제된 Source S3 레디스 이미지 Target S3로 복제

 

Step 4. Target account에서 레디스 이미지 생성

생성 단계에서 "Restore from backup" 항목 선택

Source >> Other backups
S3 location에 <버킷 이름>/<파일명> 입력. 만약 여러 노드를 복제한 경우 <버킷 이름>/<파일명 1>, <버킷 이름>/<파일명2>, <버킷 이름>/<파일명3> 으로 입력
 
Case 1. 단일 노드만 복제하는 경우

 
Case 2. 멀티 노드 복제하는 경우

이후 아래 스펙사양 입력후 생성해주면 끝이다.
 

Reference

https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/backups-exporting.html

Exporting a backup - Amazon ElastiCache

Exporting a backup Amazon ElastiCache supports exporting your ElastiCache (Redis OSS) backup to an Amazon Simple Storage Service (Amazon S3) bucket, which gives you access to it from outside ElastiCache. You can export a backup using the ElastiCache consol

docs.aws.amazon.com