2015-08-18 3 views
0

Я настраиваю SAIO на VirtualBox и хочу проверить, как работает функция url temp для Swift.не может получить объект из swift tempurl

здесь является объектом, который я создал test.txt вызова под контейнером «testCon», вы можете увидеть содержание и быстрого список объект

[email protected]:~/bin$ curl -X GET -H 'X-Auth-Token: AUTH_tkba199b23eeec4998b7119d2c9c903216' http://127.0.0.1:8080/v1/AUTH_test/testCon/test.txt 
this is a test 
[email protected]:~/bin$ swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing list testCon 
test.txt 

я следую по ссылке (http://ceph.com/docs/master/radosgw/swift/tempurl/) для ключа настройки температуры для URL-адреса температура URL

[email protected]:~/bin$ curl -X POST -H 'X-Auth-Token: AUTH_tkba199b23eeec4998b7119d2c9c903216' -H 'X-Account-Meta-Temp-URL-Key: secret' http://127.0.0.1:8080/v1/AUTH_test/testCon/test.txt 
<html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>[email protected]:~/bin$ 
[email protected]:~/bin$ swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing post -m "Temp-URL-Key:secret" 

и следовать примеру питона, чтобы сгенерировать временный URL ссылки


import hmac 
from hashlib import sha1 
from time import time 

method = 'GET' 

host = "http://127.0.0.1:8080" 
duration_in_seconds = 300 # Duration for which the url is valid 
expires = int(time() + duration_in_seconds) 

path = '/v1/AUTH_test/testCon/test.txt' 
key = 'secret' 

hmac_body = '%s\n%s\n%s' % (method, expires, path) 
hmac_body = hmac.new(key, hmac_body, sha1).hexdigest() 

sig = hmac.new(key, hmac_body, sha1).hexdigest() 
rest_uri = "{host}{path}?temp_url_sig={sig}&temp_url_expires={expires}".format(
      host=host, path=path, sig=sig, expires=expires) 
print rest_uri 

но когда я поставил ссылку кли, всегда показывают: Нет такого файла или каталога

[email protected]:~/bin$ http://127.0.0.1:8080/v1/AUTH_test/testCon/test.txt?temp_url_sig=83fa35362613a18c2ca0b48203ccda61d2229daa&temp_url_expires=1439938672 
[1] 6125 
[email protected]:~/bin$ -bash: http://127.0.0.1:8080/v1/AUTH_test/testCon/test.txt?temp_url_sig=83fa35362613a18c2ca0b48203ccda61d2229daa: **No such file or directory** 

может кто-нибудь помочь? Просьба представить несколько предложений для меня?

Спасибо, Миллион!

ответ

0

Вам нужно перейти к URL-адресу, сгенерированному скриптом python. Вы можете сделать это либо в веб-браузере или с помощью завивки команды из командной строки:

curl http://127.0.0.1:8080/v1/AUTH_test/testCon/test.txt?temp_url_sig=83fa35362613a18c2ca0b48203ccda61d2229daa&temp_url_expires=1439938672 

Просто поместить URL в командной строке, не будет ничего делать.

+0

Спасибо! но я снова создаю ссылку, но я получил «swift @ swift-VirtualBox: ~/bin $ 401 Unauthorized: URL-адрес недействительной версии», что-то не так с отправкой X-Account-Meta-Temp-URL-ключа или неправильного пути выше питон? –

+0

Вот кли, я пытаюсь: –

+0

Я нашел, что конец python имеет строку изменения, и команда curl должна быть использована выше, тогда вы можете загрузить файл без 401. curl -L -o 'download.txt' 'https: //region-a.geo-1.objects.hpcloudsvc.com/v1/10846130789747/USERMETAFILE/10846130789747_xxxxxxxx?temp_url_sig = 10846130789747: AWHYVDR62M98H1JKE3W2: 92842990c61d1a063476a1e583a3dbef7d6c0ae0 & temp_url_expires = 1440012858 ' –

0

Кто-нибудь может предоставить полезный ответ для проблемы tempURL? Вот быстрый стат, который вы можете видеть, клавиша tempurl должна быть там.

[email protected]:~$ swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing stat 
         Account: AUTH_test 
         Containers: 1 
         Objects: 0 
          Bytes: 0 
    Containers in policy "gold": 1 
     Objects in policy "gold": 0 
      Bytes in policy "gold": 0 
Meta X-Account-Meta-Temp-Url-Key: secret 
       Meta Temp-Url-Key: secret 
        X-Timestamp: 1439949170.11921 
         X-Trans-Id: tx38b5a254caf34023b96c3-0055d3e3e0 
        Content-Type: text/plain; charset=utf-8 
        Accept-Ranges: bytes 
[email protected]:~$ swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing stat testCon 
         Account: AUTH_test 
         Container: testCon 
         Objects: 1 
          Bytes: 15 
         Read ACL: 
         Write ACL: 
         Sync To: 
         Sync Key: 
Meta X-Account-Meta-Temp-Url-Key: secret 
        Accept-Ranges: bytes 
       X-Storage-Policy: gold 
        X-Timestamp: 1439949251.62009 
         X-Trans-Id: tx80638d6e3bb24764945fb-0055d3e3e6 
        Content-Type: text/plain; charset=utf-8 
[email protected]:~$ swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing stat testCon test.txt 
         Account: AUTH_test 
         Container: testCon 
          Object: test.txt 
        Content Type: text/plain 
        Content Length: 15 
        Last Modified: Wed, 19 Aug 2015 02:03:04 GMT 
          ETag: 81967071826aa902b0fa890876499cbb 
Meta X-Account-Meta-Temp-Url-Key: secret 
        Accept-Ranges: bytes 
        X-Timestamp: 1439949783.34589 
         X-Trans-Id: tx8d4566c37c9b4f598193e-0055d3e3ee 

Я стараюсь как браузер, так и завиток + связь, но не для меня.

[email protected]:~$ curl http://127.0.0.1:8080/testCon/test.txt?temp_url_sig=e005d33b515a2e7900ff58f86e062f8a5682217f&temp_url_expires=1439952878 
[1] 18540 
[email protected]:~$ 401 Unauthorized: Temp URL invalid 

[email protected]:~$ curl http://127.0.0.1:8080/v1/AUTH_test/testCon/test.txt?temp_url_sig=b65dae8902026c3ade58d91a2f4c4ee135d564b0&temp_url_expires=1439952980 
[1] 18542 
[email protected]:~$ 401 Unauthorized: Temp URL invalid 

Я не уверен, что путь в Python является правильным или нет, так как я видел людей, имеет два разных предложения, но включают в себя/V1/AUTH_USER/контейнер/объект выглядит как надо.

import hmac 
from hashlib import sha1 
from time import time 

method = 'GET' 
#host = 'https://objectstore.example.com' 
host = "http://127.0.0.1:8080" 
#host = "http://127.0.0.1:8080/testCon/test.txt" 
duration_in_seconds = 3000 # Duration for which the url is valid 
expires = int(time() + duration_in_seconds) 
#path = '/v1/your-bucket/your-object' 
#path = '/v1/tempfolder/test.txt' 
path = '/v1/AUTH_test/testCon/test.txt' 
key = 'secret' 
#key2 = 'secret2' 
hmac_body = '%s\n%s\n%s' % (method, expires, path) 
hmac_body = hmac.new(key, hmac_body, sha1).hexdigest() 
#hmac_body = hmac.new(key, key2, hmac_body, sha1).hexdigest() 
sig = hmac.new(key, hmac_body, sha1).hexdigest() 
rest_uri = "{host}{path}?temp_url_sig={sig}&temp_url_expires={expires}".format(
      #host=host, path="", sig=sig, expires=expires) 
      host=host, path=path, sig=sig, expires=expires) 
print rest_uri 

Будет здорово, если вы сможете поделиться со мной советом.

+0

должны использовать #curl -L -o' download.txt '' ссылку tempurl ' –

Смежные вопросы