php – Amazon S3 – 使用 SDK PHP 向 API 取得列表與內容

申請
需要用到 AWSAccessKeyId 與 AWSSecretKey,所以右上角點 個人 > My Security Credentials
點選 Continue to Security Credentials
選第三個,並按下 Create New Access Key。
建立的檔案儲存下來,因為 Amazon 不會記錄你的 Key 跟 Secret,日後需要但忘記的話,只能重新建立喔
下載SDK
官方參考。使用 Compoer 下指定
"aws/aws-sdk-php-resources": "^0.3.0"
<?php require_once('vendor/autoload.php'); // 填上你的 key 與 secret $credentials = new Aws\Credentials\Credentials(Key, Secret); // 產生S3 的 Client 端 $client = Aws\S3\S3Client::factory(array ( 'credentials' => $credentials, 'region' => 'eu-west-1', // S3 務必使用 eu-west-1 'version' => 'latest', )); // 取得 Bucket 列表 $result = $client->listBuckets(); // 讀取每個列表 foreach ($result['Buckets'] as $bucket) { // 讀取 bucket 底下的物件 $iterator = $client->getIterator('ListObjects',array ( 'Bucket' => $bucket['Name'], )); foreach ($iterator as $object) { $result = $client->getObject(array ( 'Bucket' => $bucket['Name'], 'Key' => $object['Key'] )); $result['Body']; // 這就是檔案內容 } }
$result[‘Body’] 取得的檔案是原始格式,如果你想要將這筆 Amazon S3 的 Email 轉寄到你的 Email ,那可以透過 PHP 套件 EmailParser 來解析這份文件的寄件者、標題、寄件時間、內容、夾帶檔案……接著就能轉寄了喔。EmailParser 可以參考這篇。
發送轉寄後,不再讓貯體 (Bucket) 中的物件 (Object) 保留。這是因為如果每次觸發 PHP EmailParse 那會重新讀取 Amazon S3 列表,這樣之前轉寄過的又會再轉寄一次。如果要備份原始文件,其實可以存到你的資料庫。
本來有想過轉寄過的物件,改名,再讓 PHP 判斷。但發現 API 似乎沒提供修改物件檔名的方法,只好作罷囉。
繼續閱讀
Comments