Topik ini menjelaskan cara mengatur layanan transfer data langsung untuk aplikasi seluler dalam waktu kurang dari 30 menit menggunakan Security Token Service (STS). Layanan ini memungkinkan Anda langsung menghubungkan aplikasi seluler ke Object Storage Service (OSS), sehingga Anda dapat mengunggah atau mengunduh data antara aplikasi dan OSS. Anda hanya perlu mengelola kredensial yang diperoleh dari STS melalui server aplikasi, memastikan efisiensi dan keamanan transmisi data.
Manfaat
Di era Internet seluler, sejumlah besar data diunggah melalui aplikasi seluler. Transfer data langsung berbasis OSS untuk aplikasi seluler memberikan manfaat berikut:
Keamanan data: OSS memungkinkan aplikasi seluler untuk mengunggah dan mengunduh data berdasarkan mekanisme manajemen izin yang fleksibel, meningkatkan keamanan data.
Efisiensi biaya: Dibutuhkan lebih sedikit server aplikasi, membantu mengurangi biaya. Aplikasi seluler terhubung langsung ke OSS untuk pengunggahan dan pengunduhan data, sementara aliran kontrol dikirim ke server aplikasi.
Konkurensi tinggi: OSS mendukung permintaan akses konkuren dari sejumlah besar pengguna, menjamin pengalaman pengguna yang optimal.
Skalabilitas elastis: OSS menyediakan kapasitas penyimpanan tanpa batas dan skalabel untuk memenuhi kebutuhan bisnis yang terus berkembang.
Pemrosesan data: OSS mendukung pemrosesan gambar (IMG) serta transkoding audio dan video, memungkinkan pengguna memproses data secara fleksibel.
Prasyarat
OSS telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan OSS.
Bucket telah dibuat. Untuk informasi lebih lanjut, lihat Buat Bucket.
Proses
Gambar berikut menunjukkan proses pengembangan layanan transfer data langsung untuk aplikasi seluler.
Langkah-langkah:
Aplikasi Android atau iOS meminta kredensial akses sementara dari server aplikasi.
CatatanPasangan AccessKey tidak dapat disimpan di aplikasi Android dan iOS karena alasan keamanan. Sebagai alternatif, aplikasi dapat meminta token keamanan menggunakan STS dari server aplikasi. Token keamanan berlaku untuk periode waktu tertentu. Jika server aplikasi menentukan masa berlaku 30 menit, aplikasi Android atau iOS dapat menggunakan token tersebut untuk mengunggah atau mengunduh data dari atau ke OSS dalam jangka waktu 30 menit setelah token diterbitkan. Setelah itu, aplikasi harus meminta token baru untuk melanjutkan operasi.
Server aplikasi menggunakan SDK STS untuk memanggil operasi AssumeRole guna mendapatkan token keamanan.
STS menghasilkan dan mengembalikan token keamanan ke server aplikasi.
Server aplikasi mengembalikan token keamanan ke klien.
Aplikasi Android atau iOS menggunakan SDK OSS untuk mengunggah objek ke OSS dengan menggunakan token keamanan.
OSS mengembalikan respons sukses ke klien.
Prosedur
Langkah 1: Aktifkan STS dan konfigurasikan server aplikasi
1. Buat pengguna RAM di konsol RAM
Buat pengguna RAM dan peroleh pasangan AccessKey dari pengguna tersebut. Pasangan AccessKey adalah kredensial akses jangka panjang yang diperlukan untuk mengakses dan mengelola server aplikasi.
Masuk ke Konsol RAM menggunakan akun Alibaba Cloud atau sebagai administrator akun.
Di panel navigasi kiri, pilih Identities > Users.
Di halaman Pengguna, klik Create User.
Konfigurasikan parameter Logon Name dan Display Name.
Di bagian Access Mode, pilih Using permanent AccessKey to access dan klik OK.
PentingAnda hanya dapat memperoleh rahasia AccessKey saat membuat pengguna RAM. Pastikan kerahasiaannya untuk mencegah kebocoran kredensial.
Klik Copy di kolom Actions pada halaman yang muncul, lalu salin dan tempelkan pasangan AccessKey ke file yang disimpan dengan aman.
2. Berikan pengguna RAM izin untuk memanggil operasi AssumeRole di konsol RAM
Berikan izin kepada pengguna RAM untuk memanggil operasi AssumeRole. Dengan cara ini, pengguna RAM dapat memperoleh kredensial akses sementara dengan mengasumsikan peran RAM.
Di panel navigasi kiri, pilih Identities > Users.
Di halaman Users, temukan pengguna RAM dan klik Add Permissions di kolom Tindakan.
Di bagian Kebijakan panel Grant Permission, pilih kebijakan sistem AliyunSTSAssumeRoleAccess.
CatatanKebijakan AliyunSTSAssumeRoleAccess memungkinkan pengguna RAM untuk memanggil operasi AssumeRole. Izin dari kebijakan ini independen dari izin yang diperlukan untuk memungkinkan pengguna RAM memperoleh kredensial akses sementara dari STS dan memulai permintaan ke OSS.
Klik Grant permissions.
3. Buat peran RAM di konsol RAM
Buat peran RAM untuk akun Alibaba Cloud dan peroleh Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Peran RAM diasumsikan oleh pengguna RAM nanti.
Di panel navigasi kiri, pilih Identities > Roles.
Klik Create Role. Di wizard Buat Peran, atur Pilih Entitas Tepercaya ke Alibaba Cloud Account dan klik Next.
Di langkah Konfigurasi Peran, masukkan nama di bidang RAM Role Name dan atur Select Trusted Alibaba Cloud Account ke Akun Alibaba Cloud Saat Ini.
Klik OK. Setelah membuat peran, klik Close.
Di halaman Peran, masukkan nama peran di kotak pencarian. Contoh:
oss-web-upload. Klik nama peran.Di bagian Informasi Dasar, klik Copy di sebelah bidang ARN untuk mencatat ARN dari peran RAM.
4. Buat kebijakan untuk pengunggahan di konsol RAM
Buat kebijakan kustom berdasarkan prinsip hak istimewa minimal. Kebijakan kustom memberikan peran RAM izin untuk mengunggah data hanya ke bucket tertentu.
Di panel navigasi kiri, pilih Permissions > Policies.
Di halaman Kebijakan, klik Create Policy.
Di halaman Create Policy, klik JSON. Salin skrip contoh berikut dan tempelkan ke editor kode. Ganti
<BucketName>denganweb-direct-upload, nama bucket yang Anda buat.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:PutObject", "Resource": "acs:oss:*:*:<BucketName>/*" } ] }Setelah mengonfigurasi kebijakan, klik Next to edit policy information.
Di bagian Basic Information, tentukan nama kebijakan dan klik OK.
5. Lampirkan kebijakan kustom ke peran RAM di konsol RAM
Lampirkan kebijakan kustom ke peran RAM. Dengan cara ini, peran RAM dapat memberikan izin yang diperlukan saat peran RAM diasumsikan.
Di panel navigasi kiri, pilih Identities > Roles.
Di halaman Roles, temukan peran RAM dan klik Grant Permission di kolom Tindakan.
Di bagian Kebijakan panel Grant Permission, pilih Custom Policy dari daftar drop-down, lalu pilih kebijakan kustom.
Klik OK.
6. Buat instance ECS sebagai server aplikasi
Buat instance ECS untuk memperoleh kredensial akses sementara dari STS.
Dalam skenario penyebaran aktual, Anda dapat mengintegrasikan operasi API STS ke server aplikasi Anda tanpa perlu membuat instance ECS.
Parameter | Contoh |
Metode Penagihan | Bayar sesuai pemakaian |
Wilayah | Cina (Hangzhou) |
Alamat IP Publik | Tetapkan Alamat IPv4 Publik |
Grup Keamanan | HTTP-TCP:80-open |
Untuk informasi lebih lanjut, lihat Buat Instance ECS.
7. Peroleh kredensial akses sementara dari server aplikasi
Integrasikan SDK STS ke server aplikasi untuk memperoleh operasi /get_sts_token guna mendapatkan kredensial akses sementara dari STS. Saat operasi /get_sts_token dipanggil menggunakan metode HTTP GET, kredensial akses sementara dibuat dan dikembalikan ke peminta.
Di instance ECS, bangun aplikasi web menggunakan framework Flask dan implementasikan operasi untuk memperoleh kredensial akses sementara dari STS:
Sambungkan ke instance ECS.
Untuk informasi lebih lanjut, lihat Sambungkan ke Instance.
Instal Python 3.
Buat direktori proyek dan beralih ke direktori proyek. Contoh perintah:
mkdir my_web_sample cd my_web_sampleJalankan perintah berikut untuk menginstal dependensi:
pip3 install Flask pip3 install attr pip3 install yarl pip3 install async_timeout pip3 install idna_ssl pip3 install attrs pip3 install aiosignal pip3 install charset_normalizer pip3 install alibabacloud_tea_openapi pip3 install alibabacloud_sts20150401 pip3 install alibabacloud_credentialsTulis kode backend aplikasi.
Buat file
main.py.Tulis kode Python berikut ke file:
import json from flask import Flask, render_template from alibabacloud_tea_openapi.models import Config from alibabacloud_sts20150401.client import Client as Sts20150401Client from alibabacloud_sts20150401 import models as sts_20150401_models from alibabacloud_credentials.client import Client as CredentialClient app = Flask(__name__) # Ganti <YOUR_ROLE_ARN> dengan ARN dari peran RAM. role_arn_for_oss_upload = '<YOUR_ROLE_ARN>' # Tentukan wilayah STS. Contoh: cn-hangzhou region_id = 'cn-hangzhou' @app.route("/") def hello_world(): return render_template('index.html') @app.route('/get_sts_token', methods=['GET']) def get_sts_token(): # Jika Anda tidak menentukan parameter saat Anda menginisialisasi CredentialClient, rantai kredensial default digunakan. # Jika Anda menjalankan program di komputer lokal Anda, Anda dapat memperoleh pasangan AccessKey dari variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. # Jika Anda menjalankan program di ECS atau Elastic Container Instance, Anda dapat menentukan peran instance yang terikat dengan mengonfigurasi variabel lingkungan ALIBABA_CLOUD_ECS_METADATA. SDK secara otomatis memperoleh kredensial akses sementara dari STS. config = Config(region_id=region_id, credential=CredentialClient()) sts_client = Sts20150401Client(config=config) assume_role_request = sts_20150401_models.AssumeRoleRequest( role_arn=role_arn_for_oss_upload, # Ganti <YOUR_ROLE_SESSION_NAME> dengan nama sesi kustom. role_session_name='<YOUR_ROLE_SESSION_NAME>' ) response = sts_client.assume_role(assume_role_request) token = json.dumps(response.body.credentials.to_map()) return token app.run(host="127.0.0.1", port=8000) # Untuk mendengarkan alamat lain, seperti 0.0.0.0, Anda perlu mengimplementasikan mekanisme autentikasi di sisi server.Ganti
<YOUR_ROLE_ARN>di kode contoh dengan ARN dari peran RAM yang Anda buat di Langkah 3.Ganti
<YOUR_ROLE_SESSION_NAME>di kode contoh dengan nama sesi kustom.
Mulai aplikasi menggunakan pasangan AccessKey yang Anda peroleh di Langkah 1.
ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR_AK_ID> ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR_AK_SECRET> python3 main.pyDi bilah alamat browser Anda, masukkan
http://<ECS-public-IP-address>/get_sts_token.Contoh respons sukses:

Tekan
Ctrl+Cuntuk menghentikan aplikasi.
Langkah 2: Unduh dan instal aplikasi seluler
Android
Unduh paket kode sumber dari aplikasi seluler.
Anda dapat menggunakan aplikasi seluler di perangkat Android atau iOS untuk mengunggah gambar ke OSS. Unggah sederhana dan unggah berkelanjutan didukung. Jika kualitas jaringan buruk, kami sarankan menggunakan unggah berkelanjutan. Anda juga dapat menggunakan IMG untuk mengubah ukuran gambar guna mendapatkan thumbnail dan menambahkan watermark ke gambar.
Buka aplikasi seluler dan konfigurasikan parameter aplikasi.
Server otentikasi STS: alamat server aplikasi di informasi keluaran di Langkah 1.
Bucket tujuan: bucket tempat data akan diunggah dari aplikasi seluler.
Wilayah: wilayah tempat bucket tujuan berada.
Klik Configure.
iOS
Unduh paket kode sumber untuk aplikasi seluler.
Anda dapat menggunakan aplikasi seluler di perangkat Android atau iOS untuk mengunggah gambar ke OSS. Unggah sederhana dan unggah berkelanjutan didukung. Jika kualitas jaringan buruk, kami sarankan menggunakan unggah berkelanjutan. Anda juga dapat menggunakan IMG untuk mengubah ukuran gambar guna mendapatkan thumbnail dan menambahkan watermark ke gambar.
Buka aplikasi seluler dan konfigurasikan parameter aplikasi.
Sebelum menjalankan AliyunOSSSDK, Anda harus mengonfigurasi parameter yang diperlukan di file OSSTestMacros.h. Parameter yang diperlukan termasuk OSS_BUCKET_PRIVATE, OSS_ENDPOINT, dan OSS_STSTOKEN_URL. Atur OSS_STSTOKEN_URL ke alamat server aplikasi yang ditempatkan di Langkah 1.

Jalankan instance.
Langkah 3: Konfigurasikan transfer data langsung untuk aplikasi seluler
Tentukan nama objek OSS. Klik Upload dan pilih gambar yang ingin Anda unggah.
Setelah gambar diunggah, periksa hasil unggahan di konsol OSS.