AWS lambdaでrcloneを動かしてGDriveをS3にバックアップする

CTO室情報システム担当の吉澤です!

AWS Lambda Custom RuntimeとCloudWatch Eventを使ってGDriveをS3にバックアップする自動化を行いました。

Custom Runtimeについては以下を参照にしてください。 docs.aws.amazon.com

ファイル構成

.
├── bootstrap
├── function.sh
├── jq
├── rclone
├── .rclone.conf

function.sh

function handler() {
  ID=`echo $1 | /var/task/jq -r '.id'`
  NAME=`echo $1 | /var/task/jq -r '.name'`
  DATE=`date +%Y%m%d`

  cp /var/task/.rclone.conf /tmp
  /var/task/rclone dedupe --dedupe-mode rename --drive-skip-shortcuts ${ID}:
  /var/task/rclone sync ${ID}: s3:roxx-gdrive-backup/sync/${NAME} --config=/tmp/.rclone.conf --fast-list --drive-alternate-export --drive-skip-shortcuts
}

bootstrapは以下を参照にしてください。 docs.aws.amazon.com

jsonを読み込むためのjqと、rcloneのバイナリも一緒にパッケージ化します。 --drive-alternate-export--drive-skip-shortcutsについては以下を参照してください。 rclone.org

.rclone.confはあらかじめローカルで設定したものをコピペします。

.rclone.conf

[gdrive]
type = drive
scope = drive
token = ***
team_drive = ***

[s3]
type = s3
provider = AWS
env_auth = true
region = ap-northeast-1
acl = private
storage_class = GLACIER

S3のポリシーは、S3 Permissionsの項のExample policyを参考に設定してください。 rclone.org

引数

{'id':'gdrive', 'name':'Googleドライブ'}

今回はIT監査対応でバックアップを作成しました。 rcloneはいろんなストレージに対応しているので、バックアップ手法を模索している方検討してみてください。