Bir dosyayı bir Google Cloud Storage (GCS) kovanına komut satırından koymayı deniyorum. Daha sonraki bir aşamada, kullanıcı tarafından herhangi bir kullanıcı görünür kimlik doğrulaması olmaksızın dağıtılmış bir komut dosyasında kullanılır. curl
dosya yükleyerek olacağınıGoogle cloud storage, genel imzalı URL ve curl kullanarak yükle
gsutil signurl -p notasecret -m PUT -d 1d myserviceaccount.p12 gs://mybucket/testfile
(kullanıcı sonunda) sonraki adım gibi bir şey üretecektir:
Şimdiye kadar böyle bir imzalı url oluşturmak bir PUT isteği ile. böylece gibi:
curl -X PUT --data-binary @testfile 'https://storage.googleapis.com/mybucket/[email protected]nt.com&Expires=1430963040&Signature=gMf2h95bNmolizUGYrsQ%2F%2F%2FiHxW14I%2F0EOU3ZSFWtfCwNqSyok3iweQiuPxYXH4b26FeDSrmFOXB58%2B%2B%2BiAOJ%2B1gdLC9Y%2BkeUdbrjH0eGTW0NVsM1AWY2LsQ3dYf5Ho%2Bos1Fk26EsLJlD096Ku9aWqLW%2FpL%2FBSsUIfHijrFJPdI%3D'
bu kova varolan dosya ve (indirmek için) bir GET isteği ile çalışmak için, ancak yükleme için çalışmak görünmüyor. curl
bana böyle hata mesajları ile sunucunun yanıtını atar:
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided.
Check your Google secret key and signing method.</Message>
<StringToSign>PUT
application/x-www-form-urlencoded
1430963040
/mybucket/testfile</StringToSign>
</Error>
Ve bu tabii ki sadece bir çıplak PUT istekte değilim olarak, bana mantıklı, ancak belirli bir boyutta belirli bir dosya için bir, “gsutil signurl” ile hesaplanan imza, hesaplandığı anda bu detaylardan haberdar olmaz.
Nedense ben izlenim oldu (örneğin son kullanım durumunda mesaja How to allow anonymous uploads to cloud storage da gsutil signurl
documentation açıklanan ve dayanarak) o yüklemek çok uzun bir jenerik imzalı url oluşturmak ve daha sonra kullanmak mümkün olmalıdır. Bu nokta hakkında yanlış mıyım yoksa curl
isteğini düzeltmenin bir yolu var mı?
Bu konuda herhangi bir düşünce takdir edilmektedir. Bununla birlikte, bunun "minimal araçlar" ile çalışmak, yani sadece ideal kabuk ve kıvrımla çalışmak istiyorum, fakat başka programlama dilleri yok.
EDIT: Tam problemi formüle ederek kişinin düşüncelerini düzenlemek, çözüm yolunda ilk adımdır. Ben şimdi anlı problemi çözdüğümü anlıyorum. Bununla birlikte, aynı imzalı URL'yi kullanırlarsa, birden çok kullanıcının aynı dosyaya yazacağı anlamına gelir. Belgelere, yani imzalı url'nin oluşturulmasında nesne adını ihmal
gsutil signurl -p notasecret -m PUT -d 1d myserviceaccount.p12 gs://mybucket/
Bu, sözde, ortaya çıkan imzalı url olan herkes benim kovaya herhangi bir türdeki herhangi bir nesne koymak için izin verecek kullanabilirsiniz önerir. Sadece bu işi alamıyorum, çünkü nasıl GCS'ye yazdığınızı gerçekten nasıl yazabileceğinizi anlayamıyorsunuz.
Daha fazlası var mı? Aynı sorunu yaşıyorum, erişim engellendi. – Campbell
Bu düzenlemelerden beri burada bildirilecek bir şey yok. Ne yazık ki. – bjoseru
Aynı sorunu aldım – John