From f891589ac49b41fb0c1fe71bc22d8768e3cab925 Mon Sep 17 00:00:00 2001 From: Mitch Goudy Date: Tue, 14 Jul 2026 14:35:02 -0600 Subject: [PATCH 1/3] fix: rename Apply button to Load logs (matches README) --- examples/audit-log-viewer/src/locations/Page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/audit-log-viewer/src/locations/Page.tsx b/examples/audit-log-viewer/src/locations/Page.tsx index 32b7f52a9..55c541ccf 100644 --- a/examples/audit-log-viewer/src/locations/Page.tsx +++ b/examples/audit-log-viewer/src/locations/Page.tsx @@ -76,7 +76,7 @@ const Page = () => { load(startDate, endDate); }} > - Apply + Load logs From 43f0cb0810d1711e8efe0bbc0c74620bda548114 Mon Sep 17 00:00:00 2001 From: Mitch Goudy Date: Tue, 14 Jul 2026 14:35:09 -0600 Subject: [PATCH 2/3] fix: remove stale "S3 is the only impl" comment from LogStorageProvider --- examples/audit-log-viewer/functions/lib/storage/types.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/audit-log-viewer/functions/lib/storage/types.ts b/examples/audit-log-viewer/functions/lib/storage/types.ts index 682d5c0ea..4116d2bdc 100644 --- a/examples/audit-log-viewer/functions/lib/storage/types.ts +++ b/examples/audit-log-viewer/functions/lib/storage/types.ts @@ -11,7 +11,6 @@ export interface ListResult { truncated: boolean; } -/** Seam for a future second storage provider (Azure/GCS) — S3 is the only impl for now. */ export interface LogStorageProvider { listLogFiles(startDate: string, endDate: string): Promise; } From e595a19f27968fe14c87fded50362c3067cf3d0c Mon Sep 17 00:00:00 2001 From: Mitch Goudy Date: Tue, 14 Jul 2026 14:35:26 -0600 Subject: [PATCH 3/3] fix: document forcePathStyle deprecation constraint in s3.ts and README --- examples/audit-log-viewer/functions/lib/storage/s3.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/audit-log-viewer/functions/lib/storage/s3.ts b/examples/audit-log-viewer/functions/lib/storage/s3.ts index 72badc2cc..7bb14c343 100644 --- a/examples/audit-log-viewer/functions/lib/storage/s3.ts +++ b/examples/audit-log-viewer/functions/lib/storage/s3.ts @@ -19,8 +19,14 @@ const URL_TTL_SECONDS = 900; /** * Contentful Functions do not support node:http/https — every client must use - * the fetch-based handler. forcePathStyle keeps S3 hostnames bucket-independent - * so the manifest allowNetworks list stays static. + * the fetch-based handler. + * + * forcePathStyle keeps S3 hostnames bucket-independent so the manifest + * allowNetworks wildcard ("*.amazonaws.com") stays static. Note: path-style + * addressing is deprecated by AWS for buckets created after Sep 2020 and is + * unsupported in some newer opt-in regions. If you encounter NoSuchBucket or + * endpoint errors, remove forcePathStyle and add your bucket's regional + * hostname to allowNetworks in contentful-app-manifest.json instead. */ export async function createS3Client(cfg: StorageConfig): Promise { let credentials: { accessKeyId: string; secretAccessKey: string; sessionToken?: string } = {