Amazon S3 使用記錄

昨天開始碰 Amazon S3, 因為一直覺得 stickeraction 的貼紙圖檔放在 VPS 上還是不太安全, 所以前天就開始用 Amazon S3, 把貼紙圖檔都丟上去, 順便當 cdn 用。

一開始是先看 Tsung 大大的文章, 然後就開始用 s3cmd 開始玩看看 S3 怎麼用。

首先就是在 gentoo 上裝 s3cmd 啦, 不過試了 x86 跟 amd64 的平台好像都是 masked, 所以就用 ACCEPT_KEYWORDS 裝起來

ACCEPT_KEYWORDS='~x86' emerge s3cmd

然後就是用 s3cmd --configure 這個指令來設定, 填入 Amazon S3 提供的 access key 跟 secret key, 接著就可以開始用 s3cmd 來丟檔案到 s3 上做測試了。

# 首先得先建一個 bucket
s3cmd mb bucketname

# 接著就可以丟檔案上去
s3cmd put foo.tgz s3://bucketname/foo.tgz 

# 或者是刪除檔案
s3cmd del s3://bucketname/foo.tgz 

# 或者是丟上可以公開下載的檔案
s3cmd put foo.tgz s3://bucketname/foo.tgz -P```

而在 php 上, 我在 google code 找到這個 [amazon-s3-php-class](http://code.google.com/p/amazon-s3-php-class/) 這個 library, 滿方便的, 在他的首頁上就提供了下面這個範例:

$s3 = new S3('accessKey', 'secretKey'); $s3->putBucket('bucket', S3::ACLPUBLICREAD); $s3->putObjectFile('file.doc', 'bucket', 'docs/file.doc', S3::ACLPUBLICREAD); $s3->deleteObject('bucket', 'docs/file.doc');```

然後就寫了支程式, 把貼紙圖檔都丟上 S3 然後改了 stickeraction 的程式, 在使用者開始發起串連貼紙時, 就把圖丟上 S3, 不過目前還是透過 webamp 來當 reverse proxy。 ( 可惡的 webamp )

而 S3 也是一個備份的好工具, 所以就寫了下面這個 script 來備份資料庫

s3backup

name=$1  
dateformat=date +'%Y%m%d'  
filename=$name-$dateformat.sql.bz2<h1>mysqldump and compress</h1><p>/usr/bin/mysqldump -ufoo -pbar $name | /bin/bzip2 > $filename</p><h1>upload s3</h1><p>/usr/bin/s3cmd put $filename s3://$name/backup/$filename > /dev/null</p><h1>delete</h1><p>/bin/rm $filename</p>```

然後在 crontab 就用下面這個指令來備份 stickeraction 跟 twitthat 的資料庫了

@daily /usr/local/bin/s3backup stickeraction @daily /usr/local/bin/s3backup twitthat ```

不過這個 script 看起來很弱, bash 的 if 我都忘記怎麼用了 Orz 而且應該只把正常輸出導到 /dev/null … 學習之路還很長遠阿 (遠目)

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!