"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تكوين AWS SDK لـ PHP مع S3

تكوين AWS SDK لـ PHP مع S3

تم النشر بتاريخ 2024-11-08
تصفح:400

تعد Amazon Web Services (AWS) منصة قوية تقدم مجموعة واسعة من الخدمات للمطورين والشركات. ومن بين هذه الخدمات، تعد Amazon Simple Storage Service (S3) واحدة من أكثر الخدمات شهرةً واستخدامًا على نطاق واسع. للتفاعل مع S3 برمجيًا، يمكنك استخدام AWS SDK لـ PHP. في هذه المقالة، سنرشدك خلال عملية تكوين AWS SDK لـ PHP مع S3.

Configuring AWS SDK for PHP with S3

المتطلبات الأساسية

قبل أن نبدأ، تأكد من أن لديك ما يلي:

  • حساب AWS
  • معرف مفتاح الوصول إلى AWS ومفتاح الوصول السري
  • PHP 5.6 أو أعلى
  • تم تثبيت الملحن

تثبيت

لتثبيت AWS SDK لـ PHP، يمكنك استخدام Composer. قم بتشغيل الأمر التالي في جهازك الطرفي:

composer require aws/aws-sdk-php

سيعمل هذا الأمر على تثبيت أحدث إصدار من AWS SDK لـ PHP في مشروعك.

إعدادات

بمجرد تثبيت SDK، يتعين عليك تكوينه باستخدام معرف مفتاح الوصول إلى AWS ومفتاح الوصول السري. يمكنك القيام بذلك عن طريق إنشاء ملف تكوين أو عن طريق تعيين متغيرات البيئة.

ملف التكوين

قم بإنشاء ملف جديد باسم config.php في مشروعك وأضف الكود التالي:

 'us-east-1',
    'version' => 'latest',
    'credentials' => [
        'key' => 'YOUR_ACCESS_KEY_ID',
        'secret' => 'YOUR_SECRET_ACCESS_KEY',
    ]
]);

$s3Client = $sdk->createS3();

استبدل YOUR_ACCESS_KEY_ID و YOUR_SECRET_ACCESS_KEY بمعرف مفتاح وصول AWS الفعلي ومفتاح الوصول السري.

متغيرات البيئة

بدلاً من ذلك، يمكنك تعيين معرف مفتاح وصول AWS ومفتاح الوصول السري كمتغيرات بيئة:

export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY

ثم قم بإنشاء عميل S3 كما يلي:

 'us-east-1',
    'version' => 'latest',
]);

$s3Client = $sdk->createS3();

هل أنت مستعد لمعرفة المزيد حول AWS وPHP؟ تحقق من مقالاتنا الأخرى حول تكوين AWS SSO وإصلاح أخطاء رفض إذن laravel.

الاستخدام

الآن بعد أن قمت بتكوين AWS SDK لـ PHP مع S3، يمكنك البدء في استخدامه للتفاعل مع مجموعات S3 الخاصة بك. فيما يلي مثال لكيفية إدراج جميع المجموعات الموجودة في حسابك:

$buckets = $s3Client->listBuckets();
foreach ($buckets['Buckets'] as $bucket) {
    echo $bucket['Name'] . PHP_EOL;
}

بالتأكيد، فيما يلي بعض الأمثلة الإضافية وأفضل الممارسات لاستخدام AWS SDK لـ PHP مع S3.

تحميل ملف

لتحميل ملف إلى حاوية S3، يمكنك استخدام طريقة putObject. إليك مثال:

$bucketName = 'my-bucket';
$keyName = 'my-file.txt';
$filePath = '/path/to/my-file.txt';

$result = $s3Client->putObject([
    'Bucket' => $bucketName,
    'Key' => $keyName,
    'SourceFile' => $filePath,
]);

echo $result['ObjectURL'] . PHP_EOL;

سيقوم هذا الرمز بتحميل الملف الموجود في /path/to/my-file.txt إلى مجموعة my-bucket وطباعة عنوان URL للملف الذي تم تحميله.

تنزيل ملف

لتنزيل ملف من حاوية S3، يمكنك استخدام طريقة getObject. إليك مثال:

$bucketName = 'my-bucket';
$keyName = 'my-file.txt';
$filePath = '/path/to/downloaded-file.txt';

$result = $s3Client->getObject([
    'Bucket' => $bucketName,
    'Key' => $keyName,
    'SaveAs' => $filePath,
]);

echo $result['ContentLength'] . ' bytes downloaded.' . PHP_EOL;

سيقوم هذا الرمز بتنزيل الملف بالمفتاح my-file.txt من مجموعة my-bucket وحفظه في /path/to/downloaded-file.txt.

كائنات القائمة

لإدراج الكائنات في حاوية S3، يمكنك استخدام طريقة listObjects. إليك مثال:

$bucketName = 'my-bucket';

$result = $s3Client->listObjects([
    'Bucket' => $bucketName,
]);

foreach ($result['Contents'] as $object) {
    echo $object['Key'] . PHP_EOL;
}

سيقوم هذا الرمز بسرد جميع الكائنات الموجودة في مجموعة دلوتي وطباعة مفاتيحها.

أفضل الممارسات - AWS SDK PHP S3

إليك بعض أفضل الممارسات التي يجب وضعها في الاعتبار عند استخدام AWS SDK لـ PHP مع S3:

  • استخدم أدوار وسياسات IAM لإدارة الوصول إلى موارد S3 الخاصة بك.
  • استخدم الإصدار للاحتفاظ بإصدارات متعددة من الكائنات الخاصة بك والحماية من الحذف غير المقصود.
  • استخدم سياسات دورة الحياة لإدارة تخزين العناصر والاحتفاظ بها تلقائيًا.
  • استخدم تسريع النقل لتحسين أداء التحميلات والتنزيلات.
  • استخدم التشفير من جانب الخادم لحماية بياناتك أثناء عدم النشاط.
  • استخدم إشعارات الأحداث لبدء الإجراءات بناءً على التغييرات التي تطرأ على كائنات S3 الخاصة بك.

بالتأكيد، إليك بعض النصائح الإضافية لاستخدام AWS SDK لـ PHP مع S3 في Laravel.

استخدام AWS SDK لـ PHP مع Laravel

يحتوي Laravel على دعم مدمج لـ AWS SDK لـ PHP، مما يجعل من السهل استخدام S3 في تطبيقات Laravel الخاصة بك. فيما يلي بعض النصائح لاستخدام SDK مع Laravel:

  • قم بتثبيت حزمة AWS SDK لحزمة PHP عبر Composer:
composer require aws/aws-sdk-php
  • قم بتكوين بيانات اعتماد AWS الخاصة بك في ملف .env الخاص بك:
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_DEFAULT_REGION=your_region
  • استخدم واجهة التخزين للتفاعل مع S3:
use Illuminate\Support\Facades\Storage;

// Upload a file
Storage::disk('s3')->put('my-file.txt', file_get_contents('/path/to/my-file.txt'));

// Download a file
Storage::disk('s3')->download('my-file.txt', '/path/to/downloaded-file.txt');

// List the objects in a bucket
$objects = Storage::disk('s3')->listContents('my-bucket');

foreach ($objects as $object) {
    echo $object['path'] . PHP_EOL;
}
  • استخدم محول Flysystem الخاص بـ Laravel لتخصيص سلوك واجهة التخزين:
use Illuminate\Support\ServiceProvider;
use League\Flysystem\AwsS3V3\AwsS3V3Adapter;
use Aws\S3\S3Client;

class S3ServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton('filesystems.disks.s3', function ($app) {
            return new AwsS3V3Adapter(
                new S3Client([
                    'region' => config('filesystems.disks.s3.region'),
                    'version' => 'latest',
                    'credentials' => [
                        'key' => config('filesystems.disks.s3.key'),
                        'secret' => config('filesystems.disks.s3.secret'),
                    ],
                ]),
                config('filesystems.disks.s3.bucket')
            );
        });
    }
}
  • استخدم نظام قائمة الانتظار الخاص بـ Laravel لتنفيذ عمليات S3 بشكل غير متزامن:
use Illuminate\Support\Facades\Storage;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class UploadFile implements ShouldQueue
{
    use InteractsWithQueue;

    protected $filePath;

    public function __construct($filePath)
    {
        $this->filePath = $filePath;
    }

    public function handle()
    {
        Storage::disk('s3')->put('my-file.txt', file_get_contents($this->filePath));
    }
}

أفضل الممارسات - AWS SDK PHP Laravel

إليك بعض أفضل الممارسات التي يجب وضعها في الاعتبار عند استخدام AWS SDK لـ PHP مع S3 في Laravel:

  • استخدم دعم Laravel المدمج لـ AWS SDK لـ PHP لتبسيط التعليمات البرمجية الخاصة بك وتقليل كمية التعليمات البرمجية النمطية التي تحتاج إلى كتابتها.
  • استخدم نظام قائمة انتظار Laravel لتنفيذ عمليات S3 بشكل غير متزامن، مما قد يؤدي إلى تحسين أداء تطبيقات Laravel وقابلية التوسع.
  • استخدم محول Flysystem الخاص بـ Laravel لتخصيص سلوك واجهة التخزين ودمج S3 مع ميزات Laravel الأخرى، مثل نظام ذاكرة التخزين المؤقت الخاص بـ Laravel.
  • استخدم نظام قائمة انتظار Laravel لتنفيذ عمليات S3 بشكل غير متزامن، مما قد يؤدي إلى تحسين أداء تطبيقات Laravel وقابلية التوسع.
  • استخدم ميزات التشفير في Laravel لتشفير البيانات الحساسة قبل تخزينها في S3.
  • استخدم ميزات التسجيل في Laravel لتسجيل أي أخطاء أو استثناءات تحدث عند استخدام AWS SDK لـ PHP مع S3.

خاتمة

في هذه المقالة، قمنا بتغطية أساسيات تكوين AWS SDK لـ PHP مع S3 وقدمنا ​​بعض الأمثلة الإضافية وأفضل الممارسات لاستخدام SDK مع S3. لقد قدمنا ​​أيضًا بعض النصائح الإضافية لاستخدام SDK مع S3 في Laravel. باتباع هذه الإرشادات، يمكنك التأكد من أن تطبيقات PHP الخاصة بك آمنة وفعالة وقابلة للتطوير.


هل تريد معرفة المزيد عن AWS وPHP؟ اطلع على مقالاتنا الأخرى حول DevOps Mind.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/fernandomullerjr/configuring-aws-sdk-for-php-with-s3-257f؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3