Saya mencoba menghapus file gambar yang diunggah dengan AWS-SDK-Core Ruby Gem.
Saya memiliki kode berikut:
require 'aws-sdk-core'
def pull_picture(picture)
Aws.config = {
:access_key_id => ENV["AWS_ACCESS_KEY_ID"],
:secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
:region => 'us-west-2'
}
s3 = Aws::S3::Client.new
test = s3.get_object(
:bucket => ENV["AWS_S3_BUCKET"],
:key => picture.image_url.split('/')[-2],
)
end
Namun, saya mendapatkan kesalahan berikut:
Ember yang Anda coba akses harus diatasi menggunakan titik akhir yang ditentukan. Silakan kirim semua permintaan di masa mendatang ke titik akhir ini.
Saya tahu wilayah ini benar karena jika saya mengubahnya us-east-1
, kesalahan berikut muncul:
Kunci yang ditentukan tidak ada.
Apa yang saya lakukan salah di sini?
ruby-on-rails
ruby
amazon-web-services
amazon-s3
pengguna3575214
sumber
sumber
Jawaban:
Tampaknya ember ini dibuat di wilayah yang berbeda, yaitu IE bukan us-west-2. Itulah satu-satunya saat saya melihat "Ember yang Anda coba akses harus diatasi menggunakan titik akhir yang ditentukan. Silakan kirim semua permintaan di masa mendatang ke titik akhir ini."
sumber
ENV["AWS_REGION"]
ke nilai yang benar (mis."us-east-1"
) Untuk bucket sebelum menginisialisasi klienPeriksa lokasi bucket Anda di konsol, lalu gunakan ini sebagai referensi titik akhir mana yang akan digunakan: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
sumber
region: 'us-west-1',
dengan apa?https://s3.amazonaws.com/mybucket/myasset.jpg
denganhttps://mybucket.s3-ap-southeast-2.amazonaws.com/myasset.jpg
untuk memperbaiki kesalahan itu.Saya menghadapi kesalahan yang sama karena ember berada di kawasan
us-west-2
dan pola URL memiliki nama ember di jalur. Suatu kali, saya mengubah pola URL untuk menjadikan bucketname sebagai subdomain URL untuk mengambil file dan itu berhasil.Untuk misalnya URL sebelumnya
Lalu saya menggantinya sebagai
sumber
Untuk banyak paket S3 API (Saya baru-baru ini mengalami masalah ini paket npm s3 ) Anda dapat mengalami masalah di mana wilayah diasumsikan sebagai Standar AS, dan pencarian dengan nama akan mengharuskan Anda untuk secara eksplisit menentukan wilayah jika Anda memilih untuk menjadi tuan rumah ember di luar wilayah itu.
sumber
Selama pembuatan S3Client, Anda dapat menentukan pemetaan titik akhir ke wilayah tertentu. Jika default
s3.amazonaws.com
maka bucket akan dibuat dius-east-1
yang merupakan Virginia Utara.Lebih detail tentang titik akhir S3 dan wilayah dalam dokumen AWS: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region .
Jadi, selalu pastikan tentang titik akhir / wilayah saat membuat S3Client dan akses sumber S3 menggunakan klien yang sama di wilayah yang sama.
Jika bucket dibuat dari AWS S3 Console, lalu periksa wilayah dari konsol untuk bucket tersebut lalu buat Klien S3 di wilayah itu menggunakan detail titik akhir yang disebutkan dalam tautan di atas.
sumber
Tidak ada jawaban di atas yang memperbaiki masalah saya.
Jawaban di atas mungkin lebih cenderung menjadi penyebab masalah Anda, tetapi masalah saya adalah bahwa saya menggunakan nama ember yang salah. Itu nama ember yang valid, itu bukan ember saya.
Ember yang saya tunjukkan berada di wilayah yang berbeda dengan fungsi lambda saya jadi periksa nama ember Anda!
sumber
Saya mengalami masalah ini ketika menggunakan profil AWS yang berbeda. Saya melihat kesalahan ketika saya menggunakan akun dengan izin admin, jadi kemungkinan masalah izin sepertinya tidak mungkin.
Ini benar-benar kesal bagi saya bahwa AWS sangat rentan untuk mengeluarkan pesan kesalahan yang memiliki sedikit korelasi dengan tindakan yang diperlukan, dari perspektif pengguna.
sumber
Untuk ppl yang masih menghadapi masalah ini, coba tambahkan s3_host sebagai berikut ke hash konfigurasi
Ini memperbaiki masalah bagi saya.
sumber
Saya mendapatkan kesalahan ini ketika saya mencoba mengakses ember yang tidak ada.
Saya keliru mengganti variabel path dengan variabel nama bucket dan jadi nama bucket memiliki nilai path file. Jadi mungkin periksa ulang, apakah nama ember yang Anda tetapkan pada permintaan Anda benar.
sumber
Saya memiliki kesalahan yang sama. Itu terjadi ketika klien s3 dibuat dengan titik akhir yang berbeda dari yang ditetapkan saat membuat ember.
s3Client = AmazonS3Client Baru (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint.USWest2)
s3Client = AmazonS3Client Baru (AWS_ACCESS_KEY, AWS_SECRET_KEY, RegionEndpoint. USEast1 )
sumber
Saya telah menghadapi masalah yang sama. Setelah banyak perjuangan saya menemukan bahwa masalah sebenarnya adalah dengan com.amazonaws dependensi. Setelah menambahkan dependensi kesalahan ini hilang.
sumber
Saya tinggal di Inggris terus berusaha untuk 'us-west-2'region. Jadi dialihkan ke 'eu-west-2'. Wilayah yang benar untuk S3 adalah 'eu-west-2'
sumber
Ini terjadi pada saya ketika saya memiliki batasan ip sumber pada kebijakan yang digunakan oleh pengguna (kunci akses / kunci rahasia) untuk membuat ember s3. IP saya akurat - tetapi untuk beberapa alasan tidak berfungsi dan memberikan kesalahan ini.
sumber
Setelah pencarian yang panjang, saya menemukan solusi yang berfungsi. Masalahnya adalah karena kesalahan
region-code
.di bawah ini adalah daftar kode wilayah, atur yang sesuai dan masalah Anda akan terpecahkan.
Anda dapat menemukan kode wilayah Anda di klik sudut kanan nama ember.
Untuk detail mode Klik
sumber