1
0
Fork 0
mirror of https://github.com/imjasonh/terraform-playground synced 2026-07-06 23:12:22 +00:00

use R2 CRUD example

Signed-off-by: Jason Hall <jason@chainguard.dev>
This commit is contained in:
Jason Hall 2023-08-14 10:37:13 -04:00
parent f5ae8b5cb2
commit 7fa6da5a38
Failed to extract signature

View file

@ -1,16 +1,38 @@
// https://developers.cloudflare.com/r2/api/workers/workers-api-usage/#4-access-your-r2-bucket-from-your-worker
export default {
async fetch(request, env, ctx) {
let value = await env.KV.get("foo");
await env.KV.put("foo", value + "r");
async fetch(request, env) {
const url = new URL(request.url);
const key = url.pathname.slice(1);
let obj = await env.R2.get("foo");
if (!obj) {
obj = "ba";
} else {
obj = await obj.text();
switch (request.method) {
case 'PUT':
await env.R2.put(key, request.body);
return new Response(`Put ${key} successfully!`);
case 'GET':
const object = await env.R2.get(key);
if (object === null) {
return new Response('Object Not Found', { status: 404 });
}
const headers = new Headers();
object.writeHttpMetadata(headers);
headers.set('etag', object.httpEtag);
return new Response(object.body, {
headers,
});
case 'DELETE':
await env.R2.delete(key);
return new Response('Deleted!');
default:
return new Response('Method Not Allowed', {
status: 405,
headers: {
Allow: 'PUT, GET, DELETE',
},
});
}
await env.R2.put("foo", obj + "r");
return new Response(`${value} / ${obj}`);
},
};