From 6502032ba8a734002e961c2b2612c9a0f2e9b850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Tue, 15 Oct 2024 11:48:31 +0200 Subject: [PATCH] feat(blob): add `createCredentials()` to support presigned URLs (#323) --- docs/content/0.index.yml | 4 +- docs/content/1.docs/2.features/blob.md | 162 ++++++++++++++++++ .../4.changelog/blob-presigned-urls.md | 74 ++++++++ .../images/docs/blob-presigned-urls.png | Bin 0 -> 165603 bytes playground/app/pages/blob.vue | 32 +++- playground/package.json | 4 +- .../server/api/blob/sign/[...pathname].get.ts | 23 +++ pnpm-lock.yaml | 20 ++- .../server/api/_hub/blob/credentials.post.ts | 12 ++ src/runtime/blob/server/utils/blob.ts | 38 +++- src/types/blob.ts | 44 +++++ 11 files changed, 403 insertions(+), 10 deletions(-) create mode 100644 docs/content/4.changelog/blob-presigned-urls.md create mode 100644 docs/public/images/docs/blob-presigned-urls.png create mode 100644 playground/server/api/blob/sign/[...pathname].get.ts create mode 100644 src/runtime/blob/server/api/_hub/blob/credentials.post.ts diff --git a/docs/content/0.index.yml b/docs/content/0.index.yml index 5dfeab26..68014038 100644 --- a/docs/content/0.index.yml +++ b/docs/content/0.index.yml @@ -10,8 +10,8 @@ hero: light: '/images/landing/hero-light.svg' dark: '/images/landing/hero-dark.svg' headline: - label: "Vectorize is out" - to: /changelog/hub-vectorize + label: "Blob: Presigned URLs" + to: /changelog/blob-presigned-urls icon: i-ph-arrow-right features: - name: Cloud Hosting diff --git a/docs/content/1.docs/2.features/blob.md b/docs/content/1.docs/2.features/blob.md index 6ac3f2e2..a6377cf8 100644 --- a/docs/content/1.docs/2.features/blob.md +++ b/docs/content/1.docs/2.features/blob.md @@ -541,6 +541,68 @@ Returns a `BlobMultipartUpload` :: +### `createCredentials()` + +Creates temporary access credentials that can be optionally scoped to prefixes or objects. + +Useful to create presigned URLs to upload files to R2 from client-side ([see example](#create-presigned-urls-to-upload-files-to-r2)). + +::note +This method is only available in production or in development with `--remote` flag. +:: + +```ts +// Create credentials with default permission & scope (admin-read-write) +const credentials = await hubBlob().createCredentials() + +// Limit the scope to a specific object & permission +const credentials = await hubBlob().createCredentials({ + permission: 'object-read-write', + pathnames: ['only-this-file.png'] +}) +``` + +Read more about [creating presigned URLs to upload files to R2](#create-presigned-urls-to-upload-files-to-r2). + +#### Params + +::field-group + ::field{name="options" type="Object"} + The options to create the credentials. + ::collapsible + ::field{name="permission" type="string"} + The permission of the credentials, defaults to `'admin-read-write'`{lang=ts}. + ```ts + 'admin-read-write' | 'admin-read-only' | 'object-read-write' | 'object-read-only' + ``` + :: + ::field{name="ttl" type="number"} + The ttl of the credentials in seconds, defaults to `900`. + :: + ::field{name="pathnames" type="string[]"} + The pathnames to scope the credentials to. + :: + ::field{name="prefixes" type="string[]"} + The prefixes to scope the credentials to. + :: + :: + :: +:: + +#### Return + +Returns an object with the following properties: + +```ts +{ + accountId: string + bucketName: string + accessKeyId: string + secretAccessKey: string + sessionToken: string +} +``` + ## `ensureBlob()` `ensureBlob()` is a handy util to validate a `Blob` by checking its size and type: @@ -791,3 +853,103 @@ async function loadMore() { ``` :: + +### Create presigned URLs to upload files to R2 + +Presigned URLs can be used to upload files to R2 from client-side without using an API key. + +:img{src="/images/docs/blob-presigned-urls.png" alt="NuxtHub presigned URLs to upload files to R2" width="915" height="515" class="rounded"} + +As we use [aws4fetch](https://github.com/mhart/aws4fetch) to sign the request and [zod](https://github.com/colinhacks/zod) to validate the request, we need to install the packages: + +```bash [Terminal] +npx nypm i aws4fetch zod +``` + +First, we need to create an API route that will return a presigned URL to the client. + +```ts [server/api/blob/sign/\[...pathname\\].get.ts] +import { z } from 'zod' +import { AwsClient } from 'aws4fetch' + +export default eventHandler(async (event) => { + const { pathname } = await getValidatedRouterParams(event, z.object({ + pathname: z.string().min(1) + }).parse) + // Create credentials with the right permission & scope + const blob = hubBlob() + const { accountId, bucketName, ...credentials } = await blob.createCredentials({ + permission: 'object-read-write', + pathnames: [pathname] + }) + // Create the presigned URL + const client = new AwsClient(credentials) + const endpoint = new URL( + pathname, + `https://${bucketName}.${accountId}.r2.cloudflarestorage.com` + ) + const { url } = await client.sign(endpoint, { + method: 'PUT', + aws: { signQuery: true } + }) + // Return the presigned URL to the client + return { url } +}) +``` + +::important +Make sure to authenticate the request on the server side to avoid letting anyone upload files to your R2 bucket. Checkout [nuxt-auth-utils](https://github.com/atinux/nuxt-auth-utils) as one of the possible solutions. +:: + +Next, we need to create the Vue page to upload a file to our R2 bucket using the presigned URL: + +```vue [pages/upload.vue] + + + +``` + +At this stage, you will get a CORS error because we did not setup the CORS on our R2 bucket. + +To setup the CORS on our R2 bucket: +- Open the project on NuxtHub Admin with `npx nuxthub manage` +- Go to the **Blob tab** (make sure to be on the right environment: production or preview) +- Click on the Cloudflare icon on the top right corner +- Once on Cloudflare, Go to the `Settings` tab of your R2 bucket +- Scroll to **CORS policy** +- Click on `Edit CORS policy` +- Update the allowed origins with your origins by following this example: +```json +[ + { + "AllowedOrigins": [ + "http://localhost:3000", + "https://my-app.nuxt.dev" + ], + "AllowedMethods": [ + "GET", + "PUT" + ], + "AllowedHeaders": [ + "*" + ] + } +] +``` +- Save the changes + +That's it! You can now upload files to R2 using the presigned URLs. + +::callout +Read more about presigned URLs on Cloudflare's [official documentation](https://developers.cloudflare.com/r2/api/s3/presigned-urls/). +:: diff --git a/docs/content/4.changelog/blob-presigned-urls.md b/docs/content/4.changelog/blob-presigned-urls.md new file mode 100644 index 00000000..a64ce86c --- /dev/null +++ b/docs/content/4.changelog/blob-presigned-urls.md @@ -0,0 +1,74 @@ +--- +title: Blob Presigned URLs +description: "It is now possible to upload files to your R2 bucket using presigned URLs with zero configuration." +date: 2024-10-15 +image: '/images/docs/blob-presigned-urls.png' +authors: + - name: Sebastien Chopin + avatar: + src: https://avatars.githubusercontent.com/u/904724?v=4 + to: https://x.com/atinux + username: atinux +--- + +It is now possible to upload files to your R2 bucket using presigned URLs with zero configuration. + +::tip +This feature is available on all [NuxtHub plans](/pricing) and comes with the [v0.7.32](https://github.com/nuxt-hub/core/releases/tag/v0.7.32) release of `@nuxthub/core`. +:: + +## Why presigned URLs? + +By allowing users to upload files to your R2 bucket using presigned URLs, you can: +- Reduce the server load +- Direct client-to-storage uploads, saving bandwidth and costs +- Use a secure and performant way to upload files to your R2 bucket +- By-pass the Workers limitation (100MiB max payload size) using regular upload + +## How does it work? + +This is a diagrame of the process of creating a presigned URL and uploading a file to R2: + +:img{src="/images/docs/blob-presigned-urls.png" alt="NuxtHub presigned URLs to upload files to R2" width="915" height="515" class="rounded"} + +In order to create the presigned URL, we created the [`hubBlob().createCredentials()`](/docs/features/blob#createcredentials) method. + +This method will create temporary access credentials that can be optionally scoped to prefixes or objects in your bucket. + +```ts +const { + accountId, + bucketName, + accessKeyId, + secretAccessKey, + sessionToken +} = await hubBlob().createCredentials({ + permission: 'object-read-write', + pathnames: ['only-this-file.png'] +}) +``` + +With these credentials, you can now use the [aws4fetch](https://github.com/mhart/aws4fetch) library to create a presigned URL that can be used to upload a file to R2. + +```ts +import { AwsClient } from 'aws4fetch' + +// Create the presigned URL +const client = new AwsClient({ accessKeyId, secretAccessKey, sessionToken }) +const endpoint = new URL( + '/only-this-file.png', + `https://${bucketName}.${accountId}.r2.cloudflarestorage.com` +) +const { url } = await client.sign(endpoint, { + method: 'PUT', + aws: { signQuery: true } +}) +``` + +::callout{icon="i-ph-book-open-duotone" to="/docs/features/blob#create-presigned-urls-to-upload-files-to-r2"} +Checkout the example on how to create a presigned URL with NuxtHub. +:: + +## Alternative + +If you don't want to use presigned URLs and want to upload files bigger than 100MiB, you can use the [NuxtHub Multipart Upload](/docs/features/blob#handlemultipartuploadd) feature. diff --git a/docs/public/images/docs/blob-presigned-urls.png b/docs/public/images/docs/blob-presigned-urls.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f58c7fbee22ec329c0ab009c9bb03d7ce1ebae GIT binary patch literal 165603 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 ACjbBd literal 0 HcmV?d00001 diff --git a/playground/app/pages/blob.vue b/playground/app/pages/blob.vue index 0f281072..acc936e9 100644 --- a/playground/app/pages/blob.vue +++ b/playground/app/pages/blob.vue @@ -2,6 +2,7 @@ const loading = ref(false) const loadingProgress = ref(undefined) const newFilesValue = ref([]) +const useSignedUrl = ref(false) const uploadRef = ref() const folded = ref(false) const prefixes = ref([]) @@ -9,7 +10,7 @@ const limit = ref(5) const prefix = computed(() => prefixes.value?.[prefixes.value.length - 1]) const toast = useToast() -const { data: blobData } = await useFetch('/api/blob', { +const { data: blobData, refresh } = await useFetch('/api/blob', { query: { folded, prefix, @@ -45,6 +46,30 @@ async function addFile() { } loading.value = true + if (useSignedUrl.value) { + for (const file of newFilesValue.value) { + const url = await $fetch(`/api/blob/sign/${file.name}`, { + query: { + contentType: file.type, + contentLength: file.size + } + }) + await $fetch(url, { + method: 'PUT', + body: file + }) + .then(() => { + toast.add({ title: `File ${file.name} uploaded.` }) + refresh() + }) + .catch((err) => { + toast.add({ title: `Failed to upload ${file.name}.`, description: err.message, color: 'red' }) + }) + } + loading.value = false + return + } + try { const uploadedFiles = await uploadFiles(newFilesValue.value) files.value!.push(...uploadedFiles) @@ -179,7 +204,10 @@ async function deleteFile(pathname: string) { - +
    + + +
    diff --git a/playground/package.json b/playground/package.json index 7cba31cb..d27c5a79 100644 --- a/playground/package.json +++ b/playground/package.json @@ -16,10 +16,12 @@ "@nuxthub/core": "latest", "@nuxtjs/mdc": "^0.9.0", "ai": "^3.4.7", + "aws4fetch": "^1.0.20", "drizzle-orm": "^0.33.0", "nuxt": "^3.13.2", "postgres": "^3.4.4", - "puppeteer": "^23.5.0" + "puppeteer": "^23.5.0", + "zod": "^3.23.8" }, "devDependencies": { "@nuxt/devtools": "latest" diff --git a/playground/server/api/blob/sign/[...pathname].get.ts b/playground/server/api/blob/sign/[...pathname].get.ts new file mode 100644 index 00000000..75f73d31 --- /dev/null +++ b/playground/server/api/blob/sign/[...pathname].get.ts @@ -0,0 +1,23 @@ +import { AwsClient } from 'aws4fetch' + +/* +** Create a signed url to upload a file to R2 +** https://developers.cloudflare.com/r2/api/s3/presigned-urls/#presigned-url-alternative-with-workers +*/ +export default eventHandler(async (event) => { + const { pathname } = await getValidatedRouterParams(event, z.object({ + pathname: z.string().min(1) + }).parse) + const { accountId, bucketName, ...credentials } = await hubBlob().createCredentials({ + permission: 'object-read-write', + pathnames: [pathname] + }) + const client = new AwsClient(credentials) + const endpoint = new URL(pathname, `https://${bucketName}.${accountId}.r2.cloudflarestorage.com`) + + const { url } = await client.sign(endpoint, { + method: 'PUT', + aws: { signQuery: true } + }) + return url +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a32ed39c..c88109b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -194,13 +194,16 @@ importers: version: 2.18.6(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.5(@types/node@22.7.5)(terser@5.34.1))(vue@3.5.6(typescript@5.6.3))(webpack-sources@3.2.3) '@nuxthub/core': specifier: latest - version: 0.7.30(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.5(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3) + version: 0.7.31(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.5(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3) '@nuxtjs/mdc': specifier: ^0.9.0 version: 0.9.0(magicast@0.3.5)(rollup@4.21.3)(webpack-sources@3.2.3) ai: specifier: ^3.4.7 version: 3.4.7(react@18.3.1)(sswr@2.1.0(svelte@4.2.19))(svelte@4.2.19)(vue@3.5.6(typescript@5.6.3))(zod@3.23.8) + aws4fetch: + specifier: ^1.0.20 + version: 1.0.20 drizzle-orm: specifier: ^0.33.0 version: 0.33.0(@cloudflare/workers-types@4.20241011.0)(@opentelemetry/api@1.9.0)(postgres@3.4.4)(react@18.3.1) @@ -213,6 +216,9 @@ importers: puppeteer: specifier: ^23.5.0 version: 23.5.0(typescript@5.6.3) + zod: + specifier: ^3.23.8 + version: 3.23.8 devDependencies: '@nuxt/devtools': specifier: latest @@ -1851,8 +1857,8 @@ packages: '@nuxthq/studio@2.1.1': resolution: {integrity: sha512-NQMf1Howrr5D7fDRMSpYyjQSi3/RzUT91KfcLxGz3Q2iAq0y94GSlPCpYMqYId9CgcfG2OIIDm40/dFusQZIvQ==} - '@nuxthub/core@0.7.30': - resolution: {integrity: sha512-7DCDFmxmIBMijZTX0LOZZ3PNj8pIXxJ0HaOrMaTyh6TXSOGqRKt1zsM/k4baUhMyNKem+2dLv7326g2YieG0FA==} + '@nuxthub/core@0.7.31': + resolution: {integrity: sha512-2pCjk+QPtYIrO56/bi2zgoW5/12Q0m1nNqoPBOLzbthC07HTqIcnKe2wetwlpD6YKDJZDKyZgm8ypDbkUyBI/A==} '@nuxtjs/color-mode@3.5.1': resolution: {integrity: sha512-GRHF3WUwX6fXIiRVlngNq1nVDwrVuP6dWX1DRmox3QolzX0eH1oJEcFr/lAm1nkT71JVGb8mszho9w+yHJbePw==} @@ -3160,6 +3166,9 @@ packages: peerDependencies: postcss: ^8.1.0 + aws4fetch@1.0.20: + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -9771,7 +9780,7 @@ snapshots: - utf-8-validate - webpack-sources - '@nuxthub/core@0.7.30(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.5(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3)': + '@nuxthub/core@0.7.31(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.5(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3)': dependencies: '@cloudflare/workers-types': 4.20241011.0 '@nuxt/devtools-kit': 1.6.0(magicast@0.3.5)(rollup@4.21.3)(vite@5.4.5(@types/node@22.7.5)(terser@5.34.1))(webpack-sources@3.2.3) @@ -9787,6 +9796,7 @@ snapshots: ofetch: 1.4.1 pathe: 1.1.2 pkg-types: 1.2.1 + std-env: 3.7.0 ufo: 1.5.4 uncrypto: 0.1.3 unstorage: 1.12.0(ioredis@5.4.1) @@ -11658,6 +11668,8 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 + aws4fetch@1.0.20: {} + axobject-query@4.1.0: {} b4a@1.6.7: {} diff --git a/src/runtime/blob/server/api/_hub/blob/credentials.post.ts b/src/runtime/blob/server/api/_hub/blob/credentials.post.ts new file mode 100644 index 00000000..0fca0dc6 --- /dev/null +++ b/src/runtime/blob/server/api/_hub/blob/credentials.post.ts @@ -0,0 +1,12 @@ +import { eventHandler, readBody } from 'h3' +import { hubBlob } from '../../../utils/blob' +import { requireNuxtHubAuthorization } from '../../../../../utils/auth' +import { requireNuxtHubFeature } from '../../../../../utils/features' + +export default eventHandler(async (event) => { + await requireNuxtHubAuthorization(event) + requireNuxtHubFeature('blob') + + const options = await readBody(event) + return hubBlob().createCredentials(options) +}) diff --git a/src/runtime/blob/server/utils/blob.ts b/src/runtime/blob/server/utils/blob.ts index 939ef495..b3342c49 100644 --- a/src/runtime/blob/server/utils/blob.ts +++ b/src/runtime/blob/server/utils/blob.ts @@ -8,7 +8,7 @@ import { defu } from 'defu' import { randomUUID } from 'uncrypto' import { parse } from 'pathe' import { joinURL } from 'ufo' -import type { BlobType, FileSizeUnit, BlobUploadedPart, BlobListResult, BlobMultipartUpload, HandleMPUResponse, BlobMultipartOptions, BlobUploadOptions, BlobPutOptions, BlobEnsureOptions, BlobObject, BlobListOptions } from '@nuxthub/core' +import type { BlobType, FileSizeUnit, BlobUploadedPart, BlobListResult, BlobMultipartUpload, HandleMPUResponse, BlobMultipartOptions, BlobUploadOptions, BlobPutOptions, BlobEnsureOptions, BlobObject, BlobListOptions, BlobCredentialsOptions, BlobCredentials } from '@nuxthub/core' import { streamToArrayBuffer } from '../../../utils/stream' import { requireNuxtHubFeature } from '../../../utils/features' import { useRuntimeConfig } from '#imports' @@ -136,6 +136,18 @@ interface HubBlob { * @see https://hub.nuxt.com/docs/features/blob#handleupload */ handleUpload(event: H3Event, options?: BlobUploadOptions): Promise + /** + * Creates temporary access credentials that can be optionally scoped to prefixes or objects. + * + * Useful to create a signed url to upload directory to R2 from client-side. + * + * Only available in production or in development with `--remote` flag. + * + * @example ```ts + * const { accountId, bucketName, accessKeyId, secretAccessKey, sessionToken } = await hubBlob().createCredentials() + * ``` + */ + createCredentials(options?: BlobCredentialsOptions): Promise } /** @@ -306,6 +318,23 @@ export function hubBlob(): HubBlob { } return objects + }, + async createCredentials(options: BlobCredentialsOptions = {}): Promise { + if (import.meta.dev) { + throw createError('hubBlob().createCredentials() is only available in production or in development with `--remote` flag.') + } + if (!process.env.NUXT_HUB_PROJECT_DEPLOY_TOKEN) { + throw createError('Missing `NUXT_HUB_PROJECT_DEPLOY_TOKEN` environment variable, make sure to deploy with `npx nuxthub deploy` or with the NuxtHub Admin.') + } + const env = process.env.NUXT_HUB_ENV || hub.env || 'production' + return await $fetch(`/api/projects/${hub.projectKey}/blob/${env}/credentials`, { + baseURL: hub.url, + method: 'POST', + body: options, + headers: { + authorization: `Bearer ${process.env.NUXT_HUB_PROJECT_DEPLOY_TOKEN}` + } + }) } } return { @@ -442,6 +471,13 @@ export function proxyHubBlob(projectUrl: string, secretKey?: string): HubBlob { body: await readFormData(event), query: options }) + }, + + async createCredentials(options: BlobCredentialsOptions = {}): Promise { + return await blobAPI('/credentials', { + method: 'POST', + body: options + }) } } diff --git a/src/types/blob.ts b/src/types/blob.ts index 1a150667..5b07c2e0 100644 --- a/src/types/blob.ts +++ b/src/types/blob.ts @@ -210,3 +210,47 @@ export interface BlobListResult { */ folders?: string[] } + +export interface BlobCredentialsOptions { + /** + * The permission of the credentials. + * @default 'admin-read-write' + */ + permission?: 'admin-read-write' | 'admin-read-only' | 'object-read-write' | 'object-read-only' + /** + * The ttl of the credentials in seconds. + * @default 900 + */ + ttl?: number + /** + * The prefixes to scope the credentials to. + */ + prefixes?: string[] + /** + * The pathnames to scope the credentials to. + */ + pathnames?: string[] +} + +export interface BlobCredentials { + /** + * The Cloudflare account id + */ + accountId: string + /** + * The Cloudflare R2 bucket name + */ + bucketName: string + /** + * The access key id for the R2 bucket + */ + accessKeyId: string + /** + * The secret access key for the R2 bucket + */ + secretAccessKey: string + /** + * The session token for the R2 bucket + */ + sessionToken: string +}