0

ユーザーはGoogle App Enigne-applicationからcsv-filesをダウンロードできます。 大きなファイルが1分のタイムアウトウィンドウに表示され、ユーザーにStorage-ACLの読み取りアクセス権を与え、ダウンロードリンクにリダイレクトするソリューションを再構築しました。aclとリダイレクトを使用してGoogleストレージファイルをダウンロードする

これは、(1)

storage_client = storage.Client() 
bucket = storage_client.get_bucket(app_identity.get_default_gcs_bucket_name()) 
acl = bucket.acl 
acl.user(ndb_user.primaryEmail).grant_read() 
acl.save() 

self.redirect("https://storage.cloud.google.com" + filename) 

を私の解決策は、プログラム的にも中にブラウザ動作しないと思われるユーザーのアクセスを与えるための実施例であるとする「https://storage.cloud.google.com/[bucket]/[object]」リダイレクトします。 代替案の提案や実際にこれを行う方法はありますか?

1:https://cloud.google.com/storage/docs/xml-api/reference-uris

答えて

0

あなただけのACL APIを介してバケットのREADアクセスを許可されているので、これは動作しません。これはIAMロールroles/storage.legacyBucketReaderにマップされ、storage.objects.get許可を与えません(それはgrants storage.buckets.getstorage.objects.listのみです)。 new IAM apiに切り替えると、代わりにroles/storage.objectViewerが許可されます。

と言われていますが、代わりにSigned URLsをご覧になることを強くお勧めします。署名されたURLは、ACLを介したユーザーアクセスを永続的に許可するのではなく、委任を介して一時的なアクセスを許可し、このユースケースに対して正確に行われます。 Googleのgoogle-cloudライブラリには、独自のものを作成する代わりに、生成するために使用できる「generate_signed_url」関数があります。ここにはdocumentationがあります。

関連する問題