Alibaba Cloud SMS SDK untuk Python menyediakan antarmuka yang sederhana dan aman untuk API inti, seperti mengirim pesan . SDK ini menyembunyikan kompleksitas autentikasi, penandatanganan permintaan, dan komunikasi HTTP, sehingga Anda dapat fokus pada logika bisnis dan mengintegrasikan kemampuan SMS lebih cepat.
Instalasi
Persyaratan sistem
Versi Python: 3.7 atau yang lebih baru.
Sistem operasi: Windows, macOS, atau Linux.
Dependensi lainnya:
alibabacloud_tea_openapi(core runtime),alibabacloud_tea_util(utility library), danurllib3(HTTP client).
Instal menggunakan pip
pip install alibabacloud_dysmsapi20180501Verifikasi instalasi
import alibabacloud_dysmsapi20180501
# Jika versi SDK dicetak, instalasi berhasil.
print("SDK Version:", alibabacloud_dysmsapi20180501.__version__)
Konfigurasi kredensial
Langkah 1: Buat Pengguna RAM dan berikan izin
Karena akun root Anda memiliki hak istimewa tinggi, kami menyarankan menggunakan Pengguna RAM untuk panggilan API dan operasi O&M rutin. Untuk informasi selengkapnya, lihat Ikhtisar Pengguna RAM.
Buat Pengguna RAM: Buka halaman Create User. Isi informasi yang diperlukan, pilih Permanent AccessKey untuk Access Configuration, lalu klik OK. Simpan AccessKey Anda untuk digunakan nanti.
Berikan izin kepada Pengguna RAM: Buka halaman Users. Temukan Pengguna RAM yang telah Anda buat dan klik Attach Policy di kolom Actions. Di kotak pencarian Policy, masukkan AliyunDysmsFullAccess, pilih kebijakan tersebut, lalu klik OK.
AliyunDysmsFullAccess: Memberikan izin penuh untuk mengelola layanan SMS.
AliyunDysmsReadOnlyAccess: Memberikan izin read-only untuk mengakses layanan SMS.
Jika Anda perlu membuat kebijakan kustom, lihat Otorisasi RAM.
Langkah 2: Dapatkan kredensial akses
Konfigurasikan Pasangan Kunci Akses Anda menggunakan Variabel lingkungan. Untuk informasi tentang cara mengonfigurasi Variabel lingkungan, lihat Konfigurasi Variabel lingkungan di Linux, macOS, dan Windows.
Untuk mencegah risiko keamanan, hindari hardcoding Pasangan Kunci Akses Anda. Sebagai gantinya, ambil dari Variabel lingkungan.
Kode contoh dalam topik ini menggunakan Variabel lingkungan
ALIBABA_CLOUD_ACCESS_KEY_IDdanALIBABA_CLOUD_ACCESS_KEY_SECRET.
Praktik terbaik keamanan
Simpan kredensial dengan menggunakan Variabel lingkungan atau layanan manajemen kunci.
Rotasi Pasangan Kunci Akses Anda secara berkala.
Ikuti prinsip least privilege dengan memberikan izin minimum yang diperlukan kepada Pengguna RAM.
Jangan mencetak informasi kredensial di log.
Gunakan RAM Role, bukan kredensial akun root, di lingkungan produksi.
Mulai cepat
Kode contoh
Kode contoh ini menunjukkan cara memanggil API SMS untuk mengirim pesan. Ganti nilai placeholder sesuai petunjuk dalam komentar kode.
# -*- coding: utf-8 -*-
# File ini dihasilkan otomatis, jangan mengeditnya. Terima kasih.
import os
import sys
import json
from typing import List
from alibabacloud_dysmsapi20180501.client import Client as Dysmsapi20180501Client
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20180501 import models as dysmsapi_20180501_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
def create_client() -> Dysmsapi20180501Client:
"""
Menginisialisasi Client menggunakan kredensial.
@return: Client
@throws Exception
"""
# Di lingkungan produksi, kami menyarankan metode autentikasi yang lebih aman yang tidak bergantung pada Pasangan Kunci Akses.
credential = CredentialClient()
config = open_api_models.Config(
credential=credential
)
# Titik akhir. Lihat https://api.alibabacloud.com/product/Dysmsapi
config.endpoint = f'dysmsapi.aliyuncs.com'
return Dysmsapi20180501Client(config)
def main(
args: List[str],
) -> None:
client = create_client()
batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
to='your_value',
from_='your_value',
message='your_value'
)
try:
resp = client.batch_send_message_to_globe_with_options(batch_send_message_to_globe_request, util_models.RuntimeOptions())
print(json.dumps(resp, default=str, indent=2))
except Exception as error:
# Kode ini hanya untuk demonstrasi. Di lingkungan produksi, tangani exception dengan benar dan jangan abaikan.
# Pesan error
print(error.message)
# Alamat diagnosis
print(error.data.get("Recommend"))
async def main_async(
args: List[str],
) -> None:
client = create_client()
batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
to='your_value',
from_='your_value',
message='your_value'
)
try:
resp = await client.batch_send_message_to_globe_with_options_async(batch_send_message_to_globe_request, util_models.RuntimeOptions())
print(json.dumps(resp, default=str, indent=2))
except Exception as error:
# Kode ini hanya untuk demonstrasi. Di lingkungan produksi, tangani exception dengan benar dan jangan abaikan.
# Pesan error
print(error.message)
# Alamat diagnosis
print(error.data.get("Recommend"))
if __name__ == '__main__':
main(sys.argv[1:])
Unduh kode contoh
Anda juga dapat mengunduh kode contoh dan menjalankannya langsung.
Buka SendMessageToGlobe.
Di tab Parameters di sebelah kiri, tentukan parameter yang diperlukan. Berikut adalah contoh nilainya:
To: 88691567****
Message: This is a test message.
Praktik terbaik
Optimalisasi performa
Aktifkan connection pooling: SDK menggunakan kolam koneksi
urllib3secara default. Pastikan konfigurasimax_idle_connssesuai (default adalah 50) untuk menghindari pembuatan koneksi TCP yang sering.Gunakan panggilan asynchronous: Untuk skenario konkurensi tinggi, Anda dapat mengimplementasikan panggilan asynchronous sejati dengan menggunakan
asynciodanaiohttp(memerlukan custom packaging).
Rekomendasi keamanan
Paksa HTTPS: Selalu gunakan
endpointyang dimulai denganhttps://. Hindari downgrade ke HTTP.Validasi input: Validasi ketat semua input pengguna, seperti
phone_numbers(dengan ekspresi reguler),template_param(dengan parsing JSON), dansign_name(dengan Allowlist).Masking data sensitif di log: Saat mencatat
phone_numberske log, terapkan penyembunyian log, seperti138****0000.
Manajemen resource
Gunakan kembali instans Client: Instans
Clientbersifat thread-safe. Kami menyarankan menggunakan kembali satu instans secara global sepanjang siklus hidup aplikasi Anda untuk menghindari pembuatan dan penghapusan instans yang sering.Tutup resource: Meskipun SDK tidak menyediakan metode eksplisit
close(), klien HTTP dasar secara otomatis membersihkan resource saat program keluar.
Referensi
Repositori GitHub: Alibaba Cloud Dysmsapi SDK untuk Python
Referensi API:
Sebelum memanggil operasi OpenAPI, kami menyarankan Anda membaca referensi API terkait, seperti SendMessageToGlobe, untuk memahami parameter yang diperlukan, izin, dan detail lainnya. Untuk informasi selengkapnya, lihat Ikhtisar API.
Panggil API:
SDK adalah cara yang direkomendasikan untuk memanggil API. Topik ini menggunakan Python SDK sebagai contoh. Penggunaan SDK dalam bahasa lain serupa. Untuk informasi selengkapnya, lihat SMS SDK.