Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Membuat REST API sebagai proxy Amazon S3
Sebagai contoh untuk menampilkan penggunaan REST API di API Gateway ke proxy Amazon S3, bagian ini menjelaskan cara membuat dan mengonfigurasi REST API untuk mengekspos operasi Amazon S3 berikut:
-
Ekspos GET pada sumber daya root API untuk mencantumkan semua bucket Amazon S3 dari pemanggil.
-
Ekspos GET pada sumber daya Folder untuk melihat daftar semua objek dalam bucket Amazon S3.
-
Ekspo Folder/Item s GET pada sumber daya untuk melihat atau mengunduh objek dari bucket Amazon S3.
Anda mungkin ingin mengimpor API sampel sebagai proxy Amazon S3, seperti yang ditunjukkan padaDefinisi OpenAPI dari contoh API sebagai proxy Amazon S3. Sampel ini berisi metode yang lebih terbuka. Untuk petunjuk tentang cara mengimpor API menggunakan definisi OpenAPI, lihatKembangkan REST API menggunakan OpenAPI di API Gateway.
catatan
Untuk mengintegrasikan API Gateway API Anda dengan Amazon S3, Anda harus memilih wilayah di mana layanan API Gateway dan Amazon S3 tersedia. Untuk ketersediaan wilayah, lihat Titik Akhir dan Kuota Amazon API Gateway.
Topik
Menyiapkan izin IAM untuk API untuk memanggil tindakan Amazon S3
Untuk mengizinkan API memanggil tindakan Amazon S3, Anda harus memiliki kebijakan IAM yang sesuai yang dilampirkan ke peran IAM. Pada langkah ini, Anda membuat peran IAM baru.
Untuk membuat AWS peran eksekusi proxy layanan
Masuk ke Konsol Manajemen AWS dan buka konsol IAM di https://console.aws.amazon.com/iam/
. -
Pilih Peran.
-
Pilih Buat peran.
-
Pilih AWS layanan di bawah Pilih jenis entitas tepercaya, lalu pilih API Gateway dan pilih Iz inkan API Gateway untuk mendorong CloudWatch log ke Log.
-
Pilih Berikutnya, lalu pilih Ber ikutnya.
-
Untuk Nama peran, masukkan
APIGatewayS3ProxyPolicy, lalu pilih Buat peran. -
Dalam daftar Peran, pilih peran yang baru saja Anda buat. Anda mungkin perlu menggulir atau menggunakan bilah pencarian untuk menemukan peran.
-
Untuk peran yang dipilih, pilih tab Tambah izin.
-
Pilih Lampirkan kebijakan dari daftar dropdown.
-
Di bilah pencarian, masukkan
AmazonS3FullAccessdan pilih Tambahkan izin.catatan
Tutorial ini menggunakan kebijakan terkelola untuk kesederhanaan. Sebagai praktik terbaik, Anda harus membuat kebijakan IAM sendiri untuk memberikan izin minimum yang diperlukan.
-
Perhatikan Role AR N yang baru dibuat, Anda akan menggunakannya nanti.
Buat sumber daya API untuk mewakili sumber daya Amazon S3
Anda menggunakan sumber daya root (/) API sebagai wadah bucket Amazon S3 pemanggil yang diautentikasi. Anda juga membuat Item sumber daya Folder dan untuk mewakili bucket Amazon S3 tertentu dan objek Amazon S3 tertentu, masing-masing. Nama folder dan kunci objek akan ditentukan, dalam bentuk parameter jalur sebagai bagian dari URL permintaan, oleh pemanggil.
catatan
Saat mengakses objek yang kunci objeknya termasuk / atau karakter khusus lainnya, karakter harus dikodekan URL. Misalnya, test/test.txt harus dikodekan ketest%2Ftest.txt.
Untuk membuat sumber daya API yang menampilkan fitur layanan Amazon S3
-
Sama seperti Wilayah AWS Anda membuat bucket Amazon S3 Anda, buat API bernama MyS3. Sumber daya root API ini (/) mewakili layanan Amazon S3. Pada langkah ini, Anda membuat dua sumber daya tambahan/{folder} dan/{item}.
-
Pilih Buat sumber daya.
Tetap matikan sumber daya Proxy.
Untuk jalur sumber daya, pilih
/.Untuk Nama sumber daya, masukkan
{folder}.Jangan cent ang CORS (Cross Origin Resource Sharing).
Pilih Buat sumber daya.
Pilih sumber daya/{folder}, lalu pilih Buat sumber daya.
Gunakan langkah-langkah sebelumnya untuk membuat sumber daya anak dari/{folder} bernama
{item}.API akhir Anda akan terlihat mirip dengan yang berikut:
Mengekspos metode API untuk mencantumkan bucket Amazon S3 pemanggil
Mendapatkan daftar bucket Amazon S3 dari pemanggil melibatkan pemanggilan tindakan GET Service di Amazon S3. Pada sumber daya root API, (/), buat metode GET. Konfigurasikan metode GET untuk berintegrasi dengan Amazon S3, sebagai berikut.
Untuk membuat dan menginisialisasi metode GET/API
-
Pilih sumber daya/, lalu pilih Metode Buat.
Untuk jenis metode, pilih GET.
Untuk Jenis Integrasi, pilih Layanan AWS.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat bucket Amazon S3 Anda.
Untuk Layanan AWS, pilih Layanan Penyimpanan Sederhana Amazon.
Biarkan AWS subdomain kosong.
Untuk metode HTTP, pilih GET.
Untuk Jenis tindakan, pilih Gunakan penggantian jalur.
Dengan penggantian jalur, API Gateway meneruskan permintaan klien ke Amazon S3 sebagai permintaan gaya jalur API REST Amazon S3 yang sesuai, di mana sumber daya Amazon S3 dinyatakan oleh jalur sumber daya dari pola.
s3-host-name/bucket/keyAPI Gateway menyets3-host-nameel dan meneruskan klienbucketyang ditentukan dankeydari klien ke Amazon S3.Untuk Path override, masukkan/.
Untuk peran eksekusi, masukkan peran ARN untuk
APIGatewayS3ProxyPolicy.Pilih Set elan permintaan metode.
Anda menggunakan pengaturan permintaan metode untuk mengontrol siapa yang dapat memanggil metode ini dari API Anda.
-
Untuk Otorisasi, dari menu dropdown, pilih
AWS_IAM.
Pilih Metode Buat.
Pengaturan ini mengintegrasikan GET
https:// permintaan frontend dengan back your-api-host/stage/GET https:// end.your-s3-host/
Agar API Anda mengembalikan respons dan pengecualian yang berhasil dengan benar ke pemanggil, Anda mendeklarasikan tanggapan 200, 400, dan 500 dalam respons Metode. Anda menggunakan pemetaan default untuk 200 tanggapan sehingga tanggapan backend dari kode status yang tidak dideklarasikan di sini akan dikembalikan ke pemanggil sebagai 200.
Untuk mendeklarasikan tipe respons untuk metode GET/
-
Pada tab Respon se Metode, di bawah Response 200, pilih Edit.
-
Pilih Tambahkan header dan lakukan hal berikut:
Untuk nama Header, masukkan
Content-Type.Pilih Tambahkan header.
Ulangi langkah-langkah ini untuk membuat
Timestampheader danContent-Lengthheader. Pilih Simpan.
Pada tab respons metode, di bawah respons metode, pilih Buat respons.
Untuk kode status HTTP, masukkan 400.
Anda tidak menetapkan header apa pun untuk respons ini.
Pilih Simpan.
Ulangi langkah-langkah berikut untuk membuat respons 500.
Anda tidak menetapkan header apa pun untuk respons ini.
Karena respons integrasi yang berhasil dari Amazon S3 mengembalikan bucket list sebagai payload XML dan respons metode default dari API Gateway mengembalikan muatan JSON, Anda harus memetakan nilai parameter Content-Type header backend ke mitra frontend. Jika tidak, klien akan menerima application/json untuk jenis konten ketika badan respons sebenarnya adalah string XML. Prosedur berikut menunjukkan cara mengaturnya. Selain itu, Anda juga ingin menampilkan parameter header lainnya kepada klien, seperti Tanggal dan Content-Length.
Untuk mengatur pemetaan header respons untuk metode GET/
-
Pada tab Resp ons Integrasi, di bawah Def ault - Response, pilih Edit.
Untuk Content-Length header, masukkan
integration.response.header.Content-Lengthuntuk nilai pemetaan.Untuk Content-Type header, masukkan
integration.response.header.Content-Typeuntuk nilai pemetaan.Untuk header Timestamp, masukkan
integration.response.header.Dateuntuk nilai pemetaan.Pilih Simpan. Hasilnya akan terlihat mirip dengan berikut ini:
-
Pada tab Respon integrasi, di bawah Respons integrasi, pilih Buat respons.
Untuk regex status HTTP, masukkan.
4\d{2}Ini memetakan semua kode status respons HTTP 4xx ke respons metode.Untuk Kode status respons Metode, pilih
400.Pilih Buat.
Ulangi langkah-langkah berikut untuk membuat respons integrasi untuk respons metode 500. Untuk regex status HTTP, masukkan.
5\d{2}
Sebagai praktik yang baik, Anda dapat menguji API yang telah Anda konfigurasikan sejauh ini.
Untuk menguji metode GET/
-
Pilih tab Tes. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Pilih Uji. Hasilnya akan terlihat seperti gambar berikut:
Mengekspos metode API untuk mengakses bucket Amazon S3
Untuk bekerja dengan bucket Amazon S3, Anda mengekspos GET metode pada sumber daya/{folder} untuk mencantumkan objek dalam bucket. Instruksinya mirip dengan yang dijelaskan dalamMengekspos metode API untuk mencantumkan bucket Amazon S3 pemanggil. Untuk metode lainnya, Anda dapat mengimpor contoh API di sini,Definisi OpenAPI dari contoh API sebagai proxy Amazon S3.
Untuk mengekspos metode GET pada sumber daya folder
Pilih sumber daya/{folder}, lalu pilih Metode Buat.
Untuk jenis metode, pilih GET.
Untuk Jenis Integrasi, pilih Layanan AWS.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat bucket Amazon S3 Anda.
Untuk Layanan AWS, pilih Layanan Penyimpanan Sederhana Amazon.
Biarkan AWS subdomain kosong.
Untuk metode HTTP, pilih GET.
Untuk Jenis tindakan, pilih Gunakan penggantian jalur.
Untuk Path override, masukkan
{bucket}.Untuk peran eksekusi, masukkan peran ARN untuk
APIGatewayS3ProxyPolicy.Pilih Metode Buat.
Anda menetapkan parameter {folder} path di URL titik akhir Amazon S3. Anda perlu memet {folder} akan parameter jalur dari permintaan metode ke parameter {bucket} jalur permintaan integrasi.
Untuk memet akan {folder} ke {bucket}
-
Pada tab Per mintaan integrasi, di bawah Peng aturan permintaan integrasi, pilih Edit.
Pilih parameter jalur URL, lalu pilih Tambahkan parameter jalur.
Untuk Nama, masukkan
bucket.-
Untuk Dipetakan dari, masukkan
method.request.path.folder. Pilih Simpan.
Sekarang, Anda menguji API Anda.
Untuk menguji metode/{folder} GET.
-
Pilih tab Tes. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Di bawah Path , untuk folder, masukkan nama bucket Anda.
-
Pilih Uji.
Hasil tes akan berisi daftar objek di bucket Anda.
Mengekspos metode API untuk mengakses objek Amazon S3 dalam bucket
Amazon S3 mendukung tindakan GET, DELETE, HEAD, OPTIONS, POST dan PUT untuk mengakses dan mengelola objek dalam bucket tertentu. Dalam tutorial ini, Anda mengekspos GET metode pada {folder}/{item} sumber daya untuk mendapatkan gambar dari bucket. Untuk aplikasi sumber {folder}/{item} daya lainnya, lihat contoh API,Definisi OpenAPI dari contoh API sebagai proxy Amazon S3.
Untuk mengekspos metode GET pada sumber daya item
-
Pilih sumber daya/{item}, lalu pilih Metode Buat.
-
Untuk jenis metode, pilih GET.
-
Untuk Jenis Integrasi, pilih Layanan AWS.
-
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat bucket Amazon S3 Anda.
-
Untuk Layanan AWS, pilih Layanan Penyimpanan Sederhana Amazon.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih GET.
-
Untuk Jenis tindakan, pilih Gunakan penggantian jalur.
-
Untuk Path override, masukkan {bucket}/{object}.
-
Untuk peran eksekusi, masukkan peran ARN untuk
APIGatewayS3ProxyPolicy. -
Pilih Metode Buat.
Anda mengatur parameter {folder} dan {item} jalur di URL titik akhir Amazon S3. Anda perlu memetakan parameter jalur permintaan metode ke parameter jalur permintaan integrasi.
Dalam langkah ini, Anda melakukan hal berikut:
-
Petakan parameter
{folder}jalur dari permintaan metode ke parameter{bucket}path dari permintaan integrasi. Petakan parameter
{item}jalur dari permintaan metode ke parameter{object}path dari permintaan integrasi.
Untuk mem etakan {folder} ke {bucket} dan {item} ke {object}
-
Pada tab Per mintaan integrasi, di bawah Peng aturan permintaan integrasi, pilih Edit.
-
Pilih parameter jalur URL.
-
Pilih Tambahkan parameter jalur.
-
Untuk Nama, masukkan
bucket. -
Untuk Dipetakan dari, masukkan
method.request.path.folder. -
Pilih Tambahkan parameter jalur.
-
Untuk Nama, masukkan
object. -
Untuk Dipetakan dari, masukkan
method.request.path.item. -
Pilih Simpan.
Untuk menguji metode/{folder}/{item} GET.
-
Pilih tab Tes. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Di bawah Path , untuk folder, masukkan nama bucket Anda.
-
Di bawah Path , untuk item, masukkan nama item.
-
Pilih Uji.
Badan respons akan berisi isi item.
Permintaan mengembalikan teks biasa (“Hello world”) dengan benar sebagai konten file yang ditentukan (test.txt) dalam bucket Amazon S3 yang diberikan (amzn-s3-demo-bucket).
Untuk mengunduh atau mengunggah file biner, yang di API Gateway dianggap sebagai hal selain konten JSON yang dikodekan utf-8, pengaturan API tambahan diperlukan. Ini diuraikan sebagai berikut:
Untuk mengunduh atau mengunggah file biner dari S3
-
Daftarkan jenis media dari file yang terpengaruh ke biner APIMediaTypes. Anda dapat melakukan ini di konsol:
-
Pilih pengaturan API untuk API.
-
Di bawah Jenis media biner, pilih Kelola jenis media.
-
Pilih Tambahkan jenis media biner, lalu masukkan jenis media yang diperlukan, misalnya,
image/png. -
Pilih Simpan perubahan untuk menyimpan pengaturan.
-
-
Tambahkan header
Content-Type(for upload) and/orAccept(for download) ke permintaan metode untuk meminta klien menentukan jenis media biner yang diperlukan dan memetakannya ke permintaan integrasi. -
Set el Penanganan Konten ke
Passthroughdalam permintaan integrasi (untuk unggahan) dan dalam respons integrasi (untuk unduhan). Pastikan tidak ada template pemetaan yang ditentukan untuk jenis konten yang terpengaruh. Untuk informasi selengkapnya, lihat Transformasi data untuk REST API di API Gateway.
Batas ukuran payload adalah 10 MB. Lihat Kuota untuk mengonfigurasi dan menjalankan REST API di API Gateway.
Pastikan file di Amazon S3 memiliki jenis konten yang benar ditambahkan sebagai metadata file. Untuk konten media yang dapat dial Content-Disposition:inline irkan, mungkin juga perlu ditambahkan ke metadata.
Untuk informasi selengkapnya tentang dukungan biner di API Gateway, lihatKonversi jenis konten di API Gateway.