Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Selain menggunakan konsol, Anda dapat menggunakan AWS Storage Gateway API untuk mengonfigurasi dan mengelola gateway secara terprogram. Bagian ini menjelaskan AWS Storage Gateway operasi, penandatanganan permintaan untuk otentikasi, dan penanganan kesalahan. Untuk informasi tentang wilayah dan titik akhir yang tersedia untuk Storage Gateway, lihat AWS Storage Gateway Endpoints dan Quotas di. Referensi Umum AWS
catatan
Anda juga dapat menggunakan AWS SDKs saat mengembangkan aplikasi dengan AWS Storage Gateway. AWS SDKs Untuk Java, .NET, dan PHP membungkus AWS Storage Gateway API yang mendasarinya, menyederhanakan tugas pemrograman Anda. Untuk informasi tentang mengunduh pustaka SDK, lihat Pustaka Kode Contoh
Topik
Header Permintaan yang Diperlukan Storage Gateway
Bagian ini menjelaskan header yang diperlukan yang harus Anda kirim dengan setiap permintaan POST ke Storage Gateway. Anda menyertakan header HTTP untuk mengidentifikasi informasi kunci tentang permintaan termasuk operasi yang ingin Anda panggil, tanggal permintaan, dan informasi yang menunjukkan otorisasi Anda sebagai pengirim permintaan. Header tidak peka huruf besar/kecil dan urutan header tidak penting.
Contoh berikut menunjukkan header yang digunakan dalam ActivateGatewayoperasi.
POST / HTTP/1.1 Host: storagegateway.us-east-2.amazonaws.com Content-Type: application/x-amz-json-1.1 Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120425/us-east-2/storagegateway/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature=9cd5a3584d1d67d57e61f120f35102d6b3649066abdd4bf4bbcf05bd9f2f8fe2 x-amz-date: 20120912T120000Z x-amz-target: StorageGateway_20120630.ActivateGateway
Berikut ini adalah header yang harus disertakan dengan permintaan POST Anda ke Storage Gateway. Header yang ditampilkan di bawah ini yang dimulai dengan “x-amz” adalah AWS header -specific. Semua header lain yang terdaftar adalah header umum yang digunakan dalam transaksi HTTP.
Header | Deskripsi |
---|---|
Authorization |
Header otorisasi berisi beberapa informasi tentang permintaan yang memungkinkan Storage Gateway untuk menentukan apakah permintaan tersebut merupakan tindakan yang valid untuk pemohon. Format header ini adalah sebagai berikut (jeda baris ditambahkan untuk keterbacaan):
Dalam sintaks sebelumnya, Anda menentukan, tahun, bulan YourAccessKey, dan hari (yyyymmdd), wilayah, dan. CalculatedSignature Format header otorisasi ditentukan oleh persyaratan proses Penandatanganan AWS V4. Rincian penandatanganan dibahas dalam topikMenandatangani Permintaan. |
Content-Type |
Gunakan
|
Host |
Gunakan header host untuk menentukan titik akhir Storage Gateway tempat Anda mengirim permintaan. Misalnya,
|
x-amz-date |
Anda harus memberikan cap waktu baik di
|
x-amz-target |
Header ini menentukan versi API dan operasi yang Anda minta. Nilai header target dibentuk dengan menggabungkan versi API dengan nama API dan dalam format berikut.
Nilai operationName (misalnya ActivateGateway "“) dapat ditemukan dari daftar API,. Referensi API untuk Storage Gateway |
Menandatangani Permintaan
Storage Gateway mengharuskan Anda mengautentikasi setiap permintaan yang Anda kirim dengan menandatangani permintaan. Untuk menandatangani permintaan, Anda menghitung tanda tangan digital menggunakan fungsi hash kriptografi. Hash kriptografi adalah fungsi yang mengembalikan nilai hash unik berdasarkan input. Input ke fungsi hash termasuk teks permintaan Anda dan secret access key Anda. Fungsi hash mengembalikan nilai hash yang Anda sertakan dalam permintaan sebagai tanda tangan Anda. Tanda tangan adalah bagian header Authorization
dari permintaan Anda.
Setelah menerima permintaan Anda, Storage Gateway menghitung ulang tanda tangan menggunakan fungsi hash yang sama dan input yang Anda gunakan untuk menandatangani permintaan. Jika tanda tangan yang dihasilkan cocok dengan tanda tangan dalam permintaan, Storage Gateway akan memproses permintaan tersebut. Jika tidak, permintaan ditolak.
Storage Gateway mendukung otentikasi menggunakan AWS Signature Version 4. Proses untuk menghitung tanda tangan dapat dibagi menjadi tiga tugas:
-
Tugas 1: Buat Permintaan Canonical
Atur ulang permintaan HTTP Anda ke dalam format kanonik. Menggunakan formulir kanonik diperlukan karena Storage Gateway menggunakan bentuk kanonik yang sama ketika menghitung ulang tanda tangan untuk dibandingkan dengan yang Anda kirim.
-
Tugas 2: Buat String untuk Ditandatangani
Buat string yang akan Anda gunakan sebagai salah satu nilai input untuk fungsi hash kriptografi Anda. String, yang disebut string to sign, adalah rangkaian dari nama algoritme hash, tanggal permintaan, string cakupan kredensial, dan permintaan kanonikalisasi dari tugas sebelumnya. String lingkup kredensyal itu sendiri adalah rangkaian informasi tanggal, wilayah, dan layanan.
-
Buat tanda tangan untuk permintaan Anda menggunakan fungsi hash kriptografi yang menerima dua string input: string to sign dan kunci turunan. Kunci turunan dihitung dengan memulai dengan kunci akses rahasia Anda dan menggunakan string cakupan kredensyal untuk membuat serangkaian Kode Otentikasi Pesan berbasis Hash (). HMACs
Contoh Perhitungan Tanda Tangan
Contoh berikut memandu Anda melalui detail pembuatan tanda tangan untuk ListGateways. Contoh dapat digunakan sebagai referensi untuk memeriksa metode perhitungan tanda tangan Anda. Perhitungan referensi lainnya disertakan dalam Rangkaian Pengujian Signature Versi 4 dari Daftar Istilah Amazon Web Services.
Contoh tersebut mengasumsikan sebagai berikut:
-
Cap waktu permintaan adalah “Senin, 10 Sep 2012 00:00:00" GMT.
-
Titik akhirnya adalah wilayah AS Timur (Ohio).
Sintaks permintaan umum (termasuk isi JSON) adalah:
POST / HTTP/1.1 Host: storagegateway.us-east-2.amazonaws.com x-amz-Date: 20120910T000000Z Authorization:
SignatureToBeCalculated
Content-type: application/x-amz-json-1.1 x-amz-target: StorageGateway_20120630.ListGateways {}
Bentuk kanonik dari permintaan yang dihitung adalah:
POST
/
content-type:application/x-amz-json-1.1
host:storagegateway.us-east-2.amazonaws.com
x-amz-date:20120910T000000Z
x-amz-target:StorageGateway_20120630.ListGateways
content-type;host;x-amz-date;x-amz-target
44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
Baris terakhir dari permintaan kanonik adalah hash dari isi permintaan. Selain itu, perhatikan baris ketiga kosong dalam permintaan kanonik. Ini karena tidak ada parameter kueri untuk API ini (atau Storage Gateway apa pun APIs).
String yang akan ditandatangani adalah:
AWS4-HMAC-SHA256
20120910T000000Z
20120910/us-east-2/storagegateway/aws4_request
92c0effa6f9224ac752ca179a04cecbede3038b0959666a8160ab452c9e51b3e
Baris pertama dari string yang akan ditandatangani adalah algoritme, baris kedua adalah cap waktu, baris ketiga adalah ruang lingkup kredensi, dan baris terakhir adalah hash dari permintaan kanonik dari Tugas 1.
Untuk, kunci turunan dapat direpresentasikan sebagai:
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120910"),"us-east-2"),"storagegateway"),"aws4_request")
Jika kunci akses rahasia, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY, digunakan, maka tanda tangan yang dihitung adalah:
6d4c40b8f2257534dbdca9f326f147a0a7a419b63aff349d9d9c737c9a0f4c81
Langkah terakhir adalah membangun header Authorization
. Untuk kunci akses demonstrasi AKIAIOSFODNN7EXAMPLE, header (dengan jeda baris ditambahkan untuk keterbacaan) adalah:
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120910/us-east-2/storagegateway/aws4_request,
SignedHeaders=content-type;host;x-amz-date;x-amz-target,
Signature=6d4c40b8f2257534dbdca9f326f147a0a7a419b63aff349d9d9c737c9a0f4c81
Respons Kesalahan
Bagian ini memberikan informasi referensi tentang AWS Storage Gateway kesalahan. Kesalahan ini diwakili oleh pengecualian kesalahan dan kode kesalahan operasi. Misalnya, pengecualian kesalahan dikembalikan InvalidSignatureException
oleh respons API apa pun jika ada masalah dengan tanda tangan permintaan. Namun, kode kesalahan operasi ActivationKeyInvalid
dikembalikan hanya untuk ActivateGatewayAPI.
Bergantung pada jenis kesalahannya, Storage Gateway hanya dapat mengembalikan pengecualian, atau mungkin mengembalikan pengecualian dan kode kesalahan operasi. Contoh respons kesalahan ditampilkan diRespons Kesalahan.
Pengecualian
Tabel berikut mencantumkan pengecualian AWS Storage Gateway API. Ketika sebuah AWS Storage Gateway operasi mengembalikan respons kesalahan, badan respons berisi salah satu pengecualian ini. InternalServerError
Dan InvalidGatewayRequestException
mengembalikan salah satu kode Kode Kesalahan Operasi pesan kode kesalahan operasi yang memberikan kode kesalahan operasi tertentu.
Pengecualian | Pesan | Kode Status HTTP |
---|---|---|
IncompleteSignatureException |
Tanda tangan yang ditentukan tidak lengkap. | 400 Permintaan Buruk |
InternalFailure |
Pemrosesan permintaan gagal karena beberapa kesalahan, pengecualian, atau kegagalan yang tidak diketahui. | 500 Kesalahan Server Internal |
InternalServerError |
Salah satu pesan kode kesalahan operasiKode Kesalahan Operasi. | 500 Kesalahan Server Internal |
InvalidAction |
Tindakan atau operasi yang diminta tidak valid. | 400 Permintaan Buruk |
InvalidClientTokenId |
Sertifikat X.509 atau ID Kunci AWS Akses yang disediakan tidak ada dalam catatan kami. | 403 Dilarang |
InvalidGatewayRequestException |
Salah satu pesan kode kesalahan operasi diKode Kesalahan Operasi. | 400 Permintaan Buruk |
InvalidSignatureException |
Tanda tangan permintaan yang kami hitung tidak sesuai dengan tanda tangan yang Anda berikan. Periksa Kunci AWS Akses dan metode penandatanganan. | 400 Permintaan Buruk |
MissingAction |
Permintaan tidak memiliki parameter tindakan atau operasi. | 400 Permintaan Buruk |
MissingAuthenticationToken |
Permintaan harus berisi ID Kunci AWS Akses yang valid (terdaftar) atau sertifikat X.509. | 403 Dilarang |
RequestExpired |
Permintaan telah melewati tanggal kedaluwarsa atau tanggal permintaan (baik dengan padding 15 menit), atau tanggal permintaan terjadi lebih dari 15 menit di masa mendatang. | 400 Permintaan Buruk |
SerializationException |
Terjadi kesalahan selama serialisasi. Periksa apakah muatan JSON Anda terbentuk dengan baik. | 400 Permintaan Buruk |
ServiceUnavailable |
Permintaan telah gagal karena kegagalan sementara server. | 503 Layanan Tidak Tersedia |
SubscriptionRequiredException |
AWS Access Key Id memerlukan langganan untuk layanan ini. | 400 Permintaan Buruk |
ThrottlingException |
Tingkat terlampaui. | 400 Permintaan Buruk |
TooManyRequests |
Terlalu banyak permintaan. | 429 Terlalu Banyak Permintaan |
UnknownOperationException |
Operasi yang tidak diketahui ditentukan. Operasi yang valid tercantum dalamOperasi di Storage Gateway. | 400 Permintaan Buruk |
UnrecognizedClientException |
Token keamanan yang termasuk dalam permintaan tidak valid. | 400 Permintaan Buruk |
ValidationException |
Nilai parameter input buruk atau di luar jangkauan. | 400 Permintaan Buruk |
Kode Kesalahan Operasi
Tabel berikut menunjukkan pemetaan antara kode kesalahan AWS Storage Gateway operasi dan APIs yang dapat mengembalikan kode. Semua kode kesalahan operasi dikembalikan dengan salah satu dari dua pengecualian umum— InternalServerError
dan InvalidGatewayRequestException
—dijelaskan dalam. Pengecualian
Kode Kesalahan Operasi | Pesan | Operasi yang Mengembalikan Kode Kesalahan ini |
---|---|---|
ActivationKeyExpired |
Kunci aktivasi yang ditentukan telah kedaluwarsa. | ActivateGateway |
ActivationKeyInvalid |
Kunci aktivasi yang ditentukan tidak valid. | ActivateGateway |
ActivationKeyNotFound |
Kunci aktivasi yang ditentukan tidak ditemukan. | ActivateGateway |
BandwidthThrottleScheduleNotFound |
Throttle bandwidth yang ditentukan tidak ditemukan. | DeleteBandwidthRateLimit |
CannotExportSnapshot |
Snapshot yang ditentukan tidak dapat diekspor. | |
InitiatorNotFound |
Inisiator yang ditentukan tidak ditemukan. | DeleteChapCredentials |
DiskAlreadyAllocated |
Disk yang ditentukan sudah dialokasikan. | |
DiskDoesNotExist |
Disk yang ditentukan tidak ada. | |
DiskSizeNotGigAligned |
Disk yang ditentukan tidak selaras dengan gigabyte. | |
DiskSizeGreaterThanVolumeMaxSize |
Ukuran disk yang ditentukan lebih besar dari ukuran volume maksimum. | CreateStorediSCSIVolume |
DiskSizeLessThanVolumeSize |
Ukuran disk yang ditentukan kurang dari ukuran volume. | CreateStorediSCSIVolume |
DuplicateCertificateInfo |
Informasi sertifikat yang ditentukan adalah duplikat. | ActivateGateway |
GatewayInternalError |
Terjadi kesalahan internal gateway. | |
GatewayNotConnected |
Gateway yang ditentukan tidak terhubung. | |
GatewayNotFound |
Gateway yang ditentukan tidak ditemukan. | |
GatewayProxyNetworkConnectionBusy |
Koneksi jaringan proxy gateway yang ditentukan sibuk. | |
InternalError |
Terjadi kesalahan internal. | |
InvalidParameters |
Permintaan yang ditentukan berisi parameter yang salah. | |
LocalStorageLimitExceeded |
Batas penyimpanan lokal terlampaui. | |
LunInvalid |
LUN yang ditentukan tidak benar. | CreateStorediSCSIVolume |
MaximumVolumeCountExceeded |
Jumlah volume maksimum terlampaui. | |
NetworkConfigurationChanged |
Konfigurasi jaringan gateway telah berubah. | |
NotSupported |
Operasi yang ditentukan tidak didukung. | |
OutdatedGateway |
Gateway yang ditentukan sudah ketinggalan zaman. | ActivateGateway |
SnapshotInProgressException |
Snapshot yang ditentukan sedang berlangsung. | DeleteVolume |
SnapshotIdInvalid |
Snapshot yang ditentukan tidak valid. | |
StagingAreaFull |
Area pementasan penuh. | |
TargetAlreadyExists |
Target yang ditentukan sudah ada. | |
TargetInvalid |
Target yang ditentukan tidak valid. | |
TargetNotFound |
Target yang ditentukan tidak ditemukan. | |
UnsupportedOperationForGatewayType |
Operasi yang ditentukan tidak valid untuk jenis gateway. | |
VolumeAlreadyExists |
Volume yang ditentukan sudah ada. | |
VolumeIdInvalid |
Volume yang ditentukan tidak valid. | DeleteVolume |
VolumeInUse |
Volume yang ditentukan sudah digunakan. | DeleteVolume |
VolumeNotFound |
Volume yang ditentukan tidak ditemukan. | |
VolumeNotReady |
Volume yang ditentukan belum siap. |
Respons Kesalahan
Ketika ada kesalahan, informasi header respons berisi:
-
Tipe Konten: aplikasi/ -1.1 x-amz-json
-
Kode status yang sesuai
4xx
atau5xx
HTTP
Tubuh respons kesalahan berisi informasi tentang kesalahan yang terjadi. Contoh respon kesalahan berikut menunjukkan sintaks output elemen respon umum untuk semua respon kesalahan.
{ "__type": "String", "message": "String", "error": { "errorCode": "String", "errorDetails": "String" } }
Tabel berikut menjelaskan bidang respons kesalahan JSON yang ditunjukkan dalam sintaks sebelumnya.
- __jenis
-
Salah satu pengecualian dariPengecualian.
Tipe: String
- kesalahan
-
Berisi detail kesalahan khusus API. Dalam kesalahan umum (yaitu, tidak spesifik untuk API apa pun), informasi kesalahan ini tidak ditampilkan.
Jenis: Koleksi
- ErrorCode
-
Salah satu kode kesalahan operasi.
Tipe: String
- Rincian Kesalahan
-
Bidang ini tidak digunakan dalam versi API saat ini.
Tipe: String
- pesan
-
Salah satu pesan kode kesalahan operasi.
Tipe: String
Contoh Respon Kesalahan
Badan JSON berikut dikembalikan jika Anda menggunakan DescribeStoredi SCSIVolumes API dan menentukan input permintaan ARN gateway yang tidak ada.
{
"__type": "InvalidGatewayRequestException",
"message": "The specified volume was not found.",
"error": {
"errorCode": "VolumeNotFound"
}
}
Badan JSON berikut dikembalikan jika Storage Gateway menghitung tanda tangan yang tidak cocok dengan tanda tangan yang dikirim dengan permintaan.
{
"__type": "InvalidSignatureException",
"message": "The request signature we calculated does not match the signature you provided."
}
Operasi di Storage Gateway
Untuk daftar operasi Storage Gateway, lihat Tindakan di Referensi AWS Storage Gateway API.