すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:ACS-OSS-PutBucketReferer

最終更新日:Dec 21, 2025

テンプレート名

ACS-OSS-PutBucketReferer は、バケットのホットリンク保護を設定します。

今すぐ実行

テンプレートの説明

Object Storage Service (OSS) バケットのホットリンク保護を設定します。

テンプレートタイプ

自動化

所有者

Alibaba Cloud

入力パラメーター

パラメーター

説明

データ型

必須

デフォルト値

制限

bucketName

Object Storage Service (OSS) バケットの名前。

String

はい

regionId

リージョン ID。

String

いいえ

{{ ACS::RegionId }}

allowEmptyReferer

空の Referer ヘッダーを持つリクエストを許可するかどうかを指定します。

String

いいえ

true

refererList

正当な参照元として記録される URL のホワイトリスト。

List

いいえ

[]

OOSAssumeRole

CloudOps Orchestration Service (OOS) によって引き受けられる RAM ロール。

String

いいえ

""

出力パラメーター

パラメーター

説明

データ型

refererInfo

Json

テンプレートを実行するために必要な権限ポリシー

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetBucketReferer",
                "oss:PutBucketReferer"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

詳細

ACS-OSS-PutBucketReferer

テンプレートコンテンツ

FormatVersion: OOS-2019-06-01
Description:
  en: バケットのホットリンク保護を設定します。
  name-en: ACS-OSS-PutBucketReferer
  categories:
    - security
Parameters:
  regionId:
    Type: String
    Label:
      en: リージョン ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  bucketName:
    Label:
      en: バケット名
    Type: String
  allowEmptyReferer:
    Label:
      en: 空の Referer を許可
    Description:
      en: Referer フィールドが空のリクエストへのアクセスを許可するかどうかを指定します
    Type: String
    Default: 'true'
    AllowedValues:
      - 'true'
      - 'false'
  refererList:
    Description:
      en: '例:[http://www.aliyun.com, https://www.aliyun.com]'
    Label:
      en: Referer ホワイトリスト URL
    Type: List
    Default: []
  OOSAssumeRole:
    Label:
      en: OOS が引き受けるロール
    Type: String
    Default: ''
RamRole: '{{ OOSAssumeRole }}'
Conditions:
  Empty:
    'Fn::Equals':
      - '{{ refererList }}'
      - []
Tasks:
  - Name: convertXmlParameters
    Action: 'ACS::ECS::SMCConversionConstantByJqScript'
    Description:
      en: バケットのホットリンク保護ルールを自動的に生成します。
    Properties:
      parameter: '{{ refererList }}'
      jqScript:
        - '. [] | split("[") | join("") | split("]") | join("") | split("\"") | join("") |split(",") | map(. | .="<referer>"+.+"</referer>") as $item| $item | join("") as $itemList | "<refererconfiguration><allowemptyreferer>{{ allowEmptyReferer }}</allowemptyreferer><refererlist>"+$itemList+"</refererlist>" as $refererList |$refererList'
        - .
    Outputs:
      xmlValues:
        Type: String
        ValueSelector: firstValue
  - Name: putBucketReferer
    Action: 'ACS::ExecuteAPI'
    Description:
      en: バケットのホットリンク保護を有効にします。
    Properties:
      Service: OSS
      API: PutBucketReferer
      Method: PUT
      URI: '?referer'
      Headers:
        Content-MD5: ""
        Content-Type: application/xml
      Parameters:
        BucketName: '{{ bucketName }}'
        RegionId: '{{ regionId }}'
      Body: '<?xml version="1.0" encoding="UTF-8"?>{{ convertXmlParameters.xmlValues }}</refererconfiguration>'
  - Name: waitBucketRefererNoRefererList
    Action: 'ACS::WaitFor'
    Description:
      en: 空の Referer ヘッダーが許可されている場合に、ホットリンク保護設定が更新されるのを待ちます。
    When: Empty
    OnSuccess: 'ACS::END'
    Properties:
      Service: OSS
      API: GetBucketReferer
      Method: GET
      URI: '?referer'
      Headers: {}
      Parameters:
        BucketName: '{{ bucketName }}'
        RegionId: '{{ regionId }}'
      DesiredValues:
        - '{{ allowEmptyReferer }}'
      PropertySelector: '.RefererConfiguration.AllowEmptyReferer'
  - Name: waitBucketReferer
    Action: 'ACS::WaitFor'
    Description:
      en: ホットリンク保護設定が更新されるのを待ちます。
    Properties:
      Service: OSS
      API: GetBucketReferer
      Method: GET
      URI: '?referer'
      Headers: {}
      Parameters:
        BucketName: '{{ bucketName }}'
        RegionId: '{{ regionId }}'
      NotDesiredValues: '{{ refererList }}'
      PropertySelector: '.RefererConfiguration.RefererList.Referer-{{ refererList }}'
Outputs:
  refererInfo:
    Type: Json
    Value:
      bucketName: '{{ bucketName }}'
      allowEmptyReferer: '{{ allowEmptyReferer }}'
      refererList: '{{ refererList }}'