日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

保留策略(WORM)

OSS保留策略具有WORM(Write Once Read Many)特性,滿足用戶以不可刪除、不可篡改方式保存和使用數(shù)據(jù)。如果您希望指定時(shí)間內(nèi)任何用戶(包括資源擁有者)均不能修改和刪除OSS某個(gè)Bucket中的Object,您可以選擇為Bucket配置保留策略。在保留策略指定的Object保留時(shí)間到期之前,僅支持在Bucket中上傳和讀取Object。Object保留時(shí)間到期后,才可以修改或刪除Object。

前提條件

  • 華東1(杭州)、華東2(上海)、華東6(福州-本地地域)、華北1(青島)、華北2(北京)、華北 3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、中國香港、美國(硅谷)、日本(東京)、韓國(首爾)、新加坡、澳大利亞(悉尼)關(guān)停中、馬來西亞(吉隆坡)、印度尼西亞(雅加達(dá))、菲律賓(馬尼拉)、泰國(曼谷)、德國(法蘭克福)、英國(倫敦)、阿聯(lián)酋(迪拜)地域支持設(shè)置保留策略。

  • 確保需要設(shè)置保留策略的Bucket未開啟版本控制。關(guān)于版本控制的更多信息,請參見版本控制介紹

使用場景

OSS保留策略支持的WORM特性符合美國證券交易委員會(huì)(SEC)和金融業(yè)監(jiān)管局(FINRA)的合規(guī)要求。適用于金融、保險(xiǎn)、醫(yī)療、證券、日志數(shù)據(jù)等保審查等場景。

說明

OSS是目前已通過Cohasset Associates審計(jì)認(rèn)證的云服務(wù),可滿足嚴(yán)格的電子記錄保留要求,例如SEC Rule 17a-4(f)、FINRA 4511、CFTC 1.31等合規(guī)要求。更多信息,請參見OSS Cohasset Assessment Report

注意事項(xiàng)

  • 目前僅支持針對Bucket級(jí)別設(shè)置保留策略。

  • 同一個(gè)Bucket中,不建議同時(shí)開通OSS-HDFS服務(wù)并設(shè)置保留策略。

    如果Bucket開通了OSS-HDFS服務(wù)并設(shè)置了保留策略,會(huì)導(dǎo)致通過OSS-HDFS提供的方式刪除.dlsdata/目錄下的數(shù)據(jù)時(shí)提示刪除成功,但在保留策略有效期內(nèi)OSS仍將保留該目錄下被刪除的數(shù)據(jù),且在保留策略失效后也無法識(shí)別并刪除.dlsdata/目錄下相關(guān)的數(shù)據(jù)。

  • Bucket內(nèi)的Object在保留策略生效期間,可通過設(shè)置生命周期規(guī)則進(jìn)行存儲(chǔ)類型轉(zhuǎn)化,在保證合規(guī)性的前提下,降低存儲(chǔ)成本。

規(guī)則說明

  • 生效規(guī)則

    當(dāng)基于時(shí)間的保留策略創(chuàng)建后,該策略默認(rèn)處于InProgress狀態(tài),且該狀態(tài)的有效期為24小時(shí)。在有效期24小時(shí)內(nèi),此策略對應(yīng)的Bucket資源處于保護(hù)狀態(tài)。

    • 啟動(dòng)保留策略24小時(shí)內(nèi)

      • 如果24小時(shí)內(nèi)未提交鎖定保留策略,則Bucket所有者以及授權(quán)用戶可以刪除該策略。

      • 如果24小時(shí)內(nèi)已提交鎖定保留策略,則不允許刪除該策略,且無法縮短策略保護(hù)周期,僅可以延長保護(hù)周期。

      • 如果24小時(shí)內(nèi)已提交鎖定保留策略,則Bucket內(nèi)的數(shù)據(jù)處于被保護(hù)狀態(tài)時(shí),如果您嘗試刪除或修改這些數(shù)據(jù),OSS將返回409 FileImmutable的錯(cuò)誤信息。

    • 啟動(dòng)保留策略24小時(shí)后

      如果超過24小時(shí)未鎖定該保留策略,則該策略自動(dòng)失效,您可以刪除該策略。

  • 刪除規(guī)則

    • 基于時(shí)間的保留策略是Bucket的一種Metadata屬性。當(dāng)刪除某個(gè)Bucket時(shí),該Bucket對應(yīng)的保留策略也會(huì)被刪除。

    • 啟動(dòng)保留策略24小時(shí)內(nèi),如果該保留策略未提交鎖定,則Bucket所有者以及授權(quán)用戶可以刪除該策略。

    • 如果Bucket內(nèi)有Object處于保護(hù)周期內(nèi),那么您將無法刪除保留策略,同時(shí)也無法刪除Bucket。

  • 規(guī)則示例

    假設(shè)您在2022年06月01日為您賬號(hào)下的某個(gè)Bucket創(chuàng)建了保護(hù)周期為30天的保留策略,且該策略在創(chuàng)建后進(jìn)入鎖定狀態(tài)。您在不同時(shí)間上傳了file1.txt、file2.txt、file3.txt三個(gè)Object。關(guān)于這三個(gè)Object的具體上傳時(shí)間以及對應(yīng)的到期時(shí)間說明如下:

    Object名稱

    上傳時(shí)間

    Object到期時(shí)間

    file1.txt

    2022年04月01日

    2022年04月30日

    file2.txt

    2022年06月01日

    2022年06月30日

    file3.txt

    2022年09月01日

    2022年09月30日

操作步驟

使用OSS控制臺(tái)

  1. 創(chuàng)建保留策略。

    1. 登錄OSS管理控制臺(tái)

    2. 單擊Bucket 列表,然后單擊目標(biāo)Bucket名稱。

    3. 在左側(cè)導(dǎo)航欄,選擇數(shù)據(jù)安全>保留策略

    4. 保留策略頁面,單擊創(chuàng)建策略

    5. 創(chuàng)建策略對話框,指定保留周期

      說明

      保留周期以天為單位,取值范圍為1~25,550。

    6. 單擊確定

      說明

      策略狀態(tài)為待鎖定。該狀態(tài)的有效期為24小時(shí)。在有效期24小時(shí)內(nèi),該策略對應(yīng)的Bucket資源處于保護(hù)狀態(tài)。如果您不希望保留該策略,您可以在有效期24小時(shí)內(nèi)刪除策略。

  2. 鎖定保留策略。

    1. 單擊鎖定

    2. 在彈出的對話框,單擊確定

      重要

      基于時(shí)間的保留策略被鎖定后,您將無法鎖定保留周期或者刪除保留策略,且在保留周期內(nèi)無法修改或刪除Bucket中的數(shù)據(jù)。

  3. (可選)修改保留周期。

    1. 單擊編輯

    2. 在彈出的對話框,修改保留周期。

      重要

      您可以延長保留周期,但無法縮短保留周期。

使用阿里云SDK

以下僅列舉常見SDK的設(shè)置保留策略的代碼示例。關(guān)于其他SDK的設(shè)置保留策略代碼示例,請參見SDK簡介

Java

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.InitiateBucketWormRequest;
import com.aliyun.oss.model.InitiateBucketWormResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以華東1(杭州)為例,其它Region請按實(shí)際情況填寫。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填寫B(tài)ucket名稱,例如examplebucket。
        String bucketName = "examplebucket";

        // 創(chuàng)建OSSClient實(shí)例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 創(chuàng)建InitiateBucketWormRequest對象。
            InitiateBucketWormRequest initiateBucketWormRequest = new InitiateBucketWormRequest(bucketName);
            // 指定Object保護(hù)天數(shù)為1天。
            initiateBucketWormRequest.setRetentionPeriodInDays(1);

            // 創(chuàng)建保留策略。
            InitiateBucketWormResult initiateBucketWormResult = ossClient.initiateBucketWorm(initiateBucketWormRequest);

            // 查看保留策略ID。
            String wormId = initiateBucketWormResult.getWormId();
            System.out.println(wormId);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 
$provider = new EnvironmentVariableCredentialsProvider();
// Endpoint以杭州為例,其它Region請按實(shí)際情況填寫。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket= "<yourBucketName>";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
    );
    $ossClient = new OssClient($config);

try {
    // 創(chuàng)建保留策略,指定Object保護(hù)天數(shù)為30天。
    $wormId = $ossClient->initiateBucketWorm($bucket, 30);

    // 查看保留策略ID。
    print($wormId);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n"); 

Node.js

const OSS = require('ali-oss');

const client = new OSS({
  // yourregion填寫B(tài)ucket所在地域。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,  
});
// 創(chuàng)建保留策略。
async function initiateBucketWorm() {
 // yourbucketname填寫存儲(chǔ)空間名稱。
  const bucket = 'yourbucketname'
  // 指定Object保護(hù)天數(shù)。
  const days = '<Retention Days>'
    const res = await client.initiateBucketWorm(bucket, days)
  console.log(res.wormId)
}

initiateBucketWorm()

Python

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# yourBucketName填寫存儲(chǔ)空間名稱。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')

# 新建保留策略,并指定Object保護(hù)天數(shù)為1天。
result = bucket.init_bucket_worm(1)
# 查看保留策略ID。
print(result.worm_id)

Go

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Error creating credentials provider: %v", err)
	}

	// 創(chuàng)建OSSClient實(shí)例。
	// yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		log.Fatalf("Error creating OSS client: %v", err)
	}

	// 填寫待配置合規(guī)保留策略的Bucket名稱。
	bucketName := "<yourBucketName>"

	// 指定Object保護(hù)天數(shù)為60天。
	result, err := client.InitiateBucketWorm(bucketName, 60)
	if err != nil {
		log.Fatalf("Error initiating bucket WORM: %v", err)
	}

	log.Println("WORM policy initiated successfully:", result)
}

C++

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* 初始化OSS賬號(hào)信息。*/
            
    /* yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    /* 填寫B(tài)ucket名稱,例如examplebucket。*/
    std::string BucketName = "examplebucket";

      /* 初始化網(wǎng)絡(luò)等資源。*/
      InitializeSdk();

      ClientConfiguration conf;
      /* 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
  
      /* 創(chuàng)建保留策略,指定Object保護(hù)天數(shù)為10天。*/
      auto outcome = client.InitiateBucketWorm(InitiateBucketWormRequest(BucketName, 10));

      if (outcome.isSuccess()) {      
            std::cout << " InitiateBucketWorm success " << std::endl;
            std::cout << "WormId:" << outcome.result().WormId() << std::endl;
      }
      else {
        /* 異常處理。*/
        std::cout << "InitiateBucketWorm fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
      }

      /* 釋放網(wǎng)絡(luò)等資源。*/
      ShutdownSdk();
      return 0;
}

使用命令行工具ossutil

關(guān)于使用ossutil設(shè)置保留策略的具體步驟,請參見worm(保留策略)

使用REST API

如果您的程序自定義要求較高,您可以直接發(fā)起REST API請求。直接發(fā)起REST API請求需要手動(dòng)編寫代碼計(jì)算簽名。更多信息,請參見InitiateBucketWorm

常見問題

保留策略有哪些優(yōu)勢?

保留策略可提供數(shù)據(jù)合規(guī)存儲(chǔ),數(shù)據(jù)在保留策略保護(hù)周期內(nèi),任何用戶都不能刪除和修改。而通過RAM policy和Bucket Policy保護(hù)的數(shù)據(jù),則存在被修改和刪除可能。

什么情況下需要設(shè)置保留策略?

您需要長期存儲(chǔ)且不允許修改或刪除的重要數(shù)據(jù),如醫(yī)療檔案、技術(shù)文件、合同文書等,可以存放在指定的Bucket內(nèi),并通過開啟保留策略保護(hù)您的重要數(shù)據(jù)。

是否支持取消保留策略?

視保留策略的狀態(tài)而定。

  • 如果保留策略未提交鎖定,則Bucket擁有者以及授權(quán)用戶可以刪除該策略。

  • 如果保留策略已提交鎖定,則任何人均無法刪除該策略。

是否支持針對Object設(shè)置保留策略?

僅支持針對Bucket設(shè)置保留策略,不支持針對目錄以及單個(gè)對象設(shè)置保留策略。

如何計(jì)算Object的保留時(shí)間

您可以結(jié)合Bucket內(nèi)Object的最后修改時(shí)間以及保留策略設(shè)置的保留周期計(jì)算出Object的保留時(shí)間。例如,Bucket A設(shè)置了保留時(shí)間為10天的保留策略,Object的最后修改時(shí)間為2022年02月15日,則該Object的保留時(shí)間為2022年02月25日。

如何刪除已開啟保留策略的Bucket ?

  • 如果該Bucket內(nèi)未存儲(chǔ)Object,可以直接刪除該Bucket。

  • 如果該Bucket內(nèi)已存儲(chǔ)Object,且所有Object均已過了保護(hù)期,刪除該Bucket會(huì)提示失敗。此時(shí),您可以先刪除該Bucket內(nèi)所有Object,再刪除Bucket。

  • 如果該Bucket內(nèi)已存儲(chǔ)Object,且還有Object處于保護(hù)期內(nèi),無法刪除該Bucket。

如果OSS欠費(fèi),但仍有Object處于保留策略的保護(hù)期內(nèi),這些Object會(huì)被保留么?

在未付款的情況下,阿里云會(huì)根據(jù)您簽署的合同條款和條件,應(yīng)用對應(yīng)的數(shù)據(jù)保留策略。

授權(quán)的RAM用戶是否可以設(shè)置保留策略?

保留策略相關(guān)API接口已全部對外開放,并且相關(guān)API操作已支持接入RAM policy。通過RAM Policy授權(quán)的RAM用戶可以通過控制臺(tái)、API、SDK等方式創(chuàng)建、刪除保留策略。