개발 계정에서 만들어진 dynamodb 테이블을 운영환경으로 이전하는 작업을 진행하려고 했다. 같은 계정에서 백업이나, 복구는 간단해 보이는데, 유독 다른 계정으로 이전시키는 방법이 EMR 이라던지, DataPipeline 이라던지, 배보다 배꼽이 큰 작업에 관련된 내용만 있었다.

우리가 필요한 것은 코드성 작은 테이블 몇 개일 뿐인데, 찾다 보니, 누군가 잘 만들어 놓은 패키지가 있었다.

서로 다른 계정에 있는 dynamodb 테이블을 복제하는 방법이다. 임의 빈 폴더에 아래 패키지를 설치한다.


npm i copy-dynamodb-table

그리고 임의 파일을 아래와 같이 만든다.


var copy = require('copy-dynamodb-table').copy

var globalAWSConfig = { // dynamodb 접근 권한이 있는 계정
  accessKeyId: 'XXXXXXXX',
  secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXX',
  region: 'ap-northeast-2'
}

var sourceAWSConfig = { // 원복 접속 정보 - dynamodb 접근 권한이 있는 계정
  accessKeyId: 'AAAAAAAA',
  secretAccessKey: 'AAAAAAAAAAAAAAAAAAAAAAAA',
  region: 'ap-northeast-2'
}

var destinationAWSConfig = {
  accessKeyId: 'BBBBBBBB',
  secretAccessKey: 'BBBBBBBBBBBBBBBBBBBBBBBB',
  region: 'ap-northeast-2' // support cross zone copying
}

copy({
    config: globalAWSConfig,
    source: {
      tableName: 'Origin-TableName', // 필수
      config: sourceAWSConfig // 옵션, 없으면 globalAWSConfig
    },
    destination: {
      tableName: 'Target-TableName', // 필수
      config: destinationAWSConfig // 옵션, 없으면 globalAWSConfig
    },
    log: true,// 로그 표시 여부 없으면 false
    create : true // 테이블이 없을 경우 만듬
  },
  function (err, result) {
    if (err) {
      console.log(err)
    }
    console.log(result)
  })

그리고 실행하면 끝


node index.js
Copied XXXX items{ count: XXXX, status: 'SUCCESS' }