開始する前に、Access Key を生成 する必要があります。以降の例では、生成した Access Key ID と Secret Access Key の値を表す access_key_id と access_key_secret 変数を使います。
rclone はクラウドストレージ上のファイルを管理するコマンドラインツールです。rclone を使うと、R2 へオブジェクトを並列にアップロードできます。
rclone ↗ をインストールしたあと、rclone config ↗ を実行して、新しい S3 ストレージプロバイダーを設定できます。新しいプロバイダーの詳細について、一連の質問が表示されます。
nを選んで、新しい remote を作成します。- 新しい remote の名前を選びます。例:
r2。 - ストレージタイプで
Amazon S3 Compliant Storage Providersを選びます。 - プロバイダーで
Cloudflare R2 storageを選びます。 - AWS 認証情報を手動で入力するか、ランタイム環境から取得するかを選びます。
- AWS Access Key ID を入力します。
- AWS Secret Access Key(パスワード)を入力します。
- 接続するリージョンを選びます(任意)。
- S3 API のエンドポイントを選びます。
以前に rclone を設定済みの場合は、rclone config file を実行すると、rclone 設定ファイルの場所が表示されます。
rclone config file
# Configuration file is stored at:
# ~/.config/rclone/rclone.conf次に、エディター(たとえば nano や vim)で新しいプロバイダーを追加または編集します。次の例では、新しい r2 プロバイダーを追加します。
[r2]
type = s3
provider = Cloudflare
access_key_id = abc123
secret_access_key = xyz456
endpoint = https://<accountid>.r2.cloudflarestorage.com
acl = privateそのあと、通常のワークフローで新しい rclone プロバイダーを使えます。
rclone tree ↗ コマンドで、リモート(この場合は Cloudflare R2)の内容を一覧できます。
rclone tree r2:
# /
# ├── user-uploads
# │ └── foobar.png
# └── my-bucket-name
# ├── cat.png
# └── todos.txt
rclone tree r2:my-bucket-name
# /
# ├── cat.png
# └── todos.txtrclone copy ↗ コマンドで、R2 バケットへオブジェクトをアップロードしたり、逆方向に取得したりできます。R2 がサポートする最大オブジェクトサイズである 5 TB までのファイルをアップロードできます。
# Upload dog.txt to the user-uploads bucket
rclone copy dog.txt r2:user-uploads/
rclone tree r2:user-uploads
# /
# ├── foobar.png
# └── dog.txt
# Download dog.txt from the user-uploads bucket
rclone copy r2:user-uploads/dog.txt .マルチパートアップロードでは、パートサイズが Class A 操作の回数に大きく影響し、課金額が変わることがあります。
パートのアップロードはそれぞれ別の操作としてカウントされます。パートを大きくすると操作回数は減りますが、アップロード失敗時のリトライコストは増える場合があります。また、マルチパートアップロードは、少なくとも CreateMultipartUpload、UploadPart、CompleteMultipartUpload の各操作を 1 回含むため、単一の PutObject と比べて常に 3 倍以上の操作を消費します。
パートサイズのバランスはユースケースに大きく依存します。ただし、これらの要因は請求額を抑える手がかりになるので、検討する価値があります。
rclone のマルチパートアップロードのパートサイズは、--s3-chunk-size CLI 引数で設定できます。rclone がマルチパートアップロードを使うようにするには、--s3-upload-cutoff 引数も調整が必要な場合があります。どちらも設定ファイルで指定できます。一般に、--s3-upload-cutoff は --s3-chunk-size 以上にします。
rclone copy long-video.mp4 r2:user-uploads/ --s3-upload-cutoff=100M --s3-chunk-size=100Mrclone link ↗ コマンドを使うと、ファイルへの一時的な公開アクセスを共有するための事前署名リンクも生成できます。
# You can pass the --expire flag to determine how long the presigned link is valid. The --unlink flag isn't supported by R2.
rclone link r2:my-bucket-name/cat.png --expire 3600
# https://<accountid>.r2.cloudflarestorage.com/my-bucket-name/cat.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>&X-Amz-Date=<timestamp>&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>