2016-11-11 19 views
2

私はAWS Elastic Beanstalk上でdjangoアプリケーションを実行しています。私はNLTKダウンローダを使って入手したnltkコーパスパッケージ(stopwords)を使用します。AWS Elastic BeanstalkでダウンロードしたNLTKデータを使用する

私は、現在の(単一の)弾力のあるビーンストークEC2インスタンスでnltkダウンローダを実行し、必要なコーパスを/usr/local/share/nltk_dataに保存しました。これは1つのインスタンスで動作しますが、ロードバランサが新しいインスタンスを作成することを決定したときに、これが消去されます(展開が完了しても存続します)。

私の質問は、このデータのための具体的なアプローチは何ですか?

私はそれをS3に保存し、それを私の弾力のある豆の塊に結びつけるべきですか?

また、新しい設定のインスタンスごとにEB設定で呼び出される(Python?)スクリプトを書く方が簡単ですか?インスタンスのライフ)?そうすれば、他のコーパスのダウンロードを追加する必要があるか、あるいはPython固有のものやnltk固有のものを行う必要がある場合、それはPythonで行われており、手動のS3作業は必要ありません。

誰かがEB設定のスクリプトを書くことをサポートしている場合、その例は素晴らしいでしょう。私はこれを正確に行う方法がわかりません。

ありがとうございます!

答えて

1

この特定のユースケース(IAMとEC2インスタンスの役割と組み合わせて)では、S3を使用するのは本当に非常に簡単です。

速いデータの変更(nltkコーダは遅いと思います)でも、差異を既存のs3の場所に手動で同期させるだけで、必要に応じて新しいデータを使用できるようになります。

鍵は、Instance Profilesを使用してインスタンスのIAMロールを与えることです。適切なポリシーを使用すると、手動でaws資格情報を定義しなくても、インスタンス起動時にAWS CLIにアクセスする必要のあるスクリプトでs3に安全にアクセスできます。

インスタンスプロファイルを使用すると、 IAM AWSリソースへのアクセス権、それはスクリプトにハードコーディング資格情報を排除して、あなたのgitコードなど

はその後AWS CLIはがち、ピップなどを経由してのLinuxにインストールと仮定:

# create the bucket (once). 
# put in a region/az where your ec2 instances are 
# to minimize data xfer 

# can run these from wherever to get your bucket/data up 
aws s3 mb s3://mybucket --region us-west-1 

# sync from wherever the first time & whenever needed 
aws s3 sync /usr/local/share/nltk_data s3://mybucket 


# can run the below on your instances 
# 
# put instance startup script after install of awscli etc. 
# or in myscript.sh file on your instance (even a gist) 
# wherever you want an instance to have your data or sync up 

aws s3 sync s3://mybucket/nltk_data /path/where/i/need 

のいいところをsyncコマンドは、変更されていないファイルをコピーしないというコマンドですs3に乗って引っ張るとき。

+0

やあ、どうもありがとうございました、これは役に立ちます。幸いにまに弾力のあるbeanstalkは、自動的にS3バケットと、各インスタンスがそれに書き込むことを可能にするIAMロールとインスタンスプロファイル(ログ、アプリケーションのバージョンなど)を作成します。だから、私はあなたの最初の指示に従って、私のS3バケットに自分の 'nltk_data'を持っています。しかし、awscliをインストールし、s3からインスタンスに同期を呼び出す.ebextensionsで自分のconfigにどの設定パラメータを追加するのか分かりません。あなたは正しい方向に私を向けることができますか?私はそれが 'container_commands'キーの中に入ると思いますか?再度、感謝します! – ministry

+1

私はこの質問をここに掲載しました:http://stackoverflow.com/questions/40560053/how-to-copy-folder-from-s3-to-elastic-beanstalk-instance-on-instance-creation – ministry

0

もう少し複雑なnltkパッケージの方がより一般的に答えが出るかどうかをテストしますが、ストップワードは本当に単なるリスト(あるいはリストのセットです)あなたはカットしてスクリプトに貼り付けることができ、複数の言語を)必要がある場合:

>>> from nltk.corpus import stopwords 
>>> stopwordlist = stopwords.words('english') 
>>> print(stopwordlist) 
['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', 'should', 'now'] 

だから私はちょうどちょうど直接何もインポートせずに私のスクリプトでそれを定義した:

stopwordlist = ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', 'should', 'now'] 
関連する問題