2012-06-30 5 views
4

Je voudrais savoir ce qui fait que cette méthode d'URL signée fonctionne localement mais pas dans le vrai serveur?Pourquoi l'URL signée Amazon S3 fonctionne-t-elle localement mais pas sur le serveur de production?

Localement, il produit une URL qui expire dans 12 s, mais dans le serveur, il renvoie une URL expirée?

def s3_signed_url(file_path): 
    import boto 
    s3conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
    bucket = s3conn.get_bucket(BUCKET_NAME, validate=False) 
    key = bucket.new_key(file_path) 
    signed_url = key.generate_url(expires_in=12) 
    return signed_url 



@never_cache 
def enjoy_the_show(request, movie_id): 
    m = get_object_or_404(Movie, pk=movie_id) 
    iOS = is_ios_device(request) 
    if (iOS is True): 
     movie_path = m.m3u8_url 
     movie_path = movie_path.replace('https://s3.amazonaws.com/domain.com','') 
     signed_url = s3_signed_url(movie_path) 
     return render_to_response('movies/enjoy_show_iOS.html', {'signed_url':signed_url,'movie': m,'is_logged_in':is_logged_in(request)},context_instance=RequestContext(request)) 
    else: 
     return render_to_response('movies/enjoy_show.html', {'movie': m,'is_logged_in':is_logged_in(request)},context_instance=RequestContext(request)) 
+2

Vérifiez l'horloge du serveur. –

+0

Merci! Le problème était lié au fuseau horaire et à l'horloge du serveur – ipegasus

+0

+1 pour avoir mentionné boto –

Répondre

2

Le problème est résolu. C'était un problème de fuseau horaire. Le problème peut être résolu en configurant correctement le fuseau horaire sur les deux serveurs et/ou en tenant compte du décalage horaire.

Questions connexes