2017年2月23日

AWS - 使用 Fake S3 模擬及測試 Amazon S3 服務 ( Use Fake S3 to simulate and test APIs of Amazon S3 in a sandbox environment )

Fake S3 是一個由 Ruby 開發並設計成模擬 S3 服務的軟體,所以你可以透過不同的 SDK (例如:boto3) 去測試 S3 的 API。本篇將介紹如何設定及使用 Fake S3 (docker 版本)。( 其他 AWS 相關教學可以參考本篇整理。If you want to read this article in English, you can visit here )



前置作業
此篇內容主要是使用 Docker 來啟用 Fake S3,所以你需要確認你的機器上已經安裝 Docker (參考如何安裝 Docker)。通常為了加速開發,用 Docker 是比較方便且一致。若你不想使用 Docker 而想要直接安裝 Fake S3 可以利用以下指令來安裝:
gem install fakes3


啟用 Fake S3
透過 Docker 來啟用 Fake S3 相當方便,使用指令:
# 啟用 Fake S3,並指定 port 為 4569
docker run -d \
           -p 4569:4569 \
           --name s3 \
           lphoward/fake-s3


測試 Fake S3
測試 Fake S3 就如同你如何使用 Aamazon S3 的 SDK 與 API 一樣,唯一不同的就是你需要指定 S3 的參數,以下為 Python 與 PHP 的使用範例:
# Python 範例
from boto3 import client

s3_client = client(
    service_name='s3',
    endpoint_url='http://your-fake-s3-ip:4569',
    region_name='',
    aws_access_key_id='',
    aws_secret_access_key=''
)
# PHP 範例
use Aws\S3\S3Client;
use Aws\Exception\S3Exception;

$fake_s3_settings = [
    'version' => 'latest',
    'region'  => '',
    'endpoint' => 'http://your-fake-s3-ip:4569',
    'credentials' => [
        'key' => '',
        'secret' => ''
    ]
];
$s3_client = new S3Client($fake_s3_settings);
看過範例,就可以知道你幾乎不需要更改程式,而是將 Endpoint 指向 Fake S3 的位址就可以開始測試了。


資料存放位置
若 Fake S3 透過 Docker 運作無誤,你會發現你成功上傳的檔案都存放在容器內的 /fakes3_root 資料夾底下,存放路徑結構也會完全依照 S3 的規則。


Environment :
  ・ macOS
Reference :
  ・ Fake S3
  ・ Fake S3 Dockerfile


熱門文章