Tutorial: Buat REST API proxy Amazon S3 sebagai - APIGerbang Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Buat REST API proxy Amazon S3 sebagai

Sebagai contoh untuk menampilkan menggunakan REST API in API Gateway to proxy Amazon S3, bagian ini menjelaskan cara membuat dan mengonfigurasi untuk mengekspos REST API operasi Amazon S3 berikut:

Anda mungkin ingin mengimpor sampel API sebagai proxy Amazon S3, seperti yang ditunjukkan pada. Buka API definisi sampel API sebagai proxy Amazon S3 Sampel ini berisi metode yang lebih terbuka. Untuk petunjuk tentang cara mengimpor API menggunakan API definisi Terbuka, lihatKembangkan REST APIs menggunakan Open API in API Gateway.

catatan

Untuk mengintegrasikan API Gateway Anda API 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.

Siapkan IAM izin API untuk menjalankan tindakan Amazon S3

Untuk memungkinkan API untuk menjalankan tindakan Amazon S3, Anda harus memiliki kebijakan yang IAM sesuai yang dilampirkan ke IAM peran.

Untuk membuat peran eksekusi proxy AWS layanan
  1. Masuk ke AWS Management Console dan buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Pilih Peran.

  3. Pilih Buat peran.

  4. Pilih AWS layanan di bawah Pilih jenis entitas tepercaya, lalu pilih APIGateway dan pilih Izinkan API Gateway untuk mendorong CloudWatch log ke Log.

  5. Pilih Berikutnya, lalu pilih Berikutnya.

  6. Untuk nama PeranAPIGatewayS3ProxyPolicy, masukkan, lalu pilih Buat peran.

  7. Dalam daftar Peran, pilih peran yang baru saja Anda buat. Anda mungkin perlu menggulir atau menggunakan bilah pencarian untuk menemukan peran.

  8. Untuk peran yang dipilih, pilih tab Tambahkan izin.

  9. Pilih Lampirkan kebijakan dari daftar dropdown.

  10. Di bilah pencarian, masukkan AmazonS3FullAccess dan pilih Tambahkan izin.

    catatan

    Tutorial ini menggunakan kebijakan terkelola untuk kesederhanaan. Sebagai praktik terbaik, Anda harus membuat IAM kebijakan sendiri untuk memberikan izin minimum yang diperlukan.

  11. Perhatikan Peran yang baru dibuatARN, Anda akan menggunakannya nanti.

Buat API sumber daya untuk mewakili sumber daya Amazon S3

Anda menggunakan sumber API daya root (/) sebagai wadah bucket Amazon S3 pemanggil yang diautentikasi. Anda juga membuat Folder dan Item sumber daya 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 permintaanURL, oleh pemanggil.

catatan

Saat mengakses objek yang kunci objeknya termasuk / atau karakter khusus lainnya, karakter perlu URL dikodekan. Misalnya, test/test.txt harus dikodekan ke. test%2Ftest.txt

Untuk membuat API sumber daya yang mengekspos fitur layanan Amazon S3
  1. Pada saat yang sama Wilayah AWS Anda membuat bucket Amazon S3 Anda, buat myS3 API bernama. Sumber API daya root ini (/) mewakili layanan Amazon S3. Pada langkah ini, Anda membuat dua sumber daya tambahan/{folder} dan/{item}.

  2. Pilih Buat sumber daya.

  3. Matikan sumber daya Proxy.

  4. Untuk jalur Sumber Daya, pilih/.

  5. Untuk Nama sumber daya, masukkan {folder}.

  6. Tetap CORS(Berbagi Sumber Daya Lintas Asal) tidak dicentang.

  7. Pilih Buat sumber daya.

  8. Pilih sumber daya/{folder}, lalu pilih Buat sumber daya.

  9. Gunakan langkah-langkah sebelumnya untuk membuat sumber daya turunan dari/{folder} bernama{item}.

    Final Anda API akan terlihat mirip dengan yang berikut ini:

    Buat API in API Gateway sebagai proxy Amazon S3

Paparkan API metode untuk mencantumkan bucket Amazon S3 pemanggil

Mendapatkan daftar bucket Amazon S3 dari penelepon melibatkan pemanggilan tindakan Layanan GETdi Amazon S3. Pada sumber API daya root, (/), buat GET metode. Konfigurasikan GET metode untuk diintegrasikan dengan Amazon S3, sebagai berikut.

Untuk membuat dan menginisialisasi API metode GET /
  1. Pilih sumber daya/, lalu pilih Create method.

  2. Untuk jenis metode, pilih GET.

  3. Untuk jenis Integrasi, pilih Layanan AWS.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat bucket Amazon S3.

  5. Untuk Layanan AWS, pilih Amazon Simple Storage Service.

  6. Biarkan AWS subdomain kosong.

  7. Untuk HTTPmetode, pilih GET.

  8. Untuk tipe Action, pilih Use path override.

    Dengan penggantian jalur, API Gateway meneruskan permintaan klien ke Amazon S3 sebagai permintaan gaya jalur Amazon S3 yang sesuai, di mana sumber daya Amazon S3 diekspresikan oleh jalur sumber daya pola. REST API s3-host-name/bucket/key APIGateway menyetel s3-host-name dan meneruskan klien yang ditentukan bucket dan key dari klien ke Amazon S3.

  9. Untuk Path override, masukkan/.

  10. Untuk peran Eksekusi, masukkan peran ARN untukAPIGatewayS3ProxyPolicy.

  11. Pilih Pengaturan permintaan Metode.

    Anda menggunakan pengaturan permintaan metode untuk mengontrol siapa yang dapat memanggil metode ini dari AndaAPI.

  12. Untuk Otorisasi, dari menu tarik-turun, pilih. AWS_IAM

    Mendeklarasikan jenis respons metode
  13. Pilih metode Buat.

Pengaturan ini mengintegrasikan GET https://your-api-host/stage/ permintaan frontend dengan backend. GET https://your-s3-host/

APIAgar Anda mengembalikan respons dan pengecualian yang berhasil dengan benar kepada penelepon, Anda menyatakan 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 respons.

Untuk mendeklarasikan tipe respons untuk metode GET /
  1. Pada tab Respons Metode, di bawah Respons 200, pilih Edit.

  2. Pilih Add header dan lakukan hal berikut:

    1. Untuk nama Header, masukkanContent-Type.

    2. Pilih Tambahkan header.

    Ulangi langkah-langkah ini untuk membuat Timestamp header dan Content-Length header.

  3. Pilih Simpan.

  4. Pada tab Respons metode, di bawah Respons metode, pilih Buat respons.

  5. Untuk kode HTTP status, masukkan 400.

    Anda tidak menetapkan header apa pun untuk respons ini.

  6. Pilih Simpan.

  7. 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 XML payload dan respons metode default dari API Gateway mengembalikan JSON payload, Anda harus memetakan nilai parameter header Content-Type backend ke counterpart frontend. Jika tidak, klien akan menerima application/json untuk tipe konten ketika badan respons sebenarnya adalah XML string. Prosedur berikut menunjukkan cara mengaturnya. Selain itu, Anda juga ingin menampilkan parameter header lainnya ke klien, seperti Tanggal dan Panjang Konten.

Untuk mengatur pemetaan header respons untuk metode/GET
  1. Pada tab Respons integrasi, di bawah Default - Respons, pilih Edit.

  2. Untuk header Content-Length, masukkan integration.response.header.Content-Length untuk nilai pemetaan.

  3. Untuk header Content-Type, masukkan integration.response.header.Content-Type untuk nilai pemetaan.

  4. Untuk header Timestamp, masukkan integration.response.header.Date untuk nilai pemetaan.

  5. Pilih Simpan. Hasilnya akan terlihat mirip dengan yang berikut:

    Memetakan header respons integrasi ke header respons metode
  6. Pada tab Respons integrasi, di bawah Respons integrasi, pilih Buat respons.

  7. Untuk HTTPstatus regex, masukkan. 4\d{2} Ini memetakan semua kode status HTTP respons 4xx ke respons metode.

  8. Untuk kode status respons Metode, pilih400.

  9. Pilih Buat.

  10. Ulangi langkah-langkah berikut untuk membuat respons integrasi untuk respons metode 500. Untuk HTTPstatus regex, masukkan. 5\d{2}

Sebagai praktik yang baik, Anda dapat menguji yang telah API Anda konfigurasikan sejauh ini.

Untuk menguji GET / metode
  1. Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.

  2. Pilih Uji. Hasilnya akan terlihat seperti gambar berikut:

    Uji hasil GET bucket API root

Mengekspos API metode untuk mengakses bucket Amazon S3

Untuk bekerja dengan bucket Amazon S3, Anda mengekspos GET metode pada resource/{folder} untuk mencantumkan objek dalam bucket. Instruksi mirip dengan yang dijelaskan dalamPaparkan API metode untuk mencantumkan bucket Amazon S3 pemanggil. Untuk metode lainnya, Anda dapat mengimpor sampel di API sini,Buka API definisi sampel API sebagai proxy Amazon S3.

Untuk mengekspos GET metode pada sumber daya folder
  1. Pilih sumber daya/{folder}, lalu pilih Create method.

  2. Untuk jenis metode, pilih GET.

  3. Untuk jenis Integrasi, pilih Layanan AWS.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat bucket Amazon S3.

  5. Untuk Layanan AWS, pilih Amazon Simple Storage Service.

  6. Biarkan AWS subdomain kosong.

  7. Untuk HTTPmetode, pilih GET.

  8. Untuk tipe Action, pilih Use path override.

  9. Untuk Path override, masukkan{bucket}.

  10. Untuk peran Eksekusi, masukkan peran ARN untukAPIGatewayS3ProxyPolicy.

  11. Pilih metode Buat.

Anda mengatur parameter {folder} jalur di titik akhir Amazon S3. URL Anda perlu memetakan parameter {folder} jalur permintaan metode ke parameter {bucket} jalur permintaan integrasi.

Untuk memetakan {folder} ke {bucket}
  1. Pada tab Permintaan integrasi, di bawah Pengaturan permintaan integrasi, pilih Edit.

  2. Pilih parameter URL jalur, lalu pilih Tambahkan parameter jalur.

  3. Untuk Nama, masukkan bucket.

  4. Untuk Dipetakan dari, masukkanmethod.request.path.folder.

  5. Pilih Simpan.

Sekarang, Anda menguji AndaAPI.

Untuk menguji /{folder} GET metodenya.
  1. Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.

  2. Di bawah Path, untuk folder, masukkan nama bucket Anda.

  3. Pilih Uji.

    Hasil tes akan berisi daftar objek di bucket Anda.

    Uji GET metode untuk membuat bucket Amazon S3.

Mengekspos API metode untuk mengakses objek Amazon S3 dalam ember

Amazon S3 mendukungGET,,DELETE, HEADOPTIONS, POST dan PUT tindakan untuk mengakses dan mengelola objek dalam bucket tertentu. Dalam tutorial ini, Anda mengekspos GET metode pada {folder}/{item} sumber daya untuk mendapatkan gambar dari ember. Untuk aplikasi sumber {folder}/{item} daya lainnya, lihat sampelAPI,Buka API definisi sampel API sebagai proxy Amazon S3.

Untuk mengekspos GET metode pada sumber daya item
  1. Pilih sumber daya/{item}, lalu pilih Create method.

  2. Untuk jenis metode, pilih GET.

  3. Untuk jenis Integrasi, pilih Layanan AWS.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat bucket Amazon S3.

  5. Untuk Layanan AWS, pilih Amazon Simple Storage Service.

  6. Biarkan AWS subdomain kosong.

  7. Untuk HTTPmetode, pilih GET.

  8. Untuk tipe Action, pilih Use path override.

  9. Untuk penggantian Path, masukkan {bucket}/{object}.

  10. Untuk peran Eksekusi, masukkan peran ARN untukAPIGatewayS3ProxyPolicy.

  11. Pilih metode Buat.

Anda mengatur parameter {folder} dan {item} jalur di titik akhir Amazon S3. URL Anda perlu memetakan parameter jalur permintaan metode ke parameter jalur permintaan integrasi.

Dalam langkah ini, Anda melakukan hal berikut:

  • Petakan parameter {folder} jalur permintaan metode ke parameter {bucket} jalur permintaan integrasi.

  • Petakan parameter {item} jalur permintaan metode ke parameter {object} jalur permintaan integrasi.

Untuk memetakan {folder} ke {bucket} dan {item} ke {object}
  1. Pada tab Permintaan integrasi, di bawah Pengaturan permintaan integrasi, pilih Edit.

  2. Pilih parameter URL jalur.

  3. Pilih Tambahkan parameter jalur.

  4. Untuk Nama, masukkan bucket.

  5. Untuk Dipetakan dari, masukkanmethod.request.path.folder.

  6. Pilih Tambahkan parameter jalur.

  7. Untuk Nama, masukkan object.

  8. Untuk Dipetakan dari, masukkanmethod.request.path.item.

  9. Pilih Simpan.

Untuk menguji /{folder}/{object} GET metodenya.
  1. Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.

  2. Di bawah Path, untuk folder, masukkan nama bucket Anda.

  3. Di bawah Path, untuk item, masukkan nama item.

  4. Pilih Uji.

    Badan respons akan berisi isi item.

    Uji GET metode untuk membuat bucket Amazon S3.

    Permintaan mengembalikan teks biasa (“Hello world”) dengan benar sebagai konten file yang ditentukan (test.txt) di bucket Amazon S3 yang diberikan (amzn-s3-demo-bucket).

Untuk mengunduh atau mengunggah file biner, yang di API Gateway dianggap sebagai hal lain selain JSON konten yang dikodekan utf-8, pengaturan tambahan API diperlukan. Ini diuraikan sebagai berikut:

Untuk mengunduh atau mengunggah file biner dari S3
  1. Daftarkan jenis media dari file yang terpengaruh ke API's binaryMediaTypes. Anda dapat melakukan ini di konsol:

    1. Pilih APIpengaturan untukAPI.

    2. Di bawah Jenis media biner, pilih Kelola jenis media.

    3. Pilih Tambahkan jenis media biner, lalu masukkan jenis media yang diperlukan, misalnya,image/png.

    4. Pilih Simpan perubahan untuk menyimpan pengaturan.

  2. Tambahkan header Content-Type (untuk diunggah) dan/atau Accept (untuk diunduh) ke permintaan metode untuk meminta klien menentukan jenis media biner yang diperlukan dan memetakannya ke permintaan integrasi.

  3. Setel Penanganan Konten ke Passthrough dalam permintaan integrasi (untuk diunggah) dan dalam respons integrasi (untuk diunduh). Pastikan tidak ada template pemetaan yang ditentukan untuk jenis konten yang terpengaruh. Untuk informasi selengkapnya, lihat Perilaku Passthrough Integrasi dan Pilih Templat VTL Pemetaan.

Batas ukuran muatan adalah 10 MB. Lihat APIKuota gateway untuk mengonfigurasi dan menjalankan REST API.

Pastikan file di Amazon S3 memiliki jenis konten yang benar yang ditambahkan sebagai metadata file. Untuk konten media yang dapat disederhanakan, Content-Disposition:inline mungkin juga perlu ditambahkan ke metadata.

Untuk informasi selengkapnya tentang dukungan biner di API Gateway, lihatKonversi jenis konten di API Gateway.