Quantcast
Channel: jun01tの日記
Viewing all articles
Browse latest Browse all 87

PHPを使ってS3にファイルをアップロードし、公開(パブリックアクセス可能)にする方法

$
0
0

PHPを使ってS3にファイルをアップロードし、公開(パブリックアクセス可能)にする方法を紹介します。
AWSSDK for PHPを使用する方法が一般的です。


事前準備

  1. AWSSDK for PHPをインストールsh composer require aws/aws-sdk-php
  2. IAMユーザーの作成 & 設定
    • AWSマネジメントコンソールで IAM ユーザーを作成
    • AmazonS3FullAccessまたは適切なポリシーを付与
    • アクセスキーID & シークレットアクセスキーを取得

S3にアップロードし、パブリックアクセスを設定

1. PHPスクリプト

<?phprequire'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

// AWS認証情報$bucketName='your-bucket-name';
$region='us-east-1'; // 適切なリージョンを指定$accessKey='YOUR_ACCESS_KEY';
$secretKey='YOUR_SECRET_KEY';

// S3クライアントの作成$s3=new S3Client(['region'=>$region,
    'version'=>'latest',
    'credentials'=>['key'=>$accessKey,
        'secret'=>$secretKey,
    ],
]);

// アップロードするファイル$filePath='path/to/local/file.jpg';
$keyName='uploads/file.jpg'; // S3上のファイル名try{// S3にアップロード(公開アクセス付き)$result=$s3->putObject(['Bucket'=>$bucketName,
        'Key'=>$keyName,
        'SourceFile'=>$filePath,
        'ACL'=>'public-read', // 公開アクセス]);

    // アップロード成功時のURLを取得echo"File uploaded successfully. URL: ".$result['ObjectURL']."\n";

}catch(AwsException $e){echo"Upload failed: ".$e->getMessage()."\n";
}

ポイント

ACL => 'public-read'を指定することで、自動的にパブリックアクセス可能なファイルとしてアップロードされる
ObjectURLを取得して、アップロードしたファイルのURLを表示
Keyで S3 上のフォルダ階層を設定できる(例:uploads/file.jpg
.envAWS IAMロールを使って、アクセスキーシークレットキー環境変数化するのがセキュリティ的に推奨


アップロードしたファイルのURL

アップロードが成功すると、以下のようなURLでアクセス可能になります。

https://your-bucket-name.s3.amazonaws.com/uploads/file.jpg

または、リージョンが us-east-1以外の場合:

https://your-bucket-name.s3.your-region.amazonaws.com/uploads/file.jpg

セキュリティ対策

  • バケットポリシーで s3:PutObjectを制限(特定のIAMユーザーのみに許可)
  • CloudFront を経由してアクセス(S3を直接公開せず、安全にファイルを配信)
  • アクセスキーの管理環境変数または .envに保存し、ソースコードに含めない)

これで、PHPからS3にファイルをアップロードし、公開する方法が実装できます! 🎉


Viewing all articles
Browse latest Browse all 87

Trending Articles