All Products
Search
Document Center

Platform For AI:Konfigurasikan peran RAM EAS

Last Updated:Jul 16, 2026

Sambungkan peran RAM ke layanan EAS Anda agar kode yang berjalan di dalam layanan dapat memanggil API Alibaba Cloud lainnya tanpa menyimpan AccessKey jangka panjang. Saat waktu proses, instans layanan secara otomatis mengambil kredensial STS sementara dan memperbaruinya sebelum kedaluwarsa.

Manfaat

Menggunakan peran RAM alih-alih AccessKey yang dikodekan langsung memberikan dua keuntungan:

  • Keamanan: Kredensial bersifat sementara dan tidak pernah disimpan dalam gambar atau konfigurasi layanan Anda. Tidak ada kunci jangka panjang yang berisiko bocor.

  • Kontrol terperinci: Perbarui kebijakan izin peran RAM kapan saja untuk mengubah sumber daya yang dapat diakses layanan—tanpa perlu menerapkan ulang.

Batasan

Setiap layanan EAS hanya dapat dikaitkan dengan satu peran RAM.

Pilih jenis peran

Peran default PAI Peran kustom
Apa itu Peran layanan bawaan AliyunServiceRoleForPaiEas, tersedia secara otomatis Peran RAM yang Anda buat dan konfigurasi sendiri
Izin Hanya MaxCompute dan OSS Layanan Alibaba Cloud apa pun yang Anda berikan aksesnya
Kapan digunakan Mengakses bucket OSS default ruang kerja atau proyek MaxCompute tempat pemilik layanan memiliki izin eksekusi Skenario lainnya, atau ketika Anda memerlukan kontrol izin yang lebih granular
Usaha pengaturan Tambahkan satu bidang JSON ke konfigurasi layanan Buat peran, berikan kebijakan, lalu tambahkan ARN peran ke konfigurasi layanan

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Layanan EAS di PAI atau penerapan yang siap dikonfigurasi

  • (Untuk peran kustom) Akses ke Konsol RAM untuk membuat dan mengelola peran

  • (Untuk Pengguna RAM) Hubungi akun utama untuk memberikan izin ram:PassRole — lihat Berikan izin PassRole kepada Pengguna RAM

Sambungkan peran default PAI

Tambahkan bidang berikut ke JSON pada bagian Service Configuration saat melakukan penerapan:

"options": {
  "enable_ram_role": true
}

Setelah diaktifkan, instans layanan dapat mengakses:

  • Data di proyek MaxCompute tempat pemilik layanan EAS memiliki izin eksekusi, melalui SDK PyODPS

  • Data di bucket OSS default yang telah ditetapkan di ruang kerja saat ini, melalui SDK OSS

Jika Anda melakukan penerapan menggunakan JSON langsung dan ingin menggunakan SDK OSS melalui peran default PAI, sertakan bidang metadata.workspace_id dalam konfigurasi layanan.

Sambungkan peran RAM kustom

Langkah 1: Buat peran RAM

  1. Masuk ke Konsol RAM dan buat peran RAM.

  2. Atur parameter berikut:

    Parameter Nilai
    Principal Type Cloud Service
    Principal Name Platform for AI/PAI (eas.pai.aliyuncs.com)
  3. Pada tab Trust Policy peran baru, pastikan eas.pai.aliyuncs.com muncul dalam larik principal Service. Kebijakan kepercayaan ini mengontrol layanan mana yang dapat mengasumsikan peran tersebut. Contoh kebijakan kepercayaan yang dikonfigurasi dengan benar adalah sebagai berikut:

    Penting

    Ketidakhadiran entri ini merupakan penyebab paling umum dari kesalahan penerapan failed to assume role. Jika peran dibuat dengan principal berbeda (misalnya, layanan lain), klik Edit Trust Policy dan tambahkan "eas.pai.aliyuncs.com" ke larik Service.

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "RAM": ["acs:ram::aaa:root"],
            "Service": ["xxx.aliyuncs.com"]
          }
        }
      ],
      "Version": "1"
    }

Langkah 2: Berikan izin kepada peran

Sambungkan kebijakan sistem atau kustom untuk memberikan akses peran ke sumber daya yang dibutuhkan layanan Anda. Sebagai contoh, sambungkan AliyunOSSReadOnlyAccess untuk mengizinkan akses baca ke OSS.

Penting

Jika layanan memasang sumber data (NAS atau OSS) atau menarik gambar kustom saat penerapan, berikan izin yang sesuai kepada peran tersebut:

Langkah 3: Kaitkan peran saat penerapan

Tambahkan konfigurasi berikut ke JSON pada bagian Service Configuration. Ganti role_arn dengan ARN peran yang telah Anda buat. Untuk menemukan ARN, lihat Lihat peran RAM.

"options": {
  "enable_ram_role": true
},
"role_arn": "acs:ram::111*************:role/${RoleName}"

Berikan izin PassRole kepada Pengguna RAM

Jika Anda menerapkan layanan EAS sebagai Pengguna RAM (sub-akun), akun utama harus memberikan izin ram:PassRole kepada Anda. Tanpa izin ini, penerapan akan gagal dengan kesalahan konfigurasi peran.

Minta akun utama untuk menyambungkan kebijakan kustom berikut ke Pengguna RAM Anda. Ganti ${RoleName} dengan nama peran RAM yang dikaitkan dengan layanan EAS. Untuk bantuan, lihat Buat kebijakan izin kustom dan Berikan izin kepada Pengguna RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ram:PassRole",
      "Resource": "acs:ram::*:role/${RoleName}"
    }
  ]
}

Dapatkan kredensial akses sementara

Setelah peran disambungkan, instans layanan dapat mengambil kredensial sementara STS melalui tiga cara. Ketiga metode ini mengembalikan bidang kredensial yang sama.

Metode 1: Credentials tool

Credentials tool membaca kredensial dari titik akhir lokal yang secara otomatis disuntikkan ke instans layanan. Kredensial diperbarui secara berkala—kode Anda tidak perlu menangani rotasi.

Saat melakukan penerapan, instal alibabacloud_credentials di bagian Third-party Library Configuration (lewati langkah ini jika sudah ada dalam gambar Anda).

Kemudian gunakan kode berikut untuk menginisialisasi klien terotentikasi:

from alibabacloud_credentials.client import Client as CredClient
from alibabacloud_credentials.models import Config as CredConfig

credentials_config = CredConfig(type='credentials_uri')
credentials_client = CredClient(credentials_config)

Untuk contoh dalam bahasa lain, lihat Praktik terbaik untuk mengakses OpenAPI Alibaba Cloud menggunakan kredensial akses.

Metode 2: Panggil titik akhir kredensial lokal

Di dalam instans layanan, panggil server lokal yang secara otomatis disuntikkan untuk mendapatkan kredensial saat ini:

# Ambil kredensial sementara untuk peran RAM instans
curl $ALIBABA_CLOUD_CREDENTIALS_URI

Contoh respons:

{
  "Code": "Success",
  "AccessKeyId": "STS.N*********7",
  "AccessKeySecret": "3***************d",
  "SecurityToken": "DFE32G*******",
  "Expiration": "2024-05-21T10:39:29Z"
}
Bidang Deskripsi
SecurityToken Token sementara untuk peran RAM
Expiration Waktu kedaluwarsa kredensial (UTC)

Metode 3: Baca file kredensial

PAI-EAS secara otomatis menulis kredensial ke /etc/ram/credentials di dalam instans layanan dan memperbarui file tersebut secara berkala. Baca file ini secara langsung jika panggilan HTTP lokal tidak memungkinkan:

{
  "Code": "Success",
  "AccessKeyId": "STS.N*********7",
  "AccessKeySecret": "3***************d",
  "SecurityToken": "DFE32G*******",
  "Expiration": "2024-05-21T10:39:29Z"
}

Contoh

Contoh berikut menunjukkan cara mengakses OSS dan MaxCompute dari dalam layanan EAS menggunakan peran RAM. Kedua contoh menggunakan providers.DefaultCredentialsProvider(), yang secara otomatis mengambil kredensial dari titik akhir lokal yang disuntikkan.

Contoh-contoh ini menggunakan halaman Custom Deployment di Konsol PAI. Untuk deskripsi parameter lengkap, lihat Deskripsi parameter penerapan kustom konsol.

Cara kerja contoh: Pasang skrip Python ke instans layanan melalui Model Configuration, lalu atur perintah run untuk mengeksekusinya. Hal ini menghindari pembuatan gambar kustom.

Contoh 1: Akses data OSS

import oss2
from alibabacloud_credentials.client import Client
from alibabacloud_credentials import providers
from itertools import islice

if __name__ == '__main__':
    auth = oss2.ProviderAuth(providers.DefaultCredentialsProvider())
    bucket = oss2.Bucket(
        auth,
        '<oss_endpoint>',   # Titik akhir internal, misalnya oss-cn-hangzhou-internal.aliyuncs.com
        '<oss_bucket>'      # Harus merupakan bucket OSS default untuk ruang kerja saat ini
    )

    for b in islice(oss2.ObjectIterator(bucket), 10):
        print(b.key)

Ganti placeholder berikut:

Placeholder Deskripsi
<oss_bucket> Nama bucket OSS Anda. Harus merupakan bucket OSS default yang telah ditetapkan di ruang kerja saat ini.
<oss_endpoint> Titik akhir endpoint untuk wilayah bucket Anda. Secara default, EAS tidak terhubung ke internet publik, sehingga gunakan titik akhir internal (misalnya, oss-cn-hangzhou-internal.aliyuncs.com). Untuk menggunakan titik akhir publik, konfigurasikan virtual private cloud (VPC) dengan akses internet untuk EAS. Lihat Konfigurasi jaringan.

Contoh 2: Akses MaxCompute (PyODPS)

from alibabacloud_credentials import providers
from odps.accounts import CredentialProviderAccount
from odps import ODPS

if __name__ == '__main__':
    account = CredentialProviderAccount(providers.DefaultCredentialsProvider())
    o = ODPS(
        account=account,
        project='<odps_project>',    # Nama proyek MaxCompute Anda
        endpoint='<odps_endpoint>'   # Titik akhir internal, misalnya https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api
    )

    for t in o.list_tables():
        print(t)

Ganti placeholder berikut:

Placeholder Deskripsi
<odps_project> Nama proyek MaxCompute Anda. Temukan di Konsol MaxCompute di bawah Workspace > Project Management. Jika menerapkan sebagai Pengguna RAM, pastikan pengguna tersebut memiliki izin operasi untuk proyek tersebut. Lihat Otorisasi pengguna lain.
<odps_endpoint> Titik akhir endpoint untuk wilayah proyek Anda. Secara default, EAS tidak terhubung ke internet publik, sehingga gunakan titik akhir internal (misalnya, https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api). Untuk menggunakan titik akhir publik, konfigurasikan VPC dengan akses internet untuk EAS. Lihat Konfigurasi jaringan.

Terapkan contoh

Pada halaman Custom Deployment, konfigurasikan parameter berikut:

Parameter Nilai
Run Command (di bawah Environment Information) python /mnt/data/xx.py
Model Configuration Pasang direktori yang berisi skrip Anda dan atur jalur pemasangan ke /mnt/data/
Third-party Library List (di bawah Third-party Library Configuration) alibabacloud_credentials, pyodps, oss2 — lewati jika sudah pra-instal dalam gambar Anda
Service Configuration Tambahkan "options": { "enable_ram_role": true } ke JSON

Setelah mengklik Deploy, lihat output di log layanan setelah layanan berjalan.

Pemecahan Masalah

Peran tidak ditemukan

Gejala: Anda mengalami kesalahan Permission Denied dengan kode kesalahan Forbidden.PrivilegeDenied. Aksi otorisasi adalah ram:PassRole, dan hasil pemeriksaan izin menunjukkan izin tidak mencukupi.

Periksa di Konsol RAM apakah peran tersebut ada.

  • Peran tidak ada: Perbarui konfigurasi layanan untuk mereferensikan nama peran yang ada.

  • Peran ada tetapi kesalahan tetap muncul: Pengguna RAM yang menerapkan layanan tidak memiliki izin ram:PassRole. Minta akun utama untuk menyambungkan kebijakan berikut (ganti ${RoleName} dengan nama peran). Lihat Berikan izin kepada Pengguna RAM.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram::*:role/${RoleName}"
        }
      ]
    }

Gagal mengasumsikan peran

Gejala: Tab Deployment Events pada halaman Elastic Algorithm Service menampilkan:

unable to render, error: failed to assume role for user, reason: You are not authorized to do this action. You should be authorized by RAM.

Kebijakan kepercayaan peran RAM tidak menyertakan eas.pai.aliyuncs.com sebagai principal tepercaya. Untuk memperbaikinya:

  1. Masuk ke Konsol RAM sebagai administrator RAM.

  2. Di panel navigasi kiri, pilih Identities > Roles.

  3. Klik nama peran RAM target.

  4. Pada tab Trust Policy, klik Edit Trust Policy.

  5. Dalam larik Service, tambahkan "eas.pai.aliyuncs.com" dan klik OK.

Sebelum:

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "RAM": ["acs:ram::aaa:root"],
        "Service": ["xxx.aliyuncs.com"]
      }
    }
  ],
  "Version": "1"
}

Sesudah:

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "RAM": ["acs:ram::aaa:root"],
        "Service": [
          "xxx.aliyuncs.com",
          "eas.pai.aliyuncs.com"
        ]
      }
    }
  ],
  "Version": "1"
}