2015-02-17 21 views
17

aws-sdk belgeleriyle çalışıyorum, takip ettiğim tüm bağlantılar eski ve kullanılamaz görünüyor.aws-sdk v2 kullanarak S3'e bir görüntü yükleme

Ruby'deki bir S3 ürün grubuna resim dosyası yükleme konusunda doğrudan doğruya bir uygulama örneği arıyorum.

  • görüntü yolu screenshots/image.png
  • olduğunu varsayalım ve benim ENV

Herhangi bir tavsiye çok takdir edilmektedir içinde my_bucket

  • AWS creds canlı kovaya yüklemek istiyor. İşte

  • +0

    ben izlediğinizde bu örnekler gibi hatalar alıyorum: '' 'undefined method' yazmak için '# Aws :: S3 :: Object bucket_name = "my_bucket", anahtar = "image.png"> (NoMethodError) '' ' – YoDK

    +0

    kullanarak bitti Bu cevap (http://stackoverflow.com/questions/130948/ruby-convert-file-to-string) daha sonra '' 'object = bucket.object ('image.png')' '' '' ' object.put (body: content) '' ' – YoDK

    +0

    @EldadMor V1 belgelerine bağlandınız. V2 belgeleri burada bulunur: http://docs.aws.amazon.com/sdkforruby/api/index.html –

    cevap

    33

    adlandırılmış kova ve anahtar için diskten dosya yükleyebilir nasıl: En basit yöntemdir

    s3 = Aws::S3::Resource.new 
    s3.bucket('my_bucket').object('key').upload_file('screenshots/image.png') 
    

    . 'Anahtar' yerine Amazon S3'te depolanmasını istediğiniz anahtarla değiştirmelisiniz. Bu, çok parçalı yükleme API'lerini kullanarak sizin için büyük dosyaları otomatik olarak yükler ve başarısız olan parçaları yeniden dener. Eğer PUT nesnesini kullanarak her zaman yüklemek isterseniz

    , sen #put arayabilir veya kullanabileceğiniz bir Aws::S3::Client: Ayrıca

    # using put 
    s3 = Aws::S3::Resource.new 
    File.open('screenshots/image.png', 'rb') do |file| 
        s3.bucket('my_bucket').object('key').put(body:file) 
    end 
    
    # using a client 
    s3 = Aws::S3::Client.new 
    File.open('screenshots/image.png', 'rb') do |file| 
        s3.put_object(bucket:'my_bucket', key:'key', body:file) 
    end 
    

    , v2 SDK için API başvuru dokümanları buradadır: http://docs.aws.amazon.com/sdkforruby/api/index.html

    +0

    Sen benim çılgın kahramanımsın! Bu çalışmayı boşuna yapmaya çalışan son 3-4 saatini geçirdim. Bunu aws-sdk'in v1'inde yapmak çok kolaydı ama v2 gereksiz yere karmaşık görünüyor. – mmichael

    +0

    @ mmichael v2 yüklemelerinin v1'den daha karmaşık olduğunu merak ediyorum. Sözdizimi çok benzer, değil mi? –

    +0

    Eh, v1 ile İstemci veya Kaynak sınıfları ile uğraşmak zorunda kalmadınız, sadece 's3 = AWS :: S3.new' ve' s3.buckets ['bucket_name'] komutunu çalıştırabilirsiniz. ] .write (dosya: '/ yol/için/dosya') '. Aslında yanlış konuştu, v2 sürümü daha karmaşık değil. Ben v2 docs sadece daha kafa karıştırıcı olduğunu söylemek istedim. Yeni dokümanlarda hiçbir yerde, cevabınızdaki adımları nasıl yapacağınız gösterilmiyor. Ve eğer yaparlarsa, o zaman [v1] içindeki talimatlar kadar net değil (http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3.html) Burada size tek bir sayfada ihtiyacınız olan her şeyi gösterir. . – mmichael

    İlgili konular