Function Compute mungkin memerlukan akses ke layanan Alibaba Cloud lainnya saat fungsi dijalankan. Contohnya, pengiriman log fungsi ke Logstore di Layanan Log Sederhana, penarikan gambar dari Container Registry, atau akses ke layanan yang diterapkan dalam virtual private cloud (VPC). Oleh karena itu, Anda harus memberikan izin kepada Function Compute untuk mengakses layanan-layanan tersebut. AliyunFCDefaultRole adalah peran default yang menyediakan izin granular kasar agar Function Compute beroperasi dengan benar. Jika izin lebih spesifik diperlukan, Anda dapat membuat peran secara manual untuk memberikan izin tersebut kepada layanan dan fungsi Anda.
Cara kerjanya
Berdasarkan peran fungsi, Function Compute menggunakan AssumeRole untuk mendapatkan Token Layanan Keamanan (STS) sebagai kunci sementara. Kunci ini kemudian diteruskan ke fungsi melalui parameter Credentials atau credentials dalam konteks. Kunci sementara mencakup semua sumber daya yang telah diberi izin kepada fungsi tersebut. Anda dapat menggunakannya dalam kode fungsi agar Function Compute dapat mengakses layanan Alibaba Cloud lainnya.
Kunci sementara berlaku selama 36 jam dan tidak dapat diubah. Durasi maksimum eksekusi fungsi adalah 24 jam, sehingga kunci sementara tetap valid selama eksekusi fungsi.
Lokasi parameter Credentials atau credentials bervariasi tergantung pada runtime yang digunakan. Anda dapat merujuk ke topik berikut untuk informasi lebih lanjut. Perlu dicatat bahwa ketika menggunakan runtime kustom atau runtime Custom Container, kunci sementara disuntikkan ke header permintaan HTTP.
AliyunFCDefaultRole
Untuk menyederhanakan pemberian izin, Function Compute menyediakan peran sistem default bernama AliyunFCDefaultRole, yang dapat memberikan izin Function Compute untuk mengakses layanan Alibaba Cloud tertentu. Untuk informasi lebih lanjut tentang cara membuat peran default ini dan membiarkan Function Compute mengasumsikan peran tersebut, lihat Langkah 1: Aktifkan Function Compute.
Anda dapat masuk ke Konsol Resource Access Management (RAM) untuk melihat kebijakan izin yang terikat pada AliyunFCDefaultRole.

AliyunFCDefaultRole adalah peran sistem default khusus untuk Function Compute yang dapat diasumsikan oleh semua layanan Function Compute. Jangan lampirkan kebijakan tambahan apa pun ke peran tersebut. Jika izin yang diberikan oleh peran default ini tidak memenuhi persyaratan bisnis Anda, Anda dapat membuat peran lain dan melampirkan kebijakan izin sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk layanan Alibaba Cloud tepercaya.
Contoh: Berikan izin Function Compute untuk mengakses OSS
Dalam contoh ini, Function Compute diberikan izin untuk mengelola sumber daya Object Storage Service (OSS). Jika Anda ingin memberikan izin kepada semua fungsi dalam layanan Function Compute tertentu untuk mengelola sumber daya OSS, Anda dapat mengikat peran yang sesuai ke layanan tersebut.
Prasyarat
Layanan dan fungsi telah dibuat. Untuk informasi lebih lanjut, lihat Buat layanan dan Buat fungsi.
Prosedur
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, temukan layanan yang diinginkan dan klik Configure di kolom Actions.
Di bagian Role Settings halaman Modifikasi Layanan, klik Create Role untuk pergi ke konsol RAM. Buat peran sesuai petunjuk dan berikan izin yang diperlukan kepada peran tersebut.
Jika Anda sudah memiliki peran yang dapat digunakan, Anda dapat langsung menggunakannya. Jika peran tersebut tidak memiliki izin yang diperlukan, Anda dapat mengklik Modify Policy untuk melampirkan kebijakan ke peran tersebut. Untuk informasi lebih lanjut, lihat Berikan izin ke peran RAM.

Pada halaman Roles di Konsol RAM, klik Create Role.
Pada langkah Select Role Type, pilih Alibaba Cloud Service sebagai entitas tepercaya, dan klik Next.

Pada langkah Configure Role, atur Tipe Peran menjadi Normal Service Role, tentukan nama peran RAM, atur Select Trusted Service menjadi Function Compute, lalu klik OK. Dalam contoh ini, nama peran RAM adalah
mytestrole.
Pada langkah Finish, klik Add Permissions to RAM Role dan klik Grant Permission.
Di panel Berikan Izin, tentukan parameter Resource Scope dan Principal. Subjek default adalah peran yang dipilih. Pilih kebijakan sistem dan kebijakan kustom yang Anda butuhkan, yang kemudian akan ditambahkan ke bagian Kebijakan Terpilih di sisi kanan panel. Setelah Anda membuat pilihan, klik Grant permissions. Untuk informasi lebih lanjut, lihat Kebijakan dan contoh kebijakan. Item berikut menggambarkan opsi untuk parameter Cakupan Sumber Daya.
Account: Izin berlaku untuk semua sumber daya dalam akun Alibaba Cloud saat ini.
ResourceGroup: Izin berlaku untuk grup sumber daya tertentu. Jika Anda memilih GrupSumberDaya untuk parameter Cakupan Sumber Daya, pastikan layanan cloud yang diperlukan mendukung grup sumber daya. Untuk informasi lebih lanjut, lihat Layanan yang bekerja dengan Grup Sumber Daya.
Dalam contoh ini, AliyunOSSFullAccess dilampirkan ke peran yang dibuat untuk memberikan izin Function Compute mengakses OSS.

Ikat peran baru
mytestroleyang dibuat pada langkah sebelumnya ke layanan Function Compute tempat Anda ingin memberikan izin.
Setelah layanan mengasumsikan peran
mytestrole, uji apakah semua fungsi dalam layanan tersebut dapat mengelola sumber daya OSS.Temukan fungsi yang ingin Anda uji dari daftar layanan, lalu klik fungsi tersebut. Di tab Code fungsi, klik panah di sebelah Test Function, dan pilih Configure Test Parameters. Potongan kode berikut menunjukkan parameter uji:
{ "endpoint": "http://oss-cn-hangzhou.aliyuncs.com", "bucket": "web****", "objectName": "myObj", "message": "your-message" }Di tab Code, tulis kode di editor kode dan klik Deploy.
Dalam contoh ini, runtime Python bawaan digunakan. Anda dapat menggunakan kunci sementara yang disediakan oleh Function Compute untuk mengakses OSS.
import json import oss2 def handler(event, context): evt = json.loads(event) creds = context.credentials # Masukkan kunci sementara, termasuk token sementara. # ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud dapat digunakan untuk mengakses semua Operasi API. Menggunakan kredensial ini untuk melakukan operasi di Function Compute merupakan operasi berisiko tinggi. Kami merekomendasikan Anda menggunakan pengguna RAM untuk memanggil Operasi API atau melakukan pemeliharaan rutin. # Kami merekomendasikan Anda menghindari menyimpan pasangan AccessKey di kode proyek Anda. Jika informasi sensitif ini bocor, keamanan semua sumber daya di akun Anda bisa terganggu. # Dalam contoh ini, pasangan AccessKey diperoleh dari konteks. auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token) bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket']) bucket.put_object(evt['objectName'], evt['message']) return 'success'Klik Test Function. Setelah fungsi dieksekusi, masuk ke Konsol OSS dan temukan bucket yang diinginkan. Anda dapat melihat bahwa isi objek diganti dengan
messagedalam parameter uji.