W mojej aplikacji Railsowej zapisuję etykiety wysyłki RMA klienta do wiadra S3 podczas tworzenia. Właśnie zaktualizowałem V2 klejnotu aws-sdk, a teraz mój kod do ustawiania listy ACL nie działa.Przesyłanie pliku do AWS S3 z ACL ustawionym na public_read
kod, który pracował w V1.X:
# Saves label to S3 bucket
s3 = AWS::S3.new
obj = s3.buckets[ENV['S3_BUCKET_NAME']].objects["#{shippinglabel_filename}"]
obj.write(open(label.label('pdf').postage_label.label_pdf_url, 'rb'), :acl => :public_read)
.write
wydaje się być przestarzałe, więc używam .put
teraz. Wszystko działa, z wyjątkiem sytuacji, gdy próbuję ustawić listę ACL.
Nowy kod V2.0:
# Saves label to S3 bucket
s3 = Aws::S3::Resource.new
obj = s3.bucket(ENV['S3_BUCKET_NAME']).object("#{shippinglabel_filename}")
obj.put(Base64.decode64(label_base64), { :acl => :public_read })
pojawia się błąd Aws::S3::Errors::InvalidArgument
, wskazał na ACL.
Jaki jest pełny komunikat o błędzie? – dgilperez
Aws :: S3 :: Błędy :: InvalidArgument jest dużą częścią wiadomości. Konsola po prostu wskazuje na mój Model na linii obj.put. Może opublikować zrzut ekranu, jeśli byłoby to pomocne. – bnzelener
Zastanawiam się, czy to była jakaś wskazówka dotycząca błędu, na przykład format argumentu lub że nie jest dozwolony lub taki. Bez obaw. – dgilperez