🗂

ローカルのCloudflare WorkersからリモートのR2に接続しようとしてちょっとハマった

2023/11/18に公開

1時間くらい悩んでいたので備忘録としてメモっておきます。

環境

Wrangler ^3.15.0

現象

CloudflareのWebコンソール上からR2に格納したオブジェクトを、Wranglerで立ち上げたWorkersからアクセスしようとしたところ、そのようなオブジェクトは存在しないといった現象に遭遇した
wrangler.tomlの記述やソースコード上でのR2からgetする際のオブジェクト名の指定などくまなく確認したが誤りはなかった

なにが起きていたか

きまぐれで.wrangler/配下のファイルを眺めたところ、r2というディレクトリが作成されており、どうやらずっとそこにアクセスしていたっぽい、、
(いろんな記事を参考にしたけどpreview用のバケットを追加して、wrangler.tomlにpreview_bucket_nameとして記載しておけば勝手にそのバケットにつながってくれると思い込んでた😢)

追記

ここにめちゃくちゃ書いてた

preview_bucket_name optional

The preview name of this R2 bucket used during wrangler dev --remote.
When using Wrangler in the default local development mode, files will be written to local storage instead of the preview or production bucket.

https://developers.cloudflare.com/workers/wrangler/configuration/

解決方法(?)

このようなコマンドでローカルサーバを立ち上げていた

wrangler dev src/index.ts

これを以下ページを参考に--remoteフラグを追加したところ、リモートのR2を見に行くようになった

wrangler dev src/index.ts --remote

でもこれだとD1もリモートのものを見に行くのでうーんってなったけどそういうものだと思うことにした
(今回の自分のケースがまれで、ふつうはローカル環境だけで完結するからうれしいのかも)

参考: https://developers.cloudflare.com/workers/observability/local-development-and-testing/

終わりに

ドキュメントに当たるのはやっぱり大事

GitHubで編集を提案

Discussion