GCS を使用してファイルを保存/取得する GAE プロジェクトがあります。これらのファイルは、GCE で実行されるコードで読み取る必要もあります (C++ ライブラリが必要なため、GAE では実行されません)。
実際の GAE > GCS < GCE にデプロイされた本番環境では、このセットアップは正常に機能します。ただし、ローカルでのテストと開発は、私が理解しようとしている別の話です。
推奨どおり、GAE の dev_appserver を GoogleAppEngineCloudStorageClient で実行して、(シミュレートされた) GCS にアクセスしています。ファイルはローカルのブロブストアに配置されます。GAE のテストに最適です。
これらは VM をローカルで実行するための GCE SDK ではないため、ローカルの「GCE」を参照するときは常に、Linux を実行しているローカル開発マシンにすぎません。ローカル GCE 側では、デフォルトの boto ライブラリ ( https://developers.google.com/storage/docs/gspythonlibrary ) を Python 2.x ランタイムと共に使用して、C++ コードと連携し、GCS からファイルを取得しています。 . ただし、開発中は、これらのファイルは dev_appserver の blobstore に保存されているため、boto からアクセスできません。
ローカル GAE と GCE をローカル GCS に正しく接続する方法はありますか?
とりあえずローカルのGCS部分は諦めて本物のGCSを使ってみました。boto を使用した GCE 部分は簡単です。GCS 部分は、access_token を使用して実際の GCS を使用することもできるため、次の方法でローカル blobstore の代わりに実際の GCS を使用します。
cloudstorage.common.set_access_token(access_token)
ドキュメントによると:
access_token: you can get one by run 'gsutil -d ls' and copy the
str after 'Bearer'.
そのトークンは限られた時間だけ機能するため、理想的ではありません。より永続的な access_token を設定する方法はありますか?