All Products
Search
Document Center

Resource Orchestration Service:ALIYUN::OSS::Bucket

Last Updated:Feb 06, 2026

Tipe resource ALIYUN::OSS::Bucket digunakan untuk membuat bucket OSS.

Sintaksis

{
  "Type": "ALIYUN::OSS::Bucket",
  "Properties": {
    "AccessControl": String,
    "RefererConfiguration": Map,
    "ServerSideEncryptionConfiguration": Map,
    "CORSConfiguration": Map,
    "Tags": Map,
    "LoggingConfiguration": Map,
    "LifecycleConfiguration": Map,
    "StorageClass": String,
    "DeletionForce": Boolean,
    "Policy": Map,
    "BucketName": String,
    "RedundancyType": String,
    "VersioningConfiguration": Map,
    "ResourceGroupId": String,
    "EnableOssHdfsService": Boolean,
    "WebsiteConfigurationV2": Map,
    "BlockPublicAccess": Boolean
  }
}

Properti

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

BucketName

String

Ya

Tidak

Nama bucket.

Nama harus terdiri dari 3 hingga 63 karakter. Nama harus dimulai dan diakhiri dengan huruf kecil atau angka. Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung (-).

Catatan

Nama ini harus unik secara global. Anda dapat menggunakan AutoCompleteInput dalam AssociationProperty untuk menghasilkan string acak secara otomatis. Untuk informasi selengkapnya, lihat Bagaimana cara mengontrol panjang string acak?.

AccessControl

String

Tidak

Ya

Izin akses untuk bucket.

Nilai yang valid:

  • private (default): private.

  • public-read: baca-publik.

  • public-read-write: baca-tulis publik.

CORSConfiguration

Map

Tidak

Ya

Konfigurasi Berbagi Sumber Daya Lintas Asal (CORS).

Untuk informasi lebih lanjut, lihat Properti CORSConfiguration.

DeletionForce

Boolean

Tidak

Ya

Menentukan apakah akan memaksa penghapusan objek dalam bucket.

Nilai yang valid:

  • true: paksa hapus.

  • false (default): jangan paksa hapus.

EnableOssHdfsService

Boolean

Tidak

Ya

Menentukan apakah akan mengaktifkan layanan OSS-HDFS.

Nilai yang valid:

  • true: aktifkan layanan OSS-HDFS.

    Catatan

    Setelah Anda mengaktifkan layanan ini, Anda tidak dapat menonaktifkannya.

  • false: jangan aktifkan layanan OSS-HDFS.

BlockPublicAccess

Boolean

Tidak

Ya

Menentukan apakah akan memblokir akses publik ke bucket.

Nilai yang valid:

  • true: blokir akses publik.

  • false (default): jangan blokir akses publik.

LifecycleConfiguration

Map

Tidak

Ya

Konfigurasi siklus hidup untuk objek dalam bucket.

Untuk informasi selengkapnya, lihat Properti LifecycleConfiguration.

LoggingConfiguration

Map

Tidak

Tidak

Konfigurasi penyimpanan log.

Untuk informasi lebih lanjut, lihat Properti LoggingConfiguration.

Policy

Map

Tidak

Ya

Kebijakan bucket.

Untuk informasi selengkapnya, lihat Contoh umum kebijakan bucket.

RedundancyType

String

Tidak

Tidak

Jenis redundansi data untuk bucket.

Nilai yang valid:

  • LRS (default): penyimpanan redundan lokal (LRS). Data Anda disimpan secara redundan di beberapa perangkat penyimpanan dalam zona yang sama. Ini melindungi data Anda dari kehilangan jika hingga dua perangkat penyimpanan gagal secara bersamaan.

  • ZRS: penyimpanan redundan zona (ZRS). Data Anda disimpan secara redundan di tiga zona dalam wilayah yang sama. Ini melindungi data Anda dari kehilangan jika seluruh zona gagal akibat peristiwa seperti pemadaman listrik atau kebakaran.

RefererConfiguration

Map

Tidak

Ya

Konfigurasi perlindungan hotlink.

Untuk informasi lebih lanjut, lihat Properti RefererConfiguration.

ResourceGroupId

String

Tidak

Tidak

ID grup sumber daya.

Tidak ada

ServerSideEncryptionConfiguration

Map

Tidak

Ya

Konfigurasi enkripsi sisi server.

Untuk informasi lebih lanjut, lihat Properti ServerSideEncryptionConfiguration.

StorageClass

String

Tidak

Tidak

Kelas penyimpanan untuk bucket.

Nilai yang valid:

  • Standard (default): Standard.

  • IA: Akses Jarang.

  • Archive: Archive Storage.

Tags

Map

Tidak

Ya

Tag untuk bucket. Setiap tag adalah pasangan kunci-nilai.

Anda dapat mengonfigurasi hingga 20 tag.

Kunci harus terdiri dari 1 hingga 64 karakter. Kunci tidak boleh dimulai dengan http://, https://, atau Aliyun.

Nilai harus terdiri dari 0 hingga 128 karakter dan dikodekan dalam UTF-8.

VersioningConfiguration

Map

Tidak

Ya

Kontainer yang menyimpan status pengendalian versi.

Untuk informasi selengkapnya, lihat Properti VersioningConfiguration.

WebsiteConfigurationV2

Map

Tidak

Tidak

Konfigurasi situs web.

Untuk informasi selengkapnya, lihat Properti WebsiteConfigurationV2.

Sintaksis CORSConfiguration

"CORSConfiguration": {
  "CORSRule": List,
  "ResponseVary": Boolean
}

Properti CORSConfiguration

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

CORSRule

List

Tidak

Ya

Aturan CORS.

Untuk informasi lebih lanjut, lihat Properti CORSRule.

ResponseVary

Boolean

Tidak

Ya

Menentukan apakah akan mengembalikan header Vary: Origin.

Nilai yang valid:

  • true: kembalikan header Vary: Origin terlepas dari apakah permintaan lintas asal dikirim atau berhasil.

  • false (default): jangan pernah mengembalikan header Vary: Origin.

Catatan

Anda tidak dapat mengonfigurasi bidang ini sendirian. Anda harus mengonfigurasi setidaknya satu aturan CORS agar bidang ini berlaku.

Sintaksis CORSRule

"CORSRule": [
  {
    "MaxAgeSeconds": Number,
    "AllowedMethod": List,
    "ExposeHeader": List,
    "AllowedOrigin": List,
    "AllowedHeader": List
  }
]

Properti CORSRule

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

AllowedHeader

List

Tidak

Ya

Header yang diizinkan dalam permintaan lintas asal.

Nilai yang valid:

  • *

  • Cache-Control

  • Content-Language

  • Content-Type

  • Expires

  • Last-Modified

  • Pragma

AllowedMethod

List

Tidak

Ya

Metode HTTP yang diizinkan dalam permintaan lintas asal.

Nilai yang valid:

  • *

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

AllowedOrigin

List

Tidak

Ya

Asal yang diizinkan dalam permintaan lintas asal.

Tidak ada

ExposeHeader

List

Tidak

Ya

Header respons yang dapat diakses pengguna dari aplikasi.

Tanda bintang (*) tidak diizinkan.

MaxAgeSeconds

Number

Tidak

Ya

Waktu yang digunakan browser untuk menyimpan cache hasil permintaan OPTIONS untuk sumber daya tertentu.

Tidak ada

Sintaksis LifecycleConfiguration

"LifecycleConfiguration": {
  "Rule": List
}

Properti LifecycleConfiguration

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Rule

List

Ya

Tidak

Aturan siklus hidup.

Untuk informasi lebih lanjut, lihat Properti Rule.

Sintaks aturan

"Rule": [
  {
    "Status": String,
    "AbortMultipartUpload": Map,
    "Expiration": Map,
    "Prefix": String,
    "ID": String,
    "Filter": Map,
    "Transition": List
  }
]

Properti Rule

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Prefix

String

Ya

Tidak

Awalan tempat aturan ini berlaku.

Hanya objek yang namanya cocok dengan awalan yang dipengaruhi oleh aturan ini.

AbortMultipartUpload

Map

Tidak

Tidak

Pengaturan kedaluwarsa untuk unggah multi-bagian yang belum lengkap.

Untuk informasi lebih lanjut, lihat Properti AbortMultipartUpload.

Expiration

Map

Tidak

Tidak

Pengaturan kedaluwarsa untuk objek.

Untuk informasi lebih lanjut, lihat Properti Expiration.

ID

String

Tidak

Tidak

ID unik untuk aturan.

ID dapat terdiri dari hingga 255 karakter. Jika Anda tidak menentukan ID atau membiarkannya kosong, OSS akan menghasilkan ID unik secara otomatis.

Status

String

Tidak

Ya

Mengaktifkan atau menonaktifkan aturan.

Nilai yang valid:

  • Enabled: aktifkan aturan.

  • Disabled: nonaktifkan aturan.

Filter

Map

Tidak

Tidak

Aturan pengecualian ini hanya mendukung satu kondisi.

Untuk informasi selengkapnya, lihat Properti Filter.

Transition

List

Tidak

Tidak

Daftar tugas transisi redundansi penyimpanan.

Untuk informasi selengkapnya, lihat Properti Transition.

Sintaks Transition

"Transition": [
    {
      "CreatedBeforeDate": String,
      "Days": Integer,
      "IsAccessTime": Boolean,
      "ReturnToStdWhenVisit": Boolean,
      "AllowSmallFile": Boolean,
      "StorageClass": String
    }
 ]

Properti Transition

Property name

Type

Wajib

Pembaruan diizinkan

Deskripsi

Constraint

CreatedBeforeDate

String

Tidak

Tidak

Tentukan tanggal. OSS menerapkan aturan siklus hidup ke objek yang waktu modifikasi terakhirnya lebih awal dari tanggal ini.

Tanggal harus mengikuti format ISO 8601 dan harus pukul tengah malam (00:00:00) dalam waktu UTC.
Contoh: 2002-10-11T00:00:00.000Z

Days

Integer

Tidak

Tidak

Tentukan berapa hari setelah objek terakhir diperbarui sebelum aturan siklus hidup berlaku.

Nilai yang valid: bilangan bulat positif, seperti 30, 90, dan 180.

IsAccessTime

Boolean

Tidak

Tidak

Tentukan apakah aturan siklus hidup diterapkan berdasarkan waktu akses terakhir objek.

  • true: terapkan aturan berdasarkan waktu akses terakhir.

  • false: jangan terapkan aturan berdasarkan waktu akses terakhir. Sebaliknya, terapkan berdasarkan kondisi lain, seperti waktu pembuatan atau modifikasi.

ReturnToStdWhenVisit

Boolean

Tidak

Tidak

Tentukan apakah akan mengubah kelas penyimpanan objek non-standar kembali ke Standard saat diakses.

Opsi ini hanya berlaku ketika IsAccessTime diatur ke true.

AllowSmallFile

Boolean

Tidak

Tidak

Menentukan apakah akan menjadikan waktu akses terakhir objek sebagai dasar operasi.

Ubah kelas penyimpanan menjadi IA, Archive, atau Cold Archive untuk objek yang ukurannya kurang dari 64 KB.

StorageClass

String

Tidak

Tidak

Kelas penyimpanan tempat objek diubah.

Nilai yang valid:

  • IA

  • Archive

  • ColdArchive

  • DeepColdArchive

Sintaksis Filter

"Filter":{
  "Not": Map
}

Properti Filter

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Not

Map

Tidak

Tidak

Aturan pengecualian.

Untuk informasi selengkapnya, lihat Bukan properti.

Bukan sintaksis

"Not":{
  "Tag": List,
  "Prefix": String
}

Bukan properti

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Tag

List

Tidak

Tidak

Tag untuk aturan pengecualian.

Aturan pengecualian ini berlaku untuk paling banyak satu tag objek.

Prefix

String

Tidak

Tidak

Awalan untuk aturan.

Kondisi awalan objek berikut berlaku untuk aturan pengecualian ini:

  • Jika Anda mengonfigurasi awalan di node Rule, awalan di node Not harus dimulai dengan awalan yang dikonfigurasi di node Rule. Misalnya, jika awalan di node Rule adalah dir, awalan di node Not harus dimulai dengan dir, seperti dir1 atau dir2.

  • Jika Anda tidak mengonfigurasi tag di node Not, awalan di node Not tidak boleh identik dengan awalan di node Rule.

Singkatnya, aturan ini menyatakan bahwa ketika Anda mengonfigurasi aturan pengecualian, jika aturan induk menentukan awalan, awalan di node Not harus merupakan subset atau contoh spesifik dari awalan induk. Keduanya tidak boleh identik kecuali Anda mengonfigurasi tag. Desain ini memungkinkan penyaringan file atau objek yang detail halus dan fleksibel, terutama dalam skenario seperti penyimpanan cloud, pencadangan data, atau penyaringan konten.

Sintaksis Expiration

"Expiration":{
  "Days": Number,
  "CreatedBeforeDate": String,
  "ExpiredObjectDeleteMarker": Boolean
}

Properti Expiration

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

CreatedBeforeDate

String

Tidak

Tidak

Tentukan tanggal. OSS menerapkan aturan ke objek yang waktu modifikasi terakhirnya lebih awal dari tanggal ini.

Tanggal harus mengikuti format ISO 8601 dan harus pukul tengah malam (00:00:00) dalam waktu UTC. Contoh: 2002-10-11T00:00:00.000Z.

Days

Number

Tidak

Tidak

Tentukan berapa hari setelah objek terakhir dimodifikasi sebelum aturan berlaku.

OSS menghitung jumlah hari sejak waktu modifikasi terakhir objek. Ketika jumlah hari yang ditentukan telah berlalu, OSS menghapus objek tersebut. Misalnya, jika Anda mengatur jumlah hari menjadi 30, OSS menghapus objek yang tanggal modifikasi terakhirnya 1 Januari 2016 pada 31 Januari 2016.

ExpiredObjectDeleteMarker

Boolean

Tidak

Tidak

Tentukan apakah akan menghapus penanda hapus yang kedaluwarsa secara otomatis.

Nilai yang valid:

  • true: hapus penanda hapus yang kedaluwarsa secara otomatis. Saat diatur ke true, Days dan CreatedBeforeDate tidak didukung.

  • false: jangan hapus penanda hapus yang kedaluwarsa secara otomatis. Saat diatur ke false, Anda harus menentukan Days atau CreatedBeforeDate.

Sintaksis AbortMultipartUpload

"AbortMultipartUpload": {
  "CreatedBeforeDate": String,
  "Days": Number
}

Properti AbortMultipartUpload

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

CreatedBeforeDate

String

Tidak

Tidak

Tentukan tanggal sebelum aturan tersebut mulai berlaku.

Tanggal harus mengikuti format ISO 8601 dan harus pukul tengah malam (00:00:00) dalam waktu UTC. Contoh: 2002-10-11T00:00:00.000Z.

Days

Number

Tidak

Tidak

Tentukan berapa hari setelah objek terakhir dimodifikasi sebelum aturan berlaku.

OSS menghitung jumlah hari sejak waktu modifikasi terakhir objek. Ketika jumlah hari yang ditentukan telah berlalu, OSS menghapus objek tersebut. Misalnya, jika Anda mengatur jumlah hari menjadi 30, OSS menghapus objek yang tanggal modifikasi terakhirnya 1 Januari 2016 pada 31 Januari 2016.

Sintaksis LoggingConfiguration

"LoggingConfiguration": {
  "TargetBucket": String,
  "TargetPrefix": String
}

Properti LoggingConfiguration

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

TargetBucket

String

Tidak

Tidak

Bucket tempat log akses disimpan.

Tidak ada

TargetPrefix

String

Tidak

Tidak

Awalan untuk file log akses yang disimpan.

Tidak ada

Sintaksis WebsiteConfigurationV2

"WebsiteConfiguration":{
  "RoutingRules": List,
  "IndexDocument": Map,
  "ErrorDocument": Map
}

Properti WebsiteConfigurationV2

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

ErrorDocument

Map

Tidak

Tidak

Halaman kesalahan statis yang dihosting di bucket.

Tidak ada

IndexDocument

Map

Tidak

Tidak

Halaman utama statis yang dihosting di bucket.

Tidak ada

RoutingRules

List

Tidak

Tidak

Daftar aturan routing.

Panjang maksimum: 20.

Sintaksis IndexDocument

"IndexDocument":{
  "Suffix": String,
  "Type": String,
  "SupportSubDir": String
}

Properti IndexDocument

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Suffix

String

Ya

Tidak

Halaman indeks default.

Setelah Anda mengonfigurasi halaman indeks default, jika Anda mengakses objek yang diakhiri dengan garis miring (/), OSS mengembalikan halaman indeks default ini.

Type

String

Tidak

Tidak

Tentukan perilaku saat Anda mencoba mengakses objek yang tidak ada dan tidak diakhiri dengan garis miring (/) setelah Anda mengonfigurasi halaman indeks default.

Aturan ini hanya berlaku ketika SupportSubDir diatur ke true, dan berlaku setelah RoutingRule tetapi sebelum ErrorFile. Anggaplah halaman indeks default adalah index.html. Saat Anda mengakses bucket.oss-cn-hangzhou.aliyuncs.com/abc dan objek abc tidak ada, perilaku untuk nilai Type yang berbeda adalah sebagai berikut:

  • 0 (default): Periksa apakah abc/index.html ada (nama objek ditambah garis miring (/) ditambah nama halaman indeks). Jika ada, kembalikan kode status pengalihan 302 dan atur URL di header Location ke /abc/ (garis miring (/) ditambah nama objek ditambah garis miring (/)). Jika tidak ada, kembalikan kesalahan 404 dan lanjutkan memeriksa ErrorFile.

  • 1: Kembalikan kesalahan 404 secara langsung. Jenis kesalahannya adalah NoSuchKey. Kemudian lanjutkan memeriksa ErrorFile.

  • 2: Periksa apakah abc/index.html ada. Jika ada, kembalikan konten objek secara langsung. Jika tidak ada, kembalikan kesalahan 404 dan lanjutkan memeriksa ErrorFile.

SupportSubDir

String

Tidak

Tidak

Tentukan apakah akan mengalihkan ke halaman utama default subdirektori saat Anda mengakses subdirektori tersebut.

Nilai yang valid:

  • true: alihkan ke halaman utama default subdirektori.

  • false (default): jangan alihkan ke halaman utama default subdirektori. Sebaliknya, alihkan ke halaman utama default direktori root. Misalnya, anggaplah halaman utama default adalah index.html. Jika Anda mengakses bucket.oss-cn-hangzhou.aliyuncs.com/subdir/ dan mengatur SupportSubDir ke false, Anda dialihkan ke bucket.oss-cn-hangzhou.aliyuncs.com/index.html. Jika Anda mengatur SupportSubDir ke true, Anda dialihkan ke bucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.

Sintaksis RoutingRules

"RoutingRules":[{
  "Redirect": Map,
  "Condition": Map,
  "RuleNumber": Integer
}]

Properti RoutingRules

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Redirect

Map

Ya

Tidak

Tentukan aksi yang akan dilakukan saat aturan cocok.

Untuk informasi selengkapnya, lihat Properti Redirect.

Condition

Map

Ya

Tidak

Kondisi pencocokan.

Aturan ini hanya berlaku ketika semua kondisi yang ditentukan terpenuhi. Pencocokan berhasil hanya jika semua kondisi dalam kontainer ini terpenuhi. Untuk informasi selengkapnya, lihat Properti Condition.

RuleNumber

Integer

Ya

Tidak

Nomor urutan aturan routing untuk dicocokkan dan dieksekusi. OSS mencocokkan aturan sesuai urutan nomor ini.

Jika pencocokan berhasil, OSS mengeksekusi aturan ini dan berhenti mengeksekusi aturan berikutnya.

Sintaksis Condition

"Condition":{
  "KeyPrefixEquals": String,
  "HttpErrorCodeReturnedEquals": String,
  "IncludeHeaders": List,
  "KeySuffixEquals": String
}

Properti Condition

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

KeyPrefixEquals

String

Tidak

Tidak

Awalan nama objek yang akan dicocokkan.

Tidak ada.

HttpErrorCodeReturnedEquals

String

Tidak

Tidak

Kode status HTTP yang harus dikembalikan saat Anda mengakses objek yang ditentukan agar aturan cocok.

Bidang ini harus bernilai 404 saat aturan pengalihan menggunakan pengembalian ke sumber berbasis mirroring.

IncludeHeaders

List

Tidak

Tidak

Aturan hanya cocok jika permintaan berisi header yang ditentukan dan nilainya sesuai dengan nilai yang ditentukan.

Anda dapat mengonfigurasi hingga 10 kondisi semacam ini. Untuk informasi selengkapnya, lihat Properti IncludeHeaders.

KeySuffixEquals

String

Tidak

Tidak

Akhiran nama objek yang akan dicocokkan.

Tidak ada.

Sintaksis IncludeHeaders

"IncludeHeaders": [
  {
    "Equals": String,
    "Key": String
  }
]

Properti IncludeHeaders

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Equals

String

Tidak

Tidak

Nilai header.

Tidak ada

Key

String

Ya

Tidak

Nama header.

Tidak ada

Sintaksis RefererConfiguration

"RefererConfiguration":{
  "AllowEmptyReferer": String,
  "RefererList": List
}

Properti RefererConfiguration

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

AllowEmptyReferer

Boolean

Tidak

Tidak

Tentukan apakah akan mengizinkan permintaan dengan header Referer kosong untuk mengakses bucket.

Nilai yang valid:

  • true (default): izinkan.

  • false: jangan izinkan.

RefererList

List

Tidak

Tidak

Daftar putih header Referer.

Tidak ada

Sintaksis Redirect

"Redirect":{
  "MirrorFollowRedirect": Boolean,
  "MirrorURL": String,
  "PassQueryString": Boolean,
  "MirrorPassQueryString": Boolean,
  "ReplaceKeyWith": String,
  "Protocol": String,
  "HttpRedirectCode": String,
  "ReplaceKeyPrefixWith": String,
  "RedirectType": String,
  "MirrorHeaders": Map,
  "MirrorCheckMd5": Boolean,
  "EnableReplacePrefix": Boolean,
  "HostName": String
}

Properti Redirect

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

MirrorFollowRedirect

Boolean

Tidak

Tidak

Tentukan apakah akan melanjutkan pengalihan ke Location yang ditentukan untuk mengambil data ketika hasil permintaan pengembalian ke sumber berbasis mirroring mengembalikan kode status 3xx.

Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror. Misalnya, saat Anda mencerminkan permintaan kembali ke server asal, server asal mengembalikan kode status 302 dengan header Location.

  • Jika diatur ke true, OSS melanjutkan permintaan ke alamat yang ditentukan dalam header Location. Proses ini memungkinkan hingga 10 pengalihan. Setelah 10 pengalihan, permintaan pengembalian ke sumber berbasis mirroring gagal dan mengembalikan kesalahan.

  • Jika diatur ke false, OSS mengembalikan kode status 302 secara langsung dan meneruskan header Location ke klien. Klien yang menentukan apakah akan melanjutkan pengalihan.

    Nilai default: true.

MirrorURL

String

Tidak

Tidak

URL server asal untuk pengembalian ke sumber berbasis mirroring.

Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror. URL asal harus dimulai dengan http:// atau https:// dan diakhiri dengan garis miring (/). OSS menambahkan nama objek ke URL ini untuk membentuk URL akhir. Misalnya, jika nama objek adalah myobject dan Anda mengatur parameter ini ke http://example.com/, URL pengembalian ke asal adalah http://example.com/myobject. Jika Anda mengatur parameter ini ke http://example.com/dir1/, URL pengembalian ke asal adalah http://example.com/dir1/myobject.

PassQueryString

Boolean

Tidak

Tidak

Tentukan apakah akan menyertakan parameter kueri saat melakukan pengalihan atau pengembalian ke sumber berbasis mirroring.

Misalnya, jika pengguna mengakses OSS dengan parameter kueri a=b&c=d dan PassQueryString diatur ke true, parameter kueri ditambahkan ke header Location untuk pengalihan 302, seperti Location: example.com?a=b&c=d. Jika jenis aturan adalah pengembalian ke sumber berbasis mirroring, parameter kueri juga disertakan dalam permintaan pengembalian ke asal. Nilai yang valid: true, false (default).

MirrorPassQueryString

Boolean

Tidak

Tidak

Sama seperti PassQueryString, tetapi memiliki prioritas lebih tinggi daripada PassQueryString. Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror.

Nilai default: false.

ReplaceKeyWith

String

Tidak

Tidak

Saat Anda menggunakan aturan Redirect, nama objek diganti dengan nilai yang ditentukan oleh ReplaceKeyWith. Ini memungkinkan Anda menggunakan variabel.

Variabel yang didukung hanyalah {key}, yang merepresentasikan nama objek dalam permintaan. Misalnya, jika Anda ingin mengakses objek bernama test dan mengatur ReplaceKeyWith ke prefix/{key}, header Location mengarah ke http://example.com/prefix/test.suffix.

Artinya, saat klien meminta objek asli (misalnya, test), server mengalihkan permintaan ke lokasi baru. Jalur lokasi baru dihasilkan secara dinamis berdasarkan pola yang ditentukan oleh ReplaceKeyWith. Dalam contoh ini, jalur baru menambahkan "prefix/" sebelum nama objek asli (test), menghasilkan URL pengalihan akhir "http://example.com/prefix/test.suffix". Bagian ".suffix" bersifat tetap, sedangkan "${key}" berhasil diganti dengan nama objek "test".

Protocol

String

Tidak

Tidak

Protokol yang digunakan untuk pengalihan.

Aturan ini hanya berlaku ketika RedirectType diatur ke External atau AliCDN. Misalnya, jika Anda ingin mengakses file bernama test dan mengalihkannya ke example.com menggunakan HTTPS, header Location dalam respons HTTP harus diatur ke "https://example.com/test". Nilai yang valid: http, https.

HttpRedirectCode

String

Tidak

Tidak

Kode status HTTP yang dikembalikan selama pengalihan.

Ini hanya berlaku ketika RedirectType diatur ke External atau AliCDN. Nilai default: 302. Nilai yang valid: 301, 302, 307.

ReplaceKeyPrefixWith

String

Tidak

Tidak

Nilai yang menggantikan awalan nama objek dalam pengalihan. Jika awalan kosong, string ini disisipkan sebelum nama objek.

Catatan

Anda hanya dapat menggunakan properti ReplaceKeyWith atau ReplaceKeyPrefixWith. Misalnya, jika nama objek adalah ABC/test.TXT, KeyPrefixEquals diatur ke ABC/, dan ReplaceKeyPrefixWith diatur ke def/, header Location mengarah ke http://example.com/def/test.txt.

RedirectType

String

Ya

Tidak

Jenis pengalihan.

Nilai yang valid:

  • Mirror: pengembalian ke sumber berbasis mirroring.

  • External: pengalihan eksternal. OSS mengembalikan kode status 3xx untuk menginstruksikan klien mengalihkan ke alamat lain.

  • AliCDN: pengalihan Alibaba Cloud CDN. Terutama digunakan dengan jaringan pengiriman konten Alibaba Cloud. Tidak seperti External, OSS menambahkan header tambahan. Alibaba Cloud CDN mengenali header ini dan mengalihkan ke alamat yang ditentukan, mengambil data, dan mengembalikannya kepada pengguna, bukan mengembalikan permintaan pengalihan 3xx kepada pengguna.

MirrorHeaders

Map

Tidak

Tidak

Header yang dicerminkan ke server asal.

Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror. Untuk informasi selengkapnya, lihat Properti MirrorHeaders.

MirrorCheckMd5

Boolean

Tidak

Tidak

Tentukan apakah akan memverifikasi hash MD5 data yang diambil dari server asal.

Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror. Saat MirrorCheckMd5 diatur ke true, jika server asal mengembalikan header Content-MD5 dalam respons, OSS memverifikasi apakah hash MD5 data yang diambil cocok dengan header tersebut. Jika tidak cocok, OSS tidak menyimpan data ke OSS. Nilai default: false.

EnableReplacePrefix

Boolean

Tidak

Tidak

Jika diatur ke true, awalan nama objek diganti dengan nilai yang ditentukan oleh ReplaceKeyPrefixWith. Jika bidang ini tidak ditentukan atau kosong, awalan nama objek dipotong.

Catatan: Bidang ini tidak dapat diatur ke true saat ReplaceKeyWith tidak kosong. Nilai default: false.

HostName

String

Tidak

Tidak

Nama domain untuk pengalihan.

Nama domain harus mengikuti konvensi nama domain. Misalnya, jika nama file adalah test, protokol diatur ke https, dan nama host diatur ke example.com, header Location adalah https://example.com/test.

Sintaksis MirrorHeaders

"MirrorHeaders":{
  "Remove": List,
  "PassAll": Boolean,
  "Sets": List,
  "Pass": List
}

Properti MirrorHeaders

Property name

Jenis

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Hapus

Daftar

Tidak

Tidak

Nonaktifkan penerusan header yang ditentukan ke server asal.

Ini hanya berlaku ketika RedirectType diatur ke Mirror. Setiap header dapat terdiri dari hingga 1.024 byte dan hanya boleh berisi karakter 0-9, a-z, A-Z, dan tanda hubung (-). Anda dapat menentukan hingga 10 header.

LewatiSemua

Boolean

Tidak

Tidak

Tentukan apakah akan meneruskan semua header kecuali yang tercantum di bawah ke server asal.

Ini hanya berlaku ketika RedirectType diatur ke Mirror. Header yang dikecualikan meliputi: - content-length, authorization2, authorization, range, date, dan header umum lainnya - header yang dimulai dengan oss-, x-oss-, atau x-drs-

Nilai default: false

Artinya, header-header spesifik ini diteruskan ke sumber cermin secara default. Untuk mengubah perilaku ini, atur nilai ini ke true untuk mencegah header-header tersebut diteruskan.

Himpunan

Daftar

Tidak

Tidak

Atur header ke server asal. Header ini diatur saat permintaan dikirim ke server asal, terlepas dari apakah header yang ditentukan disertakan dalam permintaan.

Fitur ini hanya berlaku ketika RedirectType diatur ke Mirror. Anda dapat mengonfigurasi hingga 10 set header. Untuk informasi selengkapnya, lihat Properti Sets.

Lewati

Daftar

Tidak

Tidak

Teruskan header yang ditentukan ke server asal.

Ini hanya berlaku ketika RedirectType diatur ke Mirror. Setiap header dapat terdiri dari hingga 1.024 byte dan hanya boleh berisi karakter 0-9, a-z, A-Z, dan tanda hubung (-). Anda dapat menentukan hingga 10 header.

Sintaks Sets

"Sets": [
  {
    "Value": String,
    "Key": String
  }
]

Menetapkan properti

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Nilai

String

Ya

Tidak

Atur nilai header hingga maksimum 1.024 byte, tidak termasuk \r\n.

Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror.

Kunci

String

Ya

Tidak

Atur kunci header hingga maksimum 1.024 byte. Set karakter sama seperti untuk Pass.

Pengaturan ini hanya berlaku ketika RedirectType diatur ke Mirror.

Sintaksis ErrorDocument

"ErrorDocument":{
  "Key": String,
  "HttpStatus": String
}

Properti ErrorDocument

Property name

Type

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Key

String

Ya

Tidak

Halaman kesalahan default.

Jika Anda menentukan halaman kesalahan, OSS mengembalikan halaman kesalahan ini saat objek yang diminta tidak ada.

HttpStatus

String

Tidak

Tidak

Kode status HTTP untuk halaman kesalahan.

Nilai yang valid: 200, 404 (default).

Sintaksis ServerSideEncryptionConfiguration

"ServerSideEncryptionConfiguration":{
  "KMSMasterKeyID": String,
  "SSEAlgorithm": String
}

Properti ServerSideEncryptionConfiguration

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

SSEAlgorithm

String

Ya

Tidak

Metode enkripsi sisi server default.

Nilai yang valid:

  • KMS

  • AES256

KMSMasterKeyID

String

Tidak

Tidak

ID kunci.

Ini diperlukan hanya ketika SSEAlgorithm diatur ke KMS dan Anda menggunakan kunci tertentu untuk enkripsi.

Sintaksis VersioningConfiguration

"VersioningConfiguration":{
  "Status": String
}

Properti VersioningConfiguration

Property name

Tipe

Diperlukan

Pembaruan diizinkan

Deskripsi

Constraint

Status

String

Ya

Tidak

Status versioning.

Nilai yang valid:

  • Enabled: aktifkan pengendalian versi

  • Suspended: tangguhkan pengendalian versi

Nilai Pengembalian

Fn::GetAtt

  • Name: Nama bucket. Nama harus unik secara global.

  • DomainName: Nama domain yang digunakan untuk mengakses bucket melalui jaringan publik.

  • InternalDomainName: Nama domain yang digunakan untuk mengakses bucket melalui jaringan internal.

  • Arn: Nama Sumber Daya Alibaba Cloud (ARN).

Contoh

Skenario 1: Buat bucket OSS.

Buat Sekarang

ROSTemplateFormatVersion: '2015-09-01'
Description: Creates a simple oss bucket
Parameters:
  BucketName:
    AssociationProperty: AutoCompleteInput
    AssociationPropertyMetadata:
      Length: 5
      Prefix: simple-oss-bucket
      CharacterClasses:
        - Class: lowercase
          min: 1
    Type: String
    Label:
      en: Bucket Name
Outputs:
  BucketDomainName:
    Value:
      Fn::GetAtt:
        - MyBucket
        - DomainName
Resources:
  MyBucket:
    Type: ALIYUN::OSS::Bucket
    Properties:
      AccessControl: private
      BucketName:
        Ref: BucketName
Metadata: {}
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": "Creates a simple oss bucket",
  "Parameters": {
    "BucketName": {
      "Type": "String",
      "Label": {
        "en": "Bucket Name"
      },
      "AssociationProperty": "AutoCompleteInput",
      "AssociationPropertyMetadata": {
        "Length": 5 ,
        "Prefix": "simple-oss-bucket",
        "CharacterClasses": [
          {
            "Class": "lowercase",
            "min": 1
          }
        ]
      }
    }
  },
  "Metadata": {
  },
  "Resources": {
    "MyBucket": {
      "Type": "ALIYUN::OSS::Bucket",
      "Properties": {
        "AccessControl": "private",
        "BucketName": {
          "Ref": "BucketName"
        }
      }
    }
  },
  "Outputs": {
    "BucketDomainName": {
      "Value": {
        "Fn::GetAtt": [
          "MyBucket",
          "DomainName"
        ]
      }
    }
  }
}

Skenario 2: Buat bucket OSS, aktifkan akselerasi CDN, konfigurasikan resolusi nama domain, dan optimalkan strategi distribusi file untuk mendukung akses global dan aturan cache kustom.

Buat Sekarang

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: Create an OSS bucket and enable CDN acceleration, configure domain name resolution, and optimize file distribution strategies to support global access and custom caching rules.
  en: Buat bucket OSS dan aktifkan akselerasi CDN, konfigurasikan resolusi nama domain, dan optimalkan strategi distribusi file untuk mendukung akses global dan aturan caching kustom.
Parameters:
  Scope:
    Type: String
    Label:
      zh-cn: Acceleration area
      en: Area percepatan
    Description:
      zh-cn: Select the acceleration area. If the acceleration region is Chinese mainland only or Global, the service domain name must have an ICP filing.
      en: Pilih area percepatan. Jika wilayah akselerasi hanya Tiongkok daratan atau Global, nama domain layanan harus memiliki pendaftaran ICP.
    Default: domestic
    AllowedValues:
      - domestic
      - overseas
      - global
  DomainName:
    Type: String
    Label:
      zh-cn: Accelerated domain name
      en: Nama domain yang dipercepat
    Description:
      zh-cn: An accelerated domain name is a domain name that is added to CDN to accelerate access to the origin server. Enter a domain name under your account.
      en: Nama domain yang dipercepat merujuk pada nama domain yang digunakan untuk mengakses CDN guna mempercepat situs sumber. Harap isi nama domain di bawah akun Anda.
  BucketName:
    Type: String
    Label:
      en: Nama Bucket
      zh-cn: Bucket Name
    Description:
      en: Nama harus memiliki panjang 3 hingga 63 byte, dimulai dan diakhiri dengan huruf kecil atau angka. Nama hanya dapat berisi huruf kecil, angka, dan tanda hubung (-).<br/><b>catatan: <font color='blue'>Nama bucket harus unik secara global dalam OSS. Nama bucket tidak dapat diubah setelah bucket dibuat.</font>
      zh-cn: The name must be 3 to 63 characters in length. It must start and end with a lowercase letter or digit. It can contain only lowercase letters, digits, and hyphens (-).<br/><b>Note:<font color='blue'>The bucket name must be globally unique. You cannot create a bucket with an existing name.</font>
    AssociationProperty: AutoCompleteInput
    AssociationPropertyMetadata:
      Length: 6
      Prefix: image-example-
      CharacterClasses:
        - Class: lowercase
          min: 1
Resources:
  OssBucket:
    Type: ALIYUN::OSS::Bucket
    DependsOn: AutoEnableOSS
    Properties:
      BucketName:
        Ref: BucketName
      DeletionForce: true
  AutoEnableCDN:
    Type: ALIYUN::ROS::AutoEnableService
    Properties:
      ServiceName: CDN
  AutoEnableOSS:
    Type: ALIYUN::ROS::AutoEnableService
    Properties:
      ServiceName: OSS
  Domain:
    Type: ALIYUN::CDN::Domain
    Properties:
      Sources:
        Fn::Sub:
          - '[{"content":"${content}", "type":"oss", "priority":"20", "port":80, "weight":"10"}]'
          - content:
              Fn::GetAtt:
                - OssBucket
                - DomainName
      CdnType: web
      Scope:
        Ref: Scope
      DomainName:
        Ref: DomainName
    DependsOn: AutoEnableCDN
  DomainRecord:
    Type: ALIYUN::DNS::DomainRecord
    Properties:
      Type: CNAME
      RR:
        Fn::Select:
          - 0
          - Fn::Split:
              - .
              - Ref: DomainName
      Value:
        Fn::GetAtt:
          - Domain
          - Cname
      DomainName:
        Fn::Join:
          - .
          - Fn::Select:
              - '1:'
              - Fn::Split:
                  - .
                  - Ref: DomainName
    DependsOn: Domain
  DomainConfig:
    Type: ALIYUN::CDN::DomainConfig
    Properties:
      FunctionList:
        - FunctionArgs:
            - ArgName: file_type
              ArgValue: jpg,png,jpeg
            - ArgName: weight
              ArgValue: '99'
            - ArgName: ttl
              ArgValue: '7776000'
          FunctionName: filetype_based_ttl_set
        - FunctionArgs:
            - ArgName: private_oss_auth
              ArgValue: 'on'
            - ArgName: perm_private_oss_tbl
              ArgValue: ''
          FunctionName: l2_oss_key
        - FunctionArgs:
            - ArgName: filetype
              ArgValue: jpeg
            - ArgName: webp
              ArgValue: 'off'
            - ArgName: orient
              ArgValue: 'off'
            - ArgName: slim
              ArgValue: '90'
            - ArgName: enable
              ArgValue: 'on'
          FunctionName: image_transform
      DomainNames:
        Ref: Domain
    DependsOn: DomainRecord
Outputs:
  Cname:
    Description: Nama Domain CNAME
    Value:
      Fn::GetAtt:
        - Domain
        - Cname
  DomainName:
    Description: Nama Domain
    Value:
      Ref: Domain
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - Scope
          - DomainName
          - BucketName
<br/><br/>
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "Buat bucket OSS dan aktifkan akselerasi CDN, konfigurasikan resolusi nama domain, serta optimalkan strategi distribusi file untuk mendukung akses global dan aturan caching khusus.",
    "en": "Buat bucket OSS dan aktifkan akselerasi CDN, konfigurasikan resolusi nama domain, serta optimalkan strategi distribusi file untuk mendukung akses global dan aturan caching khusus."
  },
  "Parameters": {
    "Scope": {
      "Type": "String",
      "Label": {
        "zh-cn": "Area percepatan",
        "en": "Area percepatan"
      },
      "Description": {
        "zh-cn": "Pilih area percepatan. Jika wilayah akselerasi hanya di Tiongkok Daratan atau Global, nama domain layanan harus memiliki Pendaftaran ICP.",
        "en": "Pilih area percepatan. Ketika wilayah akselerasi hanya di Tiongkok Daratan dan seluruh dunia, nama domain layanan harus terdaftar."
      },
      "Default": "domestic",
      "AllowedValues": [
        "domestic",
        "overseas",
        "global"
      ]
    },
    "DomainName": {
      "Type": "String",
      "Label": {
        "zh-cn": "Nama domain yang dipercepat",
        "en": "Nama domain yang dipercepat"
      },
      "Description": {
        "zh-cn": "Nama domain yang dipercepat adalah nama domain yang ditambahkan ke CDN untuk mempercepat akses ke server sumber. Masukkan nama domain di bawah akun Anda.",
        "en": "Nama domain yang dipercepat mengacu pada nama domain akses CDN yang digunakan untuk mempercepat situs sumber. Silakan isi nama domain di bawah akun Anda."
      }
    },
    "BucketName": {
      "Type": "String",
      "Label": {
        "en": "Bucket Name",
        "zh-cn": "Bucket Name"
      },
      "Description": {
        "en": "Nama harus berukuran 3 hingga 63 byte, nama harus dimulai dan diakhiri dengan huruf kecil atau angka. Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung (-).;<br/><b>catatan: <font color='blue'>Nama bucket harus unik secara global dalam OSS. Nama bucket tidak dapat diubah setelah bucket dibuat.</font>",
        "zh-cn": "Nama harus berukuran 3 hingga 63 karakter. Nama harus dimulai dan diakhiri dengan huruf kecil atau angka. Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung (-).<br/><b>Catatan:<font color='blue'>Nama bucket harus unik secara global. Anda tidak dapat membuat bucket dengan nama yang sudah ada.</font>"
      },
      "AssociationProperty": "AutoCompleteInput",
      "AssociationPropertyMetadata": {
        "Length": 6,
        "Prefix": "image-example-",
        "CharacterClasses": [
          {
            "Class": "lowercase",
            "min": 1
          }
        ]
      }
    }
  },
  "Resources": {
    "OssBucket": {
      "Type": "ALIYUN::OSS::Bucket",
      "DependsOn": "AutoEnableOSS",
      "Properties": {
        "BucketName": {
          "Ref": "BucketName"
        },
        "DeletionForce": true
      }
    },
    "AutoEnableCDN": {
      "Type": "ALIYUN::ROS::AutoEnableService",
      "Properties": {
        "ServiceName": "CDN"
      }
    },
    "AutoEnableOSS": {
      "Type": "ALIYUN::ROS::AutoEnableService",
      "Properties": {
        "ServiceName": "OSS"
      }
    },
    "Domain": {
      "Type": "ALIYUN::CDN::Domain",
      "Properties": {
        "Sources": {
          "Fn::Sub": [
            "[{\"content\":\"${content}\", \"type\":\"oss\", \"priority\":\"20\", \"port\":80, \"weight\":\"10\"}]",
            {
              "content": {
                "Fn::GetAtt": [
                  "OssBucket",
                  "DomainName"
                ]
              }
            }
          ]
        },
        "CdnType": "web",
        "Scope": {
          "Ref": "Scope"
        },
        "DomainName": {
          "Ref": "DomainName"
        }
      },
      "DependsOn": "AutoEnableCDN"
    },
    "DomainRecord": {
      "Type": "ALIYUN::DNS::DomainRecord",
      "Properties": {
        "Type": "CNAME",
        "RR": {
          "Fn::Select": [
            0,
            {
              "Fn::Split": [
                ".",
                {
                  "Ref": "DomainName"
                }
              ]
            }
          ]
        },
        "Value": {
          "Fn::GetAtt": [
            "Domain",
            "Cname"
          ]
        },
        "DomainName": {
          "Fn::Join": [
            ".",
            {
              "Fn::Select": [
                "1:",
                {
                  "Fn::Split": [
                    ".",
                    {
                      "Ref": "DomainName"
                    }
                  ]
                }
              ]
            }
          ]
        }
      },
      "DependsOn": "Domain"
    },
    "DomainConfig": {
      "Type": "ALIYUN::CDN::DomainConfig",
      "Properties": {
        "FunctionList": [
          {
            "FunctionArgs": [
              {
                "ArgName": "file_type",
                "ArgValue": "jpg,png,jpeg"
              },
              {
                "ArgName": "weight",
                "ArgValue": "99"
              },
              {
                "ArgName": "ttl",
                "ArgValue": "7776000"
              }
            ],
            "FunctionName": "filetype_based_ttl_set"
          },
          {
            "FunctionArgs": [
              {
                "ArgName": "private_oss_auth",
                "ArgValue": "on"
              },
              {
                "ArgName": "perm_private_oss_tbl",
                "ArgValue": ""
              }
            ],
            "FunctionName": "l2_oss_key"
          },
          {
            "FunctionArgs": [
              {
                "ArgName": "filetype",
                "ArgValue": "jpeg"
              },
              {
                "ArgName": "webp",
                "ArgValue": "off"
              },
              {
                "ArgName": "orient",
                "ArgValue": "off"
              },
              {
                "ArgName": "slim",
                "ArgValue": "90"
              },
              {
                "ArgName": "enable",
                "ArgValue": "on"
              }
            ],
            "FunctionName": "image_transform"
          }
        ],
        "DomainNames": {
          "Ref": "Domain"
        }
      },
      "DependsOn": "DomainRecord"
    }
  },
  "Outputs": {
    "Cname": {
      "Description": "CNAME",
      "Value": {
        "Fn::GetAtt": [
          "Domain",
          "Cname"
        ]
      }
    },
    "DomainName": {
      "Description": "DomainName",
      "Value": {
        "Ref": "Domain"
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "Scope",
            "DomainName",
            "BucketName"
          ]
        }
      ]
    }
  }
}<br/><br/>

Skenario 3: Buat instans ECS dan bucket OSS, instal aplikasi, dan implementasikan layanan teks-ke-gambar serta peningkatan potret.

Buat Sekarang

ROSTemplateFormatVersion: '2015-09-01'
Mappings: {}
Parameters:
  DashScopeApiKey:
    NoEcho: true
    Label:
      zh-cn: DashScope API-KEY
      en: DashScope API-KEY
    Type: String
    Description:
      zh-cn: Aktifkan DashScope dan dapatkan kunci API. Untuk informasi selengkapnya, lihat <a href="https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key"  target="_blank">Aktifkan DashScope dan buat kunci API</a>.
      en: 'Aktifkan DashScope dan dapatkan kunci API. Silakan merujuk ke: <a href="https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key"  target="_blank">Aktifkan DashScope dan buat kunci API</a>.'
    AssociationProperty: ALIYUN::DashScope::ApiKey
  CommonName:
    Default: wanxiang
    Type: String
  InstancePassword:
    Description:
      zh-cn: Kata sandi logon untuk server. Panjangnya harus 8 hingga 30 karakter dan memuat setidaknya tiga dari jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
      en: Kata sandi logon server, panjang 8-30 karakter, harus memuat tiga jenis karakter (huruf kapital, huruf kecil, angka, serta simbol khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/)
    Default: Null
    Type: String
    Label:
      zh-cn: Kata Sandi Instans
      en: Kata Sandi Instans
    NoEcho: true
    AssociationProperty: ALIYUN::ECS::Instance::Password
    ConstraintDescription:
      zh-cn: Kata sandi harus terdiri dari 8 hingga 30 karakter dan memuat setidaknya tiga dari jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
      en: Panjang 8-30 karakter, harus memuat tiga jenis karakter (huruf kapital, huruf kecil, angka, serta simbol khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/)
  ZoneId:
    AssociationPropertyMetadata:
      AutoSelectFirst: true
    Default: Null
    Required: true
    Label:
      zh-cn: Zona Ketersediaan
      en: Zona Ketersediaan
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    Type: String
  BucketName:
    AssociationPropertyMetadata:
      Length: 5
      Prefix: drawing-with-tongyi-wanxiang-
      CharacterClasses:
        - Class: lowercase
          min: 1
    Description:
      zh-cn: Nama harus terdiri dari 3 hingga 63 karakter. Tidak boleh diawali atau diakhiri dengan tanda hubung (-). Dapat memuat huruf kecil, angka, dan tanda hubung (-).<br/>Catatan: <font color='blue'><b>Nama bucket harus unik secara global. Anda tidak dapat membuat bucket dengan nama yang sudah ada.</font>
      en: '3 hingga 63 karakter, tidak boleh diawali atau diakhiri dengan tanda hubung (-), dapat memuat huruf kecil, angka, dan tanda hubung (-);<br/>Catatan: <font color=''blue''><b>harus unik secara global, nama yang sudah ada tidak dapat dibuat ulang.</font>'
    MinLength: 3
    Label:
      zh-cn: Nama Bucket
      en: Nama Bucket
    AllowedPattern: ^[a-z0-9]+[a-z0-9\-]*[a-z0-9]+$
    Type: String
    MaxLength: 63
    AssociationProperty: AutoCompleteInput
    ConstraintDescription:
      zh-cn: Nama harus terdiri dari 3 hingga 63 karakter. Tidak boleh diawali atau diakhiri dengan tanda hubung (-). Dapat memuat huruf kecil, angka, dan tanda hubung (-).
      en: 3 hingga 63 karakter, tidak boleh diawali atau diakhiri dengan tanda hubung (-), dapat memuat huruf kecil, angka, dan tanda hubung (-)
  InstanceType:
    AssociationPropertyMetadata:
      SystemDiskCategory: cloud_essd
      InstanceChargeType: PostPaid
      ZoneId: ${ZoneId}
    Default: Null
    Required: true
    Label:
      zh-cn: Jenis Instans
      en: Jenis Instans
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    Type: String
Outputs:
  EcsLoginAddress:
    Description:
      zh-cn: Alamat logon untuk instans ECS.
      en: Alamat logon ECS.
    Value:
      Fn::Sub: https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=${ALIYUN::Region}&instanceId=${EcsInstance}
  ExperienceAddress:
    Description:
      zh-cn: Alamat pengalaman.
      en: Alamat pengalaman.
    Value:
      Fn::Sub:
        - http://${PublicIp}/wanx-demo
        - PublicIp:
            Fn::Select:
              - 0
              - Fn::GetAtt:
                  - EcsInstance
                  - PublicIps
Description:
  zh-cn: Buat Cloud Pribadi Virtual (VPC), instans Elastic Compute Service (ECS), dan bucket Layanan Penyimpanan Objek (OSS). Konfigurasikan grup keamanan dan izin Manajemen Akses Sumber Daya (RAM). Instal Java dan aplikasi untuk menerapkan layanan teks-ke-gambar dan penyempurnaan potret.
  en: Buat Cloud Pribadi Virtual (VPC), instans Elastic Compute Service (ECS), bucket Layanan Penyimpanan Objek (OSS), konfigurasikan grup keamanan dan izin Manajemen Akses Sumber Daya (RAM), instal Java dan aplikasi, serta terapkan layanan gambar berbasis teks dan penyempurnaan potret.
Conditions: {}
Resources:
  CustomPolicy:
    Type: ALIYUN::RAM::ManagedPolicy
    Properties:
      PolicyName:
        Fn::Sub: create_by_solution-${ALIYUN::StackId}
      PolicyDocument:
        Version: '1'
        Statement:
          - Action:
              - oss:GetObject
              - oss:PutObject
            Resource:
              - Fn::Sub: acs:oss:oss-${ALIYUN::Region}:${ALIYUN::TenantId}:${BucketName}/*
            Effect: Allow
  InstallApp:
    Type: ALIYUN::ECS::RunCommand
    Properties:
      CommandContent:
        Fn::Sub: |-
          #!/bin/bash

          cat << EOF >> ~/.bash_profile
          export DASHSCOPE_API_KEY=${DashScopeApiKey}
          export OSS_ACCESS_KEY_ID=${AccessKey.AccessKeyId}
          export OSS_ACCESS_KEY_SECRET=${AccessKey.AccessKeySecret}
          export WANX_DEMO_OSS_BUCKET=${BucketName}
          export WANX_DEMO_OSS_ENDPOINT=https://oss-${ALIYUN::Region}.aliyuncs.com
          EOF

          source ~/.bash_profile 
          wget https://help-static-aliyun-doc.aliyuncs.com/demos/wanx-demo-0.0.1-SNAPSHOT.jar
          nohup java -jar wanx-demo-0.0.1-SNAPSHOT.jar > wanx-demo.log 2>&1 &
      Type: RunShellScript
      Sync: true
      InstanceIds:
        - Ref: EcsInstance
      Timeout: 3600
    DependsOn:
      - ModuleInstallJava.Install
  AccessKey:
    Type: ALIYUN::RAM::AccessKey
    Properties:
      UserName:
        Ref: User
  Bucket:
    Type: ALIYUN::OSS::Bucket
    Properties:
      BucketName:
        Ref: BucketName
      DeletionForce: true
  SecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupIngress:
        - PortRange: 80/80
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
      VpcId:
        Ref: Vpc
      SecurityGroupName:
        Fn::Sub: ${CommonName}-sg
  ModuleInstallJava.Install:
    Type: ALIYUN::OOS::Execution
    Properties:
      SafetyCheck: Skip
      Parameters:
        action: install
        packageName: ACS-Extension-java-1853370294850618
        regionId:
          Ref: ALIYUN::Region
        targets:
          ResourceIds:
            - Ref: EcsInstance
          RegionId:
            Ref: ALIYUN::Region
          Type: ResourceIds
        parameters: Null
      TemplateName: ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL
    Metadata:
      ALIYUN::ROS::Module:
        LogicalIdHierarchy: ModuleInstallJava
        TypeHierarchy: MODULE::ACS::OOS::Extension
  User:
    Type: ALIYUN::RAM::User
    Properties:
      UserName:
        Fn::Sub: create_by_solution-${ALIYUN::StackId}
      PolicyAttachments:
        Custom:
          - Ref: CustomPolicy
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName:
        Fn::Sub: ${CommonName}-vpc
      CidrBlock: 192.168.0.0/16
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName:
        Fn::Sub: ${CommonName}-vsw
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.0.0/24
      ZoneId:
        Ref: ZoneId
  EcsInstance:
    Type: ALIYUN::ECS::InstanceGroup
    Properties:
      SystemDiskCategory: cloud_essd
      VpcId:
        Ref: Vpc
      SecurityGroupId:
        Ref: SecurityGroup
      ImageId: aliyun_3_9_x64_20G_alibase_
      InternetMaxBandwidthOut: 5
      VSwitchId:
        Ref: VSwitch
      Password:
        Ref: InstancePassword
      InstanceName:
        Fn::Sub: ${CommonName}-ecs
      InstanceType:
        Ref: InstanceType
      ZoneId:
        Ref: ZoneId
      MaxAmount: 1
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - DashScopeApiKey
          - BucketName
          - ZoneId
          - InstanceType
          - InstancePassword
    Hidden:
      - CommonName
<br/><br/>
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Mappings": {},
  "Parameters": {
    "DashScopeApiKey": {
      "NoEcho": true,
      "Label": {
        "zh-cn": "DashScope API-KEY",
        "en": "DashScope API-KEY"
      },
      "Type": "String",
      "Description": {
        "zh-cn": "Aktifkan DashScope dan dapatkan kunci API. Untuk informasi selengkapnya, lihat <a href=\"https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key\"  target=\"_blank\">Aktifkan DashScope dan buat kunci API</a>.",
        "en": "Aktifkan DashScope dan dapatkan kunci API. Silakan merujuk ke: <a href=\"https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key\"  target=\"_blank\">Aktifkan DashScope dan buat kunci API</a>."
      },
      "AssociationProperty": "ALIYUN::DashScope::ApiKey"
    },
    "CommonName": {
      "Default": "wanxiang",
      "Type": "String"
    },
    "InstancePassword": {
      "Description": {
        "zh-cn": "Kata sandi logon untuk server. Panjangnya harus 8 hingga 30 karakter dan memuat setidaknya tiga dari jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
        "en": "Kata sandi logon server, panjang 8-30 karakter, harus memuat tiga dari (huruf kapital, huruf kecil, angka, serta karakter khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/)"
      },
      "Default": null,
      "Type": "String",
      "Label": {
        "zh-cn": "Kata Sandi Instans",
        "en": "Instance Password"
      },
      "NoEcho": true,
      "AssociationProperty": "ALIYUN::ECS::Instance::Password",
      "ConstraintDescription": {
        "zh-cn": "Kata sandi harus terdiri dari 8 hingga 30 karakter dan memuat setidaknya tiga dari jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
        "en": "Panjang 8-30 karakter, harus memuat tiga dari (huruf kapital, huruf kecil, angka, serta karakter khusus ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/)"
      }
    },
    "ZoneId": {
      "AssociationPropertyMetadata": {
        "AutoSelectFirst": true
      },
      "Default": null,
      "Required": true,
      "Label": {
        "zh-cn": "Zona Ketersediaan",
        "en": "Availability Zone"
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "Type": "String"
    },
    "BucketName": {
      "AssociationPropertyMetadata": {
        "Length": 5,
        "Prefix": "drawing-with-tongyi-wanxiang-",
        "CharacterClasses": [
          {
            "Class": "lowercase",
            "min": 1
          }
        ]
      },
      "Description": {
        "zh-cn": "Nama harus terdiri dari 3 hingga 63 karakter. Tidak boleh diawali atau diakhiri dengan tanda hubung (-). Dapat berisi huruf kecil, angka, dan tanda hubung (-).<br/>Catatan: <font color='blue'><b>Nama bucket harus unik secara global. Anda tidak dapat membuat bucket dengan nama yang sudah ada.</font>",
        "en": "3 hingga 63 karakter, tidak boleh diawali atau diakhiri dengan tanda hubung (-), dapat berisi huruf kecil, angka, dan tanda hubung (-);<br/>Catatan: <font color='blue'><b>harus unik secara global, nama yang sudah ada tidak dapat dibuat kembali.</font>"
      },
      "MinLength": 3,
      "Label": {
        "zh-cn": "Nama Bucket",
        "en": "Bucket Name"
      },
      "AllowedPattern": "^[a-z0-9]+[a-z0-9\\-]*[a-z0-9]+$",
      "Type": "String",
      "MaxLength": 63,
      "AssociationProperty": "AutoCompleteInput",
      "ConstraintDescription": {
        "zh-cn": "Nama harus terdiri dari 3 hingga 63 karakter. Tidak boleh diawali atau diakhiri dengan tanda hubung (-). Dapat berisi huruf kecil, angka, dan tanda hubung (-).",
        "en": "3 hingga 63 karakter, tidak boleh diawali atau diakhiri dengan tanda hubung (-), dapat berisi huruf kecil, angka, dan tanda hubung (-)"
      }
    },
    "InstanceType": {
      "AssociationPropertyMetadata": {
        "SystemDiskCategory": "cloud_essd",
        "InstanceChargeType": "PostPaid",
        "ZoneId": "${ZoneId}"
      },
      "Default": null,
      "Required": true,
      "Label": {
        "zh-cn": "Jenis Instans",
        "en": "Instance Type"
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "Type": "String"
    }
  },
  "Outputs": {
    "EcsLoginAddress": {
      "Description": {
        "zh-cn": "Alamat logon untuk instans ECS.",
        "en": "Alamat logon ECS."
      },
      "Value": {
        "Fn::Sub": "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=${ALIYUN::Region}&instanceId=${EcsInstance}"
      }
    },
    "ExperienceAddress": {
      "Description": {
        "zh-cn": "Alamat pengalaman.",
        "en": "Alamat pengalaman."
      },
      "Value": {
        "Fn::Sub": [
          "http://${PublicIp}/wanx-demo",
          {
            "PublicIp": {
              "Fn::Select": [
                0,
                {
                  "Fn::GetAtt": [
                    "EcsInstance",
                    "PublicIps"
                  ]
                }
              ]
            }
          }
        ]
      }
    }
  },
  "Description": {
    "zh-cn": "Buat Virtual Private Cloud (VPC), instans Elastic Compute Service (ECS), dan bucket Layanan Penyimpanan Objek (OSS). Konfigurasikan grup keamanan dan izin Resource Access Management (RAM). Instal Java dan aplikasi untuk mengimplementasikan layanan teks-ke-gambar dan peningkatan potret.",
    "en": "Buat Virtual Private Cloud (VPC), instans Elastic Compute Service (ECS), bucket Layanan Penyimpanan Objek (OSS), konfigurasikan grup keamanan dan izin Resource Access Management (RAM), instal Java dan aplikasi, serta implementasikan layanan gambar berbasis teks dan peningkatan potret."
  },
  "Conditions": {},
  "Resources": {
    "CustomPolicy": {
      "Type": "ALIYUN::RAM::ManagedPolicy",
      "Properties": {
        "PolicyName": {
          "Fn::Sub": "create_by_solution-${ALIYUN::StackId}"
        },
        "PolicyDocument": {
          "Version": "1",
          "Statement": [
            {
              "Action": [
                "oss:GetObject",
                "oss:PutObject"
              ],
              "Resource": [
                {
                  "Fn::Sub": "acs:oss:oss-${ALIYUN::Region}:${ALIYUN::TenantId}:${BucketName}/*"
                }
              ],
              "Effect": "Allow"
            }
          ]
        }
      }
    },
    "InstallApp": {
      "Type": "ALIYUN::ECS::RunCommand",
      "Properties": {
        "CommandContent": {
          "Fn::Sub": "#!/bin/bash\n\ncat << EOF >> ~/.bash_profile\nexport DASHSCOPE_API_KEY=${DashScopeApiKey}\nexport OSS_ACCESS_KEY_ID=${AccessKey.AccessKeyId}\nexport OSS_ACCESS_KEY_SECRET=${AccessKey.AccessKeySecret}\nexport WANX_DEMO_OSS_BUCKET=${BucketName}\nexport WANX_DEMO_OSS_ENDPOINT=https://oss-${ALIYUN::Region}.aliyuncs.com\nEOF\n\nsource ~/.bash_profile \nwget https://help-static-aliyun-doc.aliyuncs.com/demos/wanx-demo-0.0.1-SNAPSHOT.jar\nnohup java -jar wanx-demo-0.0.1-SNAPSHOT.jar > wanx-demo.log 2>&1 &"
        },
        "Type": "RunShellScript",
        "Sync": true,
        "InstanceIds": [
          {
            "Ref": "EcsInstance"
          }
        ],
        "Timeout": 3600
      },
      "DependsOn": [
        "ModuleInstallJava.Install"
      ]
    },
    "AccessKey": {
      "Type": "ALIYUN::RAM::AccessKey",
      "Properties": {
        "UserName": {
          "Ref": "User"
        }
      }
    },
    "Bucket": {
      "Type": "ALIYUN::OSS::Bucket",
      "Properties": {
        "BucketName": {
          "Ref": "BucketName"
        },
        "DeletionForce": true
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "SecurityGroupIngress": [
          {
            "PortRange": "80/80",
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ],
        "VpcId": {
          "Ref": "Vpc"
        },
        "SecurityGroupName": {
          "Fn::Sub": "${CommonName}-sg"
        }
      }
    },
    "ModuleInstallJava.Install": {
      "Type": "ALIYUN::OOS::Execution",
      "Properties": {
        "SafetyCheck": "Skip",
        "Parameters": {
          "action": "install",
          "packageName": "ACS-Extension-java-1853370294850618",
          "regionId": {
            "Ref": "ALIYUN::Region"
          },
          "targets": {
            "ResourceIds": [
              {
                "Ref": "EcsInstance"
              }
            ],
            "RegionId": {
              "Ref": "ALIYUN::Region"
            },
            "Type": "ResourceIds"
          },
          "parameters": null
        },
        "TemplateName": "ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL"
      },
      "Metadata": {
        "ALIYUN::ROS::Module": {
          "LogicalIdHierarchy": "ModuleInstallJava",
          "TypeHierarchy": "MODULE::ACS::OOS::Extension"
        }
      }
    },
    "User": {
      "Type": "ALIYUN::RAM::User",
      "Properties": {
        "UserName": {
          "Fn::Sub": "create_by_solution-${ALIYUN::StackId}"
        },
        "PolicyAttachments": {
          "Custom": [
            {
              "Ref": "CustomPolicy"
            }
          ]
        }
      }
    },
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": {
          "Fn::Sub": "${CommonName}-vpc"
        },
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": {
          "Fn::Sub": "${CommonName}-vsw"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.0.0/24",
        "ZoneId": {
          "Ref": "ZoneId"
        }
      }
    },
    "EcsInstance": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Properties": {
        "SystemDiskCategory": "cloud_essd",
        "VpcId": {
          "Ref": "Vpc"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "ImageId": "aliyun_3_9_x64_20G_alibase_",
        "InternetMaxBandwidthOut": 5,
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "Password": {
          "Ref": "InstancePassword"
        },
        "InstanceName": {
          "Fn::Sub": "${CommonName}-ecs"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "ZoneId": {
          "Ref": "ZoneId"
        },
        "MaxAmount": 1
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "DashScopeApiKey",
            "BucketName",
            "ZoneId",
            "InstanceType",
            "InstancePassword"
          ]
        }
      ],
      "Hidden": [
        "CommonName"
      ]
    }
  }
}<br/><br/>

Untuk informasi selengkapnya, lihat Templat publik yang berisi resource ini.