تواصل معنا
Webflow Premium Partner إيهاب فايز
العودة لأدوات AI Coding
البيانات والتحليلات

AWS S3 File Storage

تخزين وتقديم الملفات مع AWS S3 باستخدام عناوين URL موقعة مسبقاً ورفع متعدد الأجزاء وسياسات دورة الحياة.

Claude Code Cursor Copilot Windsurf Gemini CLI Codex

نظرة عامة

AWS S3 هي أكثر خدمات تخزين الكائنات استخداماً وتوفر تخزيناً غير محدود تقريباً بمتانة 99.999999999%. توفر AWS SDK v3 لـ JavaScript عميلاً وحدوياً (@aws-sdk/client-s3) يدعم جميع عمليات S3 بما في ذلك الرفع والتنزيل والإدراج والنسخ والحذف مع تحكم دقيق في الوصول.

لتطبيقات الويب عناوين URL الموقعة مسبقاً ضرورية. تتيح للعملاء رفع الملفات مباشرة إلى S3 من المتصفح دون كشف بيانات اعتماد AWS وتمكن الوصول المحدد بالوقت للكائنات الخاصة. تولد حزمة @aws-sdk/s3-request-presigner هذه العناوين. يتعامل الرفع متعدد الأجزاء مع الملفات الكبيرة بتقسيمها إلى أجزاء تُرفع بالتوازي وتُجمع من جانب الخادم.

يوفر S3 فئات تخزين لتحسين التكلفة وسياسات دورة الحياة للانتقالات والانتهاء التلقائي وإشعارات الأحداث لتشغيل وظائف Lambda عند الرفع. واجهة S3 المتوافقة تُنفذ أيضاً بواسطة خدمات مثل Cloudflare R2 وMinIO وDigitalOcean Spaces.

لمن هذه الأداة؟

  • رفع ملفات المستخدمين بعناوين URL موقعة مسبقاً من المتصفح
  • تقديم الأصول الثابتة والوسائط عبر S3 مع CloudFront CDN
  • تنفيذ رفع متعدد الأجزاء للتعامل مع الملفات الكبيرة
  • إعداد سياسات دورة الحياة لأرشفة السجلات إلى Glacier

التثبيت

إعداد Claude Code
npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner

الإعدادات

import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3"
import { getSignedUrl } from "@aws-sdk/s3-request-presigner"

const s3 = new S3Client({ region: "us-east-1" })

const uploadUrl = await getSignedUrl(s3,
  new PutObjectCommand({ Bucket: "my-bucket", Key: "uploads/photo.jpg" }),
  { expiresIn: 3600 }
)

await s3.send(new PutObjectCommand({
  Bucket: "my-bucket",
  Key: "uploads/file.pdf",
  Body: fileBuffer,
  ContentType: "application/pdf",
}))