Topik ini menjelaskan cara menggunakan Security Token Service (STS) untuk menyiapkan layanan unggah data langsung bagi aplikasi seluler Anda dalam waktu kurang dari 30 menit. Layanan ini memungkinkan aplikasi seluler Anda mengunggah dan mengunduh data secara langsung ke dan dari Object Storage Service (OSS). Server aplikasi Anda hanya perlu mengelola kontrol akses, sehingga transfer data menjadi efisien dan aman.
Mengapa menggunakan layanan unggah langsung
Karena aplikasi seluler menangani volume data yang terus meningkat, Anda dapat menggunakan OSS untuk mengelola kebutuhan penyimpanan dan fokus pada logika inti aplikasi Anda. Menggunakan OSS untuk unggah data langsung dari aplikasi seluler memberikan keunggulan berikut:
-
Keamanan data: Gunakan model izin yang fleksibel untuk mengelola unggah dan unduh data secara aman.
-
Hemat biaya: Kurangi kebutuhan akan banyak server. Aplikasi seluler terhubung langsung ke OSS, dan hanya alur kendali yang ditangani oleh server aplikasi Anda.
-
Konkurensi tinggi: Tangani permintaan dengan konkurensi tinggi secara mudah untuk memastikan pengalaman pengguna yang lancar.
-
Skalabilitas elastis: Kapasitas penyimpanan diskalakan sesuai permintaan untuk mendukung pertumbuhan bisnis Anda.
-
Pemrosesan data: Integrasikan secara mulus pemrosesan gambar serta transkoding audio/video untuk penanganan data yang fleksibel.
Prasyarat
-
Anda telah mengaktifkan OSS. Untuk informasi lebih lanjut, lihat Aktifkan OSS.
-
Anda telah membuat bucket. Untuk informasi lebih lanjut, lihat Buat bucket.
Cara kerja
Diagram berikut menunjukkan alur kerja pengembangan layanan unggah langsung dari perangkat seluler.
Ikuti langkah-langkah berikut:
-
Aplikasi seluler meminta kredensial akses sementara dari server aplikasi.
CatatanJangan menyimpan AccessKey secara langsung di aplikasi Android atau iOS Anda. Hal ini berisiko tinggi terhadap kebocoran data. Sebagai gantinya, aplikasi Anda harus meminta kredensial akses sementara dari server aplikasi Anda. Kredensial ini memiliki masa berlaku terbatas. Misalnya, jika server aplikasi Anda menetapkan masa kedaluwarsa 30 menit, aplikasi seluler dapat menggunakan token tersebut untuk mengunggah dan mengunduh data dari OSS selama periode tersebut. Setelah 30 menit, aplikasi harus meminta kredensial akses sementara baru.
-
Server aplikasi menggunakan SDK STS untuk memanggil operasi AssumeRole dan mendapatkan kredensial akses sementara.
-
STS menghasilkan dan mengembalikan kredensial akses sementara ke server aplikasi.
-
Server aplikasi mengembalikan kredensial akses sementara ke aplikasi seluler.
-
Aplikasi seluler menggunakan SDK OSS dan kredensial akses sementara untuk mengunggah file ke OSS.
-
OSS mengembalikan tanggapan sukses ke aplikasi seluler.
Prosedur
Langkah 1: Aktifkan STS dan konfigurasikan server aplikasi
1. Buat RAM user
Pertama, buat RAM user dan dapatkan Pasangan Kunci Aksesnya. Pasangan ini berfungsi sebagai kredensial identitas jangka panjang untuk server aplikasi Anda.
-
Login ke Konsol RAM menggunakan Akun Alibaba Cloud Anda atau sebagai administrator akun.
-
Di panel navigasi sebelah kiri, pilih Identities > Users.
-
Klik Create User.
-
Masukkan Logon Name dan Display Name.
-
Pada bagian Access Mode, pilih OpenAPI Access, lalu klik OK.
Rahasia AccessKey untuk RAM user hanya ditampilkan saat Anda membuatnya. Anda tidak dapat melihatnya lagi nanti. Pastikan untuk menyimpannya dengan aman.
-
Pada kolom Actions, klik Copy untuk menyimpan Pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey).
2. Berikan izin AssumeRole kepada RAM user
Setelah membuat RAM user, Anda harus memberikan izin untuk memanggil operasi STS AssumeRole. Hal ini memungkinkan pengguna tersebut mengasumsikan Peran RAM guna mendapatkan kredensial akses sementara.
-
Di panel navigasi sebelah kiri, pilih Identities > Users.
-
Pada halaman Users, temukan RAM user yang dituju, lalu klik Add Permissions di kolom Actions.
-
Pada halaman Grant Permission, pilih kebijakan sistem AliyunSTSAssumeRoleAccess.
CatatanKebijakan AliyunSTSAssumeRoleAccess memberikan izin kepada RAM user untuk memanggil operasi STS AssumeRole. Izin ini terpisah dari izin yang diperlukan untuk mendapatkan kredensial akses sementara atau menggunakan kredensial tersebut untuk membuat permintaan OSS.
-
Klik OK.
3. Buat RAM role
Buat RAM role untuk Akun Alibaba Cloud saat ini dan dapatkan ARN role (Alibaba Cloud Resource Name) yang sesuai agar dapat diasumsikan oleh RAM user.
-
Di panel navigasi sebelah kiri, pilih Identities > Roles.
-
Klik Create Role dan pilih Cloud Account sebagai tipe entitas tepercaya.
-
Pilih Akun Alibaba Cloud saat ini dan klik OK.
-
Masukkan nama role dan klik OK.
-
Pada halaman Roles, temukan role yang telah Anda buat dan klik namanya. Di halaman detail role, klik Copy di samping ARN untuk menyimpan ARN role tersebut.
4. Buat policy untuk unggah file
Dengan menerapkan prinsip hak istimewa minimal, buat kebijakan kustom untuk RAM role yang membatasi unggahan hanya ke bucket OSS tertentu.
-
Di panel navigasi sebelah kiri, pilih Permissions > Policies.
-
Klik Create Policy.
-
Di halaman Create Policy, klik tab JSON Editor. Di editor kebijakan, ganti placeholder dengan nama bucket yang telah Anda buat, misalnya,
web-direct-upload.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:PutObject", "Resource": "acs:oss:*:*:<your-bucket-name>/*" } ] } -
Setelah mengonfigurasi kebijakan, klik Next to edit policy information.
-
Pada bagian Basic Information, masukkan nama kebijakan, lalu klik OK.
5. Memberikan izin kepada Peran RAM
Berikan kebijakan kustom kepada RAM role. Hal ini memastikan bahwa ketika role diasumsikan, ia memiliki izin yang diperlukan.
-
Di panel navigasi sebelah kiri, pilih Identities > RAM Role.
-
Pada halaman RAM Role, temukan RAM role yang dituju, lalu klik Grant Permission di kolom Actions.
-
Pada halaman Grant Permission, pilih Custom Policy dan pilih kebijakan kustom yang telah Anda buat.
-
Klik OK.
6. Buat Instance ECS sebagai server aplikasi
Buat Instance ECS untuk berfungsi sebagai server aplikasi Anda dalam menghasilkan kredensial sementara.
Di lingkungan produksi, Anda dapat mengintegrasikan panggilan API STS ke server aplikasi yang sudah ada, alih-alih membuat Instance ECS baru.
|
Parameter |
Nilai contoh |
|
Billing Method |
pay-as-you-go |
|
Region |
China (Hangzhou) |
|
Public IP |
Assign Public IPv4 Address |
|
Security Group |
Allow access on TCP port 80 (HTTP) |
Untuk informasi lebih lanjut, lihat Buat Instance ECS.
7. Dapatkan kredensial sementara di server aplikasi
Integrasikan SDK STS ke aplikasi web Anda untuk membuat titik akhir API yang menyediakan kredensial akses sementara. Ketika aplikasi seluler melakukan permintaan HTTP GET ke titik akhir ini (misalnya, /get_sts_token), server akan menghasilkan dan mengembalikan kredensial akses sementara.
Contoh berikut menunjukkan cara menggunakan framework Flask pada Instance ECS untuk membangun aplikasi web yang menyediakan titik akhir bagi kredensial akses sementara:
-
Sambungkan ke Instance ECS.
Untuk informasi lebih lanjut, lihat Sambungkan ke Instance ECS.
-
Instal Python 3.
-
Buat dan beralih ke direktori proyek.
mkdir my_web_sample cd my_web_sample -
Instal 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_credentials -
Tulis kode backend.
-
Buat file bernama
main.py. -
Tambahkan kode Python berikut ke file tersebut.
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 Peran RAM Anda. role_arn_for_oss_upload = '<YOUR_ROLE_ARN>' # Atur ini ke wilayah layanan STS, misalnya, 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 tidak ada parameter yang ditentukan saat menginisialisasi CredentialClient, rantai kredensial default digunakan. # Saat menjalankan secara lokal, Anda dapat menentukan Pasangan Kunci Akses melalui variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. # Saat menjalankan di Instance ECS, Instance ECI, atau di Container Service, Anda dapat menentukan peran instans yang dilampirkan melalui variabel lingkungan ALIBABA_CLOUD_ECS_METADATA. SDK secara otomatis mengambil kredensial STS sementara. 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, # Atur <YOUR_ROLE_SESSION_NAME> ke 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) # Jika Anda perlu mendengarkan alamat lain, seperti 0.0.0.0, Anda harus menambahkan mekanisme autentikasi di sisi server. -
Dalam kode, ganti
<YOUR_ROLE_ARN>dengan ARN role yang disimpan di Langkah 1.3. -
Dalam kode, ganti
<YOUR_ROLE_SESSION_NAME>dengan nama sesi kustom, sepertirole_session_test.
-
-
Jalankan aplikasi menggunakan Pasangan Kunci Akses dari Langkah 1.1.
ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR_AK_ID> ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR_AK_SECRET> python3 main.py -
Buka browser web, lalu kunjungi
http://<your_ecs_instance_public_ip>/get_sts_token.Tanggapan sukses akan tampak seperti berikut:

-
Tekan
Ctrl+Cuntuk menghentikan aplikasi.
Langkah 2: Unduh dan siapkan aplikasi seluler
Android
-
Unduh kode sumber aplikasi seluler.
Anda dapat menggunakan aplikasi seluler ini untuk mengunggah gambar ke OSS. Aplikasi ini mendukung unggahan simple maupun unggahan yang dapat dilanjutkan. Untuk jaringan yang tidak andal, unggahan yang dapat dilanjutkan direkomendasikan. Anda juga dapat menggunakan layanan pemrosesan gambar untuk mengubah ukuran atau menambahkan watermark pada gambar sebelum diunggah.
-
Buka aplikasi seluler dan konfigurasikan parameter.
-
STS authentication server: Masukkan alamat server aplikasi yang telah Anda deploy di Langkah 1: Aktifkan STS dan konfigurasikan server aplikasi.
-
Destination bucket: Bucket tempat aplikasi seluler akan mengunggah data.
-
Region: Wilayah tempat bucket tujuan berada.
-
-
Klik Configure.
iOS
-
Unduh kode sumber aplikasi seluler.
Anda dapat menggunakan aplikasi seluler ini untuk mengunggah gambar ke OSS. Aplikasi ini mendukung unggahan simple maupun unggahan yang dapat dilanjutkan. Untuk jaringan yang tidak andal, unggahan yang dapat dilanjutkan direkomendasikan. Anda juga dapat menggunakan layanan pemrosesan gambar untuk mengubah ukuran atau menambahkan watermark pada gambar sebelum diunggah.
-
Buka aplikasi seluler dan konfigurasikan parameter.
Sebelum menjalankan demo, Anda harus mengonfigurasi parameter yang diperlukan dalam file OSSTestMacros.h, termasuk
OSS_BUCKET_PRIVATE,OSS_ENDPOINT, danOSS_STSTOKEN_URL. AturOSS_STSTOKEN_URLke alamat server aplikasi yang telah Anda deploy di Langkah 1: Aktifkan STS dan konfigurasikan server aplikasi.
-
Jalankan demo.
Langkah 3: Uji layanan unggah langsung
-
Tentukan nama objek OSS. Klik Upload dan pilih gambar untuk diunggah.
-
Setelah unggahan berhasil, Anda dapat melihat hasilnya di Konsol OSS.