4

ユーザーがファイルをアップロードできるようにする webapp (myapp.com と呼びます) があります。webapp は Amazon EC2 インスタンスにデプロイされます。これらのファイルを、s3 バケット ベースのドメイン (つまり、uploads.myapp.com) を介して webapp コンシューマーに提供したいと考えています。

ユーザーがファイルをアップロードすると、ローカル ec2 インスタンスの「site_uploads」というフォルダーに簡単にドロップできます。ただし、私の ec2 インスタンスには有限のストレージがあり、多くのアップロードがあるため、ec2 ファイル システムはすぐにいっぱいになります。

ec2 インスタンスをマウントし、s3 バケットを「site_upload」ディレクトリとして使用できるとよいでしょう。そのため、EC2 の「site_upload」ディレクトリへのアップロードは自動的に uploads.myapp.com になります (そして、私の webapp はテンプレート タグを使用して、このアップロードされたコンテンツへのリンクがその s3 でサポートされたドメインに基づいていることを確認できます)。これにより、ファイルのリクエストが ec2 インスタンスではなく s3 にヒットするため、スケーラブルなファイル サービスも提供されます。また、「site_upload」にローカルに表示されているが実際には s3 にある画像のスケーリング/サイズ変更を webapp で簡単に実行できます。

私はs3fsを見ていますが、コメントから判断すると、完全に焼き付けられたソリューションのようには見えません. 非商用のソリューションを探しています。

参考までに、webapp は django で記述されていますが、詳細が大きく変わるわけではありません。

4

5 に答える 5

5

EC2 は使用していませんが、S3 バケットを Linux サーバーに永続的にマウントしています。私がやった方法はJunglediskです。これは非商用のソリューションではありませんが、非常に安価です。

最初に、jungledisk を通常どおりセットアップします。次に、ヒューズが取り付けられていることを確認します。ほとんどの場合、秘密鍵などを使用して構成ファイルを作成するだけです。次に、fstab に次のような行を追加します。

jungledisk /path/to/mount/at fuse noauto,allow_other,config=/path/to/jungledisk/config/file.xml 0 0

あとはマウントするだけで準備完了です。

于 2009-06-11T20:02:10.400 に答える
2

これは私がUbuntuシステムに使用しているものを少し抜粋したものであり、テストしていないため、明らかにM$システムに適合させる必要があります。また、 s3-simple-fuseをインストールする必要があります。最終的に仕事を混乱させてしまう場合は、ファブリックで同じコマンドを実行することをお勧めします。

import os, subprocess

'''
Note: this is for Linux with s3cmd installed and libfuse2 installed
Run: 'fusermount -u mount_directory' to unmount
'''

def mountS3(aws_access_key_id, aws_secret_access_key, targetDir, bucketName = None):
    #######
    if bucketName is None:
        bucketName = 's3Bucket'

    mountDir = os.path.join(targetDir, bucketName)
    if not os.path.isdir(mountDir):
        os.path.mkdir(mountDir)
    subprocess.call('s3-simple-fuse %s -o AWS_ACCESS_KEY_ID=%s,AWS_SECRET_ACCESS_KEY=%s,bucket=%s'%(mountDir, aws_access_key_id, aws_secret_access_key, bucketName)
于 2010-12-01T17:19:38.597 に答える
2

アップロードの場合、こちら で説明されているように、ユーザーはS3 に直接アップロードできます。

これにより、S3 をマウントする必要がなくなります。

ファイルを提供するときは、ファイルをパブリックとしてマークすることにより、S3 から直接行うこともできます。私は、s3 を指す「files.mydomain.com」または「images.mydomain.com」という名前をサイトに付けたいと思います。

于 2009-06-05T17:12:12.143 に答える
2

私は s3fs を使用していますが、すぐに利用できるディストリビューションはありません。より簡単にしたい人のために、ここにビルドを用意しました。

構成ドキュメントが利用できなかったので、fstab でこれを取得するまで調べました。

s3fs#{{ バケット名}} {{ /path/to/mount/point }} fuse allow_other,accessKeyId={{キー}},secretAccessKey={{秘密キー}} 0 0

s3fs

于 2009-06-12T22:07:01.950 に答える
0

個別にマウントされた EBS ボリュームを使用することをお勧めします。いくつかの動画ファイルに対して同じことを試してみました。S3 へのアクセスは遅く、S3 にはファイルの名前を変更できない、実際のディレクトリ構造がないなどの制限があります。

RAID5 構成で EBS ボリュームをセットアップし、必要に応じてスペースを追加できます。

于 2011-06-10T15:39:22.177 に答える