LoginSignup
3
3

More than 5 years have passed since last update.

GitLabでバックアップをS3にとる+定期的にバックアップを削除する

Last updated at Posted at 2016-09-09

GitLabではバックアップ先にAWSのS3を利用することができます。

設定方法は基本的に公式のドキュメント通りです。

EC2のIAMロールを使う方法

GitLabをEC2で動かしている場合では、IAMロールを使うことでアクセストークンの埋め込みを避けることがができます。
公式のドキュメントには記載がありませんが、以下の設定でIAMロールを使うことができました。
これは、GitLabのバックアップファイルのアップロードに使われているFogというライブラリで対応しているためです。

設定方法

以下の様に設定することで、IAMロールを使ってS3バックアップが可能です。

gitlab_rails['backup_upload_connection'] = {
  'provider' => 'AWS',
  'region' => 'リージョン名',
  'aws_access_key_id' => '',    # 空だけど必要
  'aws_secret_access_key' => '',# 空だけど必要
  'use_iam_profile' => true,
}

gitlab_rails['backup_upload_remote_directory'] = 'バケット名'

必須項目のバリデーションがかかっているので、aws_access_key_id, aws_secret_access_keyを空のまま残して'use_iam_profile' => trueを指定するとIAMロールが使えます。

これは以下で報告されている、公式対応のMRがマージされるまでの回避策になると思います。

S3にアップロードされたバックアップファイルを定期的に消去する方法

GitLab側でのバックアップでは、backup_keep_timeの期限を過ぎたファイルは自動で削除されます。しかし、S3にアップロードした場合ではこの期限が適用されずに、バックアップファイルが全て蓄積されていきます。

この対応策として削除スクリプトを使う方法がありますが、S3のライフサイクルという機能を使う方が容易です。
このS3のライフサイクル機能では、指定期間後にファイルを削除したり、Glacierなどの低価格な長期保存ストレージに移動したりすることが容易にできます。

設定方法

S3のバケットプロパティにある「ライフサイクル」から設定可能です。

以下のように、任意の経過日数後に削除するという設定が可能です。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3