S3 を使用した PHP 用の AWS SDK の設定

王林
リリース: 2024-08-26 06:30:35
オリジナル
645 人が閲覧しました

アマゾン ウェブ サービス (AWS) は、開発者や企業に幅広いサービスを提供する強力なプラットフォームです。これらのサービスの中で、Amazon Simple Storage Service (S3) は最も人気があり、広く使用されているサービスの 1 つです。 S3 をプログラムで操作するには、AWS SDK for PHP を使用できます。この記事では、S3 を使用して AWS SDK for PHP を設定するプロセスについて説明します。

Configuring AWS SDK for PHP with S3

前提条件

始める前に、以下のものがあることを確認してください:

  • AWS アカウント
  • AWS アクセス キー ID とシークレット アクセス キー
  • PHP 5.6 以降
  • Composer がインストールされました

インストール

AWS SDK for PHP をインストールするには、Composer を使用できます。ターミナルで次のコマンドを実行します:

composer require aws/aws-sdk-php
ログイン後にコピー
ログイン後にコピー

このコマンドは、AWS SDK for PHP の最新バージョンをプロジェクトにインストールします。

構成

SDK をインストールしたら、AWS アクセス キー ID とシークレット アクセス キーを使用して SDK を設定する必要があります。これを行うには、構成ファイルを作成するか、環境変数を設定します。

設定ファイル

プロジェクトに config.php という名前の新しいファイルを作成し、次のコードを追加します。

<?php
require 'vendor/autoload.php';

use Aws\Sdk;

$sdk = new Sdk([
    'region' => '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 アクセス キー ID とシークレット アクセス キーに置き換えます。

環境変数

また、AWS アクセス キー ID とシークレット アクセス キーを環境変数として設定することもできます。

export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
ログイン後にコピー

次に、次のように S3 クライアントを作成します。

<?php
require 'vendor/autoload.php';

use Aws\Sdk;

$sdk = new Sdk([
    'region' => 'us-east-1',
    'version' => 'latest',
]);

$s3Client = $sdk->createS3();
ログイン後にコピー

AWS と PHP について詳しく知る準備はできましたか? AWS の SSO 設定および laravel 権限拒否エラーの修正に関する他の記事をご覧ください。

使用法

S3 を使用して AWS SDK for PHP を設定したので、それを使用して S3 バケットと対話できるようになります。アカウント内のすべてのバケットを一覧表示する方法の例を次に示します:

$buckets = $s3Client->listBuckets();
foreach ($buckets['Buckets'] as $bucket) {
    echo $bucket['Name'] . PHP_EOL;
}
ログイン後にコピー

もちろん、S3 で AWS SDK for PHP を使用するための追加の例とベストプラクティスをいくつか紹介します。

ファイルのアップロード

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;
}
ログイン後にコピー

このコードは、my-bucket バケット内のすべてのオブジェクトをリストし、それらのキーを出力します。

ベストプラクティス - AWS SDK + PHP + S3

S3 で AWS SDK for PHP を使用するときに留意すべきベストプラクティスをいくつか示します:

  • IAM ロールとポリシーを使用して、S3 リソースへのアクセスを管理します。
  • バージョン管理を使用してオブジェクトの複数のバージョンを保持し、誤って削除されないようにします。
  • ライフサイクル ポリシーを使用して、オブジェクトのストレージと保持を自動的に管理します。
  • 転送アクセラレーションを使用して、アップロードとダウンロードのパフォーマンスを向上させます。
  • サーバー側の暗号化を使用して、保管中のデータを保護します。
  • イベント通知を使用して、S3 オブジェクトへの変更に基づいてアクションをトリガーします。

もちろん、Laravel の S3 で AWS SDK for PHP を使用するための追加のヒントをいくつか紹介します。

Laravel での AWS SDK for PHP の使用

Laravel には AWS SDK for PHP のサポートが組み込まれているため、Laravel アプリケーションで S3 を簡単に使用できます。 Laravel で SDK を使用するためのヒントをいくつか示します:

  • Composer 経由で AWS SDK for PHP パッケージをインストールします。
composer require aws/aws-sdk-php
ログイン後にコピー
ログイン後にコピー
  • .env ファイルで AWS 認証情報を構成します。
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;
}
ログイン後にコピー
  • Laravel の Flysystem アダプターを使用して、ストレージ ファサードの動作をカスタマイズします。
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

Laravel の S3 で AWS SDK for PHP を使用するときに留意すべきベストプラクティスをいくつか示します:

  • Laravel の AWS SDK for PHP の組み込みサポートを使用して、コードを簡素化し、記述する必要がある定型コードの量を削減します。
  • Laravel のキュー システムを使用して S3 操作を非同期に実行すると、Laravel アプリケーションのパフォーマンスとスケーラビリティが向上します。
  • Laravel の Flysystem アダプターを使用して、ストレージ ファサードの動作をカスタマイズし、S3 を Laravel のキャッシュ システムなどの他の Laravel 機能と統合します。
  • Laravel のキュー システムを使用して S3 操作を非同期的に実行すると、Laravel アプリケーションのパフォーマンスとスケーラビリティが向上します。
  • Laravel の暗号化機能を使用して、機密データを S3 に保存する前に暗号化します。
  • S3 で AWS SDK for PHP を使用するときに発生するエラーや例外を記録するには、Laravel のロギング機能を使用します。

結論

この記事では、S3 を使用した AWS SDK for PHP の設定の基本を説明し、S3 で SDK を使用するための追加の例とベストプラクティスをいくつか紹介しました。 Laravel の S3 で SDK を使用するための追加のヒントも提供しました。これらのガイドラインに従うことで、PHP アプリケーションの安全性、効率性、拡張性を確保できます。


AWS と PHP について詳しく知りたいですか? DevOps Mind に関する他の記事もご覧ください。

以上がS3 を使用した PHP 用の AWS SDK の設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!