MinioとThumborに基づいて独立した画像サービスを構築
多くのアプリケーションシステムではピクチャストレージが用いられており、システムアーキテクチャの観点から、ピクチャストレージのようなサービスはできるだけコアビジネスから剥離されるべきである.多くの人がオンラインクラウドストレージサービスを選択します.例えば、七牛クラウドストレージなどです.しかし、多くの企業プロジェクトは、さまざまなニーズのため、画像サービスを内部に配置することを要求しています.独立して導入可能な画像サービスが必要になる可能性があります.
自分で画像ストレージサービスシステムを開発して実現するには、多くの工夫がかかりますが、既成の案があれば喜んでいませんか.私はGithubでMinioとThumborの2つのプロジェクトが私たちのニーズを達成することができることを発見しました.
Minio
Minio Cloud Storageは分散型オブジェクトストレージシステムです.Goベースのオープンソースプロジェクトであり、Amazon S 3のAPIを実現している.つまりMinioはオープンソースのAmazon S 3に相当する.
dockerを使用してインストールするのが最も手間が省ける方法で、2行のコマンドでダウンロードをインストールして実行できます.なお、この起動モードはテスト環境に限られ、コマンドが終了するとデータは消失する.本番環境でのインストールの導入については、ドキュメントを参照してください.
起動すると、コマンドラインにシステム情報が表示されます.
その後、ブラウザで
そのコア機能は簡単で、bucketを作成し、ファイルをアップロードします.すべてのファイルリンクは、期限切れのプライベートリンクです.そして、提供されているSDKを使用することができます.簡単です.
minioはファイルストレージに専念し、画像処理機能はありませんが、thumborというサービスを利用して画像処理を行うことができます.
Thumbor
Thumborは非常に強力な画像処理サービスであり、画像の切り抜き、スケール、フィルタ、さらには顔認識を実現することができます.
Pythonベースのオープンソースプロジェクトで、python環境でpipでインストールできます.
次に、次のコマンドを使用して実行します.
このサービスはローカルの8888ポートで実行され、urlで直接サービスを呼び出すことができます.
例えばこの写真
Thumbor AWS
Thumborは画像を処理するのに強いが、弱い画像記憶機能しか提供していない.その画像アップロード修正インタフェースは検証されていないため、デフォルトではオンになっていません.しかしThumborにはいくつかのコミュニティサポートがあり、サードパーティの開発者はいくつかの拡張を行いました.このうちThumbor AWSという拡張はThumborバックエンドをAmazonS 3に統合することができる.urlにピクチャファイルを提出するkeyは、Thumborの後端がAmazon S 3からファイルを取り出して処理する.これまでMinioはAmazon S 3のApiと互換性があった.したがって、わずかな変更だけで、この2つのサービスを統合することができます.最終的には、Minioを利用して記憶画像をアップロードし、Thumborを利用して画像を取り出して処理することができる.
Thumbor AWSという拡張はBoto 3を利用してAmazon S 3のSDKに接続し、Boto 3ドキュメントの構成に基づいて
その後、
Thumborを再起動すると、ブラウザでThumborを通じてMinioの画像にアクセスできます.
例えば、Minioのdockerというbucketにaaaを1枚アップロードしました.jpgは、
これで私たちは大功を成し遂げた.
まとめ
様々なサービスには独自の側面がありますが、AmazonS 3はクラウドサービスAPIの面で何らかの事実上の基準を形成しているので、いくつかのサービスを統合するのに役立ちます.
効果を実現する上で、最終的に画像の記憶とスケールの抽出の需要を達成し、いくつかのプロジェクトに対しても十分に使用することができます.しかし、画像がThumbor処理されると、プライベートリンクの属性もなくなります.これは、要求の高い企業サービスプロジェクトでも気まずいことです.
Thumborのソースコードを簡単に見ると、その画像出力はtornadoで実現されており、ソースコードをhackする時間があると信じており、プライベートリンクを実現するのも難しくありません.
Enjoy it!
自分で画像ストレージサービスシステムを開発して実現するには、多くの工夫がかかりますが、既成の案があれば喜んでいませんか.私はGithubでMinioとThumborの2つのプロジェクトが私たちのニーズを達成することができることを発見しました.
Minio
Minio Cloud Storageは分散型オブジェクトストレージシステムです.Goベースのオープンソースプロジェクトであり、Amazon S 3のAPIを実現している.つまりMinioはオープンソースのAmazon S 3に相当する.
dockerを使用してインストールするのが最も手間が省ける方法で、2行のコマンドでダウンロードをインストールして実行できます.なお、この起動モードはテスト環境に限られ、コマンドが終了するとデータは消失する.本番環境でのインストールの導入については、ドキュメントを参照してください.
docker pull minio/minio
docker run -p 9000:9000 minio/minio server /export
起動すると、コマンドラインにシステム情報が表示されます.
Endpoint: http://172.17.0.2:9000 http://127.0.0.1:9000
AccessKey: PT7TIDXEV7KH7S5R91JH
SecretKey: 17hdYH0mF2Ljd3ahZ7JGyi5l/ZPjunLlldUMY/A0
Region: us-east-1
SQS ARNs:
その後、ブラウザで
http://127.0.0.1:9000
にアクセスし、アクセスキーおよびSecretKeyを使用してログインすることができる.そのコア機能は簡単で、bucketを作成し、ファイルをアップロードします.すべてのファイルリンクは、期限切れのプライベートリンクです.そして、提供されているSDKを使用することができます.簡単です.
minioはファイルストレージに専念し、画像処理機能はありませんが、thumborというサービスを利用して画像処理を行うことができます.
Thumbor
Thumborは非常に強力な画像処理サービスであり、画像の切り抜き、スケール、フィルタ、さらには顔認識を実現することができます.
Pythonベースのオープンソースプロジェクトで、python環境でpipでインストールできます.
pip install thumbor
次に、次のコマンドを使用して実行します.
thumbor-config > ./thumbor.conf #
thumbor --port=8888 --conf=thumbor.conf
このサービスはローカルの8888ポートで実行され、urlで直接サービスを呼び出すことができます.
例えばこの写真
https://www.apple.com/cn/home/images/gallery/iphone_alt_small_2x.jpg
http://localhost:8888/unsafe/300x200/https://www.apple.com/cn/home/images/gallery/iphone_alt_small_2x.jpg
というurlを使用して300 x 200サイズに縮小することができます.Thumbor AWS
Thumborは画像を処理するのに強いが、弱い画像記憶機能しか提供していない.その画像アップロード修正インタフェースは検証されていないため、デフォルトではオンになっていません.しかしThumborにはいくつかのコミュニティサポートがあり、サードパーティの開発者はいくつかの拡張を行いました.このうちThumbor AWSという拡張はThumborバックエンドをAmazonS 3に統合することができる.urlにピクチャファイルを提出するkeyは、Thumborの後端がAmazon S 3からファイルを取り出して処理する.これまでMinioはAmazon S 3のApiと互換性があった.したがって、わずかな変更だけで、この2つのサービスを統合することができます.最終的には、Minioを利用して記憶画像をアップロードし、Thumborを利用して画像を取り出して処理することができる.
pip
を使用して、この拡張子をインストールします.pip install tc_aws
Thumbor AWSという拡張はBoto 3を利用してAmazon S 3のSDKに接続し、Boto 3ドキュメントの構成に基づいて
~/.aws/credentials
というファイルを作成し、先ほどMinioが提供したAccessKeyとSecretKeyに記入し、このサービスにMinioへのアクセスを許可する必要があります.[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
その後、
thumbor_conf
で生成するthumbor.confでいくつかの構成を変更します.TC_AWS_REGION='us-east-1' # minio Region
TC_AWS_ENDPOINT='http://127.0.0.1:9000' # Amazon S3 minio
LOADER = 'tc_aws.loaders.s3_loader' # Thumbor loader tc_aws.loaders.s3_loader
Thumborを再起動すると、ブラウザでThumborを通じてMinioの画像にアクセスできます.
例えば、Minioのdockerというbucketにaaaを1枚アップロードしました.jpgは、
http://localhost:8888/unsafe/docker/aaa.jpg
というアドレスでこの画像の原図にアクセスできます.もちろん、この画像をhttp://localhost:8888/unsafe/300x200/docker/aaa.jpg
で300 x 200のスケーリングすることができます.これで私たちは大功を成し遂げた.
まとめ
様々なサービスには独自の側面がありますが、AmazonS 3はクラウドサービスAPIの面で何らかの事実上の基準を形成しているので、いくつかのサービスを統合するのに役立ちます.
効果を実現する上で、最終的に画像の記憶とスケールの抽出の需要を達成し、いくつかのプロジェクトに対しても十分に使用することができます.しかし、画像がThumbor処理されると、プライベートリンクの属性もなくなります.これは、要求の高い企業サービスプロジェクトでも気まずいことです.
Thumborのソースコードを簡単に見ると、その画像出力はtornadoで実現されており、ソースコードをhackする時間があると信じており、プライベートリンクを実現するのも難しくありません.
Enjoy it!