Topik ini menjelaskan cara mengelola Daftar Kontrol Akses (ACL) objek menggunakan OSS SDK untuk PHP 2.0.
Catatan penggunaan
Kode contoh dalam topik ini menggunakan ID Wilayah
cn-hangzhoudari Wilayah Hangzhou, Tiongkok. Secara default, Titik Akhir Publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket tersebut, gunakan Titik Akhir Internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir.Untuk menetapkan izin akses untuk sebuah objek, Anda harus memiliki izin
oss:PutObjectAcl. Untuk mendapatkan izin akses untuk sebuah objek, Anda harus memiliki izinoss:GetObjectAcl. Untuk informasi lebih lanjut, lihat Berikan Kebijakan Kustom kepada Pengguna RAM.
Metode
Konfigurasikan ACL sebuah objek
put_object_acl(request: PutObjectAclRequest, **kwargs) → PutObjectAclResultKueri ACL sebuah bucket.
get_object_acl(request: GetObjectAclRequest, **kwargs) → GetObjectAclResultParameter permintaan
Nama parameter | Tipe | Deskripsi |
request | PutObjectAclRequest | Parameter permintaan. Untuk informasi lebih lanjut, lihat PutObjectAclRequest |
GetObjectAclRequest | Parameter permintaan. Untuk informasi lebih lanjut, lihat GetObjectAclRequest |
Parameter respons
Tipe | Deskripsi |
PutObjectAclResult | Nilai kembali. Untuk informasi lebih lanjut, lihat PutObjectAclResult |
GetObjectAclResult | Nilai kembali. Untuk informasi lebih lanjut, lihat GetObjectAclResult |
Untuk definisi lengkap metode untuk menetapkan ACL sebuah file, lihat put_object_acl.
Untuk definisi lengkap metode untuk mendapatkan ACL sebuah file, lihat get_object_acl.
Jenis ACL
Tabel berikut menjelaskan ACL yang dapat dikonfigurasi untuk sebuah objek:
ACL | Deskripsi | Nilai ACL |
Mewarisi dari bucket | File mewarisi izin akses dari bucket. | default |
Pribadi | Hanya pemilik file dan pengguna yang diberi otorisasi yang dapat membaca dan menulis file. Pengguna lain tidak dapat mengakses file. | private |
Baca-publik | Hanya pemilik file dan pengguna yang diberi otorisasi yang dapat membaca dan menulis file. Pengguna lain hanya dapat membaca file. Gunakan izin ini dengan hati-hati. | public-read |
Baca-tulis publik | Semua pengguna dapat membaca dan menulis file. Gunakan izin ini dengan hati-hati. | public-read-write |
ACL sebuah objek memiliki prioritas lebih tinggi daripada ACL bucket yang berisi objek tersebut. Sebagai contoh, jika ACL sebuah bucket adalah pribadi dan ACL sebuah objek dalam bucket tersebut adalah baca/tulis publik, semua pengguna diberikan izin baca dan tulis pada objek tersebut. Jika ACL sebuah objek tidak dikonfigurasi, ACL objek tersebut sama dengan ACL bucket tempat objek disimpan.
Kode contoh
Berikut adalah kode contoh untuk mengonfigurasi dan mendapatkan ACL sebuah objek.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="put object acl sample")
# Tambahkan parameter yang diperlukan: region, nama bucket, kunci objek, dan daftar kontrol akses (ACL).
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
parser.add_argument('--key', help='Nama objek.', required=True)
parser.add_argument('--acl', help='Tentukan izin akses ACL untuk objek.', required=True)
def main():
# Parse argumen baris perintah.
args = parser.parse_args()
# Muat informasi kredensial akses dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK.
cfg = oss.config.load_default()
# Tetapkan penyedia kredensial.
cfg.credentials_provider = credentials_provider
# Tetapkan wilayah yang diberikan oleh pengguna.
cfg.region = args.region
# Jika titik akhir diberikan, tetapkan titik akhir dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Tetapkan ACL objek.
result = client.put_object_acl(oss.PutObjectAclRequest(
bucket=args.bucket, # Nama bucket.
key=args.key, # Kunci objek.
acl=args.acl, # Nilai ACL baru.
))
# Cetak informasi keluaran setelah menetapkan ACL.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' ID versi: {result.version_id},'
)
# Dapatkan dan cetak pengaturan ACL saat ini dari objek.
result = client.get_object_acl(oss.GetObjectAclRequest(
bucket=args.bucket,
key=args.key,
))
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' ACL: {result.acl},'
f' ID versi: {result.version_id},'
)
# Panggil fungsi utama ketika skrip ini dijalankan langsung.
if __name__ == "__main__":
main()
Referensi
Untuk kode contoh lengkap untuk menetapkan ACL sebuah file, lihat put_object_acl.py.
Untuk kode contoh lengkap untuk mendapatkan ACL sebuah file, lihat get_object_acl.py.