Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tutorial: Membuat dan menerbitkan produk
Artikel
23/10/2024
BERLAKU UNTUK: Semua tingkatAN API Management
Dalam Azure API Management, sebuah produk berisi satu atau beberapa API, kuota penggunaan, dan ketentuan penggunaan. Setelah produk diterbitkan, pengembang dapat berlangganan produk dan mulai menggunakan API produk.
Tip
Tim API dapat menggunakan fitur ini di ruang kerja. Ruang kerja menyediakan akses administratif terisolasi ke API dan lingkungan runtime API mereka sendiri.
Memberikan informasi tentang produk seperti tujuannya, API yang mendapatkan aksesnya, dan detail lainnya.
Status
Pilih Diterbitkan jika Anda ingin menerbitkan produk ke portal pengembang. Sebelum API dalam produk dapat ditemukan oleh pengembang, produk harus diterbitkan. Secara default, produk baru tidak diterbitkan.
Membutuhkan langganan
Pilih apakah pengguna diharuskan berlangganan untuk menggunakan produk (produk dilindungi) dan kunci langganan harus digunakan untuk mengakses API produk. Jika langganan tidak diperlukan (produk terbuka), kunci langganan tidak diperlukan untuk mengakses API produk. Lihat Akses ke API produk nanti di artikel ini.
Membutuhkan persetujuan
Ambil pilihan ini, jika Anda ingin administrator meninjau dan menerima atau menolak upaya berlangganan untuk produk ini. Jika tidak dipilih, upaya berlangganan disetujui secara otomatis.
Batas jumlah langganan
Secara opsional, batasi jumlah beberapa langganan simultan. Nilai minimum: 1
Istilah hukum
Anda dapat menyertakan ketentuan penggunaan produk yang harus diterima oleh pelanggan untuk menggunakan produk tersebut.
API
Pilih satu atau beberapa API. Anda juga dapat menambahkan API setelah membuat produk. Untuk informasi selengkapnya, lihat Menambahkan API ke produk pada bagian berikutnya di artikel ini.
Jika produk terbuka (tidak memerlukan langganan), Anda hanya dapat menambahkan API yang tidak terkait dengan produk terbuka lain.
Pilih Buat untuk membuat produk baru Anda.
Perhatian
Berhati-hatilah saat mengonfigurasi produk yang tidak memerlukan langganan. Konfigurasi ini mungkin terlalu permisif dan dapat membuat API produk lebih rentan terhadap ancaman keamanan API tertentu.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
Memberikan informasi tentang produk seperti tujuannya, API yang mendapatkan aksesnya, dan detail lainnya.
--state
Pilih diterbitkan jika Anda ingin menerbitkan produk ke portal pengembang. Sebelum API dalam produk dapat ditemukan oleh pengembang, produk harus diterbitkan. Secara default, produk baru tidak diterbitkan.
--subscription-required
Pilih apakah pengguna diharuskan berlangganan untuk menggunakan produk (produk dilindungi) atau langganan tidak diperlukan (produk terbuka). Lihat Akses ke API produk nanti di artikel ini.
--approval-required
Ambil pilihan ini, jika Anda ingin administrator meninjau dan menerima atau menolak upaya berlangganan untuk produk ini. Jika tidak dipilih, upaya berlangganan disetujui secara otomatis.
--subscriptions-limit
Batasi jumlah beberapa langganan simultan secara opsional.
--legal-terms
Anda dapat menyertakan ketentuan penggunaan produk yang harus diterima oleh pelanggan untuk menggunakan produk tersebut.
Perhatian
Berhati-hatilah saat mengonfigurasi produk yang tidak memerlukan langganan. Konfigurasi ini mungkin terlalu permisif dan dapat membuat API produk lebih rentan terhadap ancaman keamanan API tertentu.
Produk adalah kumpulan dari satu atau beberapa API. Anda dapat menyertakan sejumlah API dan menawarkannya kepada pengembang melalui portal pengembang. Selama pembuatan produk, Anda dapat menambahkan satu atau beberapa API yang sudah ada. Anda juga dapat menambahkan API ke produk nanti, baik dari halaman Pengaturan Produk atau saat membuat API.
az apim product api delete --resource-group apim-hello-word-resource-group \
--api-id petstore-api --product-id contoso-product \
--service-name apim-hello-world
Akses ke API produk
Setelah Anda menerbitkan produk, pengembang dapat mengakses API. Tergantung pada bagaimana produk dikonfigurasi, mereka mungkin perlu berlangganan produk untuk akses.
Produk yang dilindungi - Pengembang harus terlebih dahulu berlangganan produk yang dilindungi untuk mendapatkan akses ke API produk. Saat berlangganan, mereka akan mendapatkan kunci langganan yang sesuai untuk API dalam produk tersebut. Jika Anda membuat instans API Management, Anda telah menjadi administrator, jadi Anda berlangganan setiap produk secara default. Untuk informasi selengkapnya, lihat Langganan di Azure API Management.
Ketika klien membuat permintaan API dengan kunci langganan produk yang valid, API Management memproses permintaan dan mengizinkan akses dalam konteks produk. Kebijakan dan aturan kontrol akses yang dikonfigurasi untuk produk dapat diterapkan.
Tip
Anda dapat membuat atau memperbarui langganan pengguna ke produk dengan kunci langganan kustom melalui perintah REST API atau PowerShell.
Produk terbuka - Pengembang dapat mengakses API produk terbuka tanpa kunci langganan. Namun, Anda dapat mengonfigurasi mekanisme lain untuk mengamankan akses klien ke API, termasuk OAuth 2.0, sertifikat klien, dan membatasi alamat IP pemanggil.
Catatan
Produk terbuka tidak tercantum di portal pengembang untuk dipelajari atau dilanggani pengembang. Mereka hanya terlihat oleh grup Administrator . Anda harus menggunakan mekanisme lain untuk memberi tahu pengembang tentang API yang dapat diakses tanpa kunci langganan.
Saat klien membuat permintaan API tanpa kunci langganan:
API Management memeriksa apakah API terkait dengan produk terbuka. API dapat dikaitkan dengan paling banyak satu produk terbuka.
Jika ada produk terbuka, maka API akan memproses permintaan dalam konteks produk terbuka tersebut. Aturan kebijakan dan kontrol akses yang dikonfigurasi untuk produk terbuka dapat diterapkan.
Dalam artikel ini, Anda menggunakan Terraform untuk membuat instans Azure API Management, API, produk, grup, dan asosiasi antara produk dan API, serta produk dan grup.
Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaksis HCL. Sintaksis HCL memungkinkan Anda menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda untuk melihat pratinjau perubahan infrastruktur Anda sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.
Tentukan versi Terraform yang diperlukan dan penyedia yang diperlukan.
Tentukan variabel untuk awalan nama grup sumber daya, lokasi grup sumber daya, serta format dan nilai konten untuk impor definisi API.
Buat grup sumber daya dengan nama acak.
Buat layanan API Management dengan nama acak.
Buat API dengan nama acak.
Buat produk dengan nama acak di layanan API Management.
Buat grup dengan nama acak.
Kaitkan API dengan produk.
Kaitkan grup dengan produk.
Keluarkan nilai acak seperti nama grup sumber daya, layanan API Management, API, produk, dan grup.
Kode sampel untuk artikel ini terletak di repositori GitHub Azure Terraform. Anda dapat melihat file log yang berisi hasil pengujian dari terraform versi saat ini dan sebelumnya.
Buat file bernama outputs.tf, dan sisipkan kode berikut:
output "resource_group_name" {
value = azurerm_resource_group.rg.name
}
output "apim_service_name" {
value = azurerm_api_management.apim_service.name
}
output "api_name" {
value = azurerm_api_management_api.api.name
}
output "product_name" {
value = azurerm_api_management_product.product.product_id
}
output "group_name" {
value = azurerm_api_management_group.group.name
}
output "service_id" {
description = "The ID of the API Management Service created"
value = azurerm_api_management.apim_service.id
}
output "gateway_url" {
description = "The URL of the Gateway for the API Management Service"
value = azurerm_api_management.apim_service.gateway_url
}
output "service_public_ip_addresses" {
description = "The Public IP addresses of the API Management Service"
value = azurerm_api_management.apim_service.public_ip_addresses
}
output "api_outputs" {
description = "The IDs, state, and version outputs of the APIs created"
value = {
id = azurerm_api_management_api.api.id
is_current = azurerm_api_management_api.api.is_current
is_online = azurerm_api_management_api.api.is_online
version = azurerm_api_management_api.api.version
version_set_id = azurerm_api_management_api.api.version_set_id
}
}
output "product_id" {
description = "The ID of the Product created"
value = azurerm_api_management_product.product.id
}
output "product_api_id" {
description = "The ID of the Product/API association created"
value = azurerm_api_management_product_api.product_api.id
}
output "product_group_id" {
description = "The ID of the Product/Group association created"
value = azurerm_api_management_product_group.product_group.id
}
Buat file bernama providers.tf, dan sisipkan kode berikut:
terraform {
required_version = ">=1.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
random = {
source = "hashicorp/random"
version = "~>3.0"
}
}
}
provider "azurerm" {
features {}
}
Buat file bernama variables.tf, dan sisipkan kode berikut:
variable "resource_group_name_prefix" {
type = string
default = "rg"
description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
}
variable "resource_group_location" {
type = string
default = "eastus"
description = "Location of the resource group."
}
variable "open_api_spec_content_format" {
type = string
default = "swagger-link-json"
description = "The format of the content from which the API Definition should be imported. Possible values are: openapi, openapi+json, openapi+json-link, openapi-link, swagger-json, swagger-link-json, wadl-link-json, wadl-xml, wsdl and wsdl-link."
validation {
condition = contains(["openapi", "openapi+json", "openapi+json-link", "openapi-link", "swagger-json", "swagger-link-json", "wadl-link-json", "wadl-xml", "wsdl", "wsdl-link"], var.open_api_spec_content_format)
error_message = "open_api_spec_content_format must be one of the following: openapi, openapi+json, openapi+json-link, openapi-link, swagger-json, swagger-link-json, wadl-link-json, wadl-xml, wsdl and wsdl-link."
}
}
variable "open_api_spec_content_value" {
type = string
default = "https://petstore3.swagger.io/api/v3/openapi.json"
description = "The Content from which the API Definition should be imported. When a content_format of *-link-* is specified this must be a URL, otherwise this must be defined inline."
}
Inisialisasi Terraform
Jalankan terraform init untuk menginisialisasi penyebaran Terraform. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure Anda.
terraform init -upgrade
Poin utama:
Parameter -upgrade meningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.
Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual.
Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
Terapkan rencana eksekusi Terraform
Jalankan terraform apply untuk menerapkan rencana eksekusi ke infrastruktur cloud Anda.
terraform apply main.tfplan
Poin utama:
Contoh terraform apply perintah mengasumsikan Anda sebelumnya menjalankan terraform plan -out main.tfplan.
Jika Anda menentukan nama file yang berbeda untuk parameter -out, gunakan nama file yang sama dalam panggilan ke terraform apply.
Jika Anda tidak menggunakan parameter -out, panggil terraform apply tanpa parameter apa pun.
Memverifikasi hasil
Jalankan az apim show untuk melihat Azure API Management:
az apim show --<apim_service_name> --<resource_group_name>
Membersihkan sumber daya
Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual.
Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
Gunakan Azure API Management untuk menetapkan kebijakan pada API. Kebijakan mengembalikan respons tiruan meskipun backend tidak tersedia untuk mengirim respons nyata.
Bangun solusi end-to-end di Microsoft Azure untuk membuat Azure Functions, menerapkan dan mengelola aplikasi web, mengembangkan solusi yang menggunakan penyimpanan Azure, dan banyak lagi.