Object Storage Service (OSS) は、ゾーン冗長ストレージ (ZRS) をサポートしています。 ZRSは、同じリージョンの複数のゾーンにデータの複数のコピーを保存します。 ゾーンが使用できなくなっても、データにアクセスできます。 ZRSは99.9999999999% (12ナイン) のデータ耐久性を提供します。 このトピックでは、ZRSバケットを作成する方法について説明します。
シナリオ
ZRSは、データセンターレベルでディザスタリカバリを提供します。 ネットワークの切断、停電、またはその他の災害によりデータセンターが利用できなくなった場合でも、OSSは強力な一貫性を維持します。 このようにして、サービスは中断されず、データはフェイルオーバー中に失われません。 これは、回復時間目標 (RTO) と回復ポイント目標 (RPO) がゼロでなければならない主要なビジネスシステムの厳しい要件を満たすのにも役立ちます。
使用上の注意
ZSRは、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (ウランカブ) 、中国 (深セン) 、中国 (香港) 、日本 (東京) 、シンガポール、インドネシア (ジャカルタ) 、ドイツ (フランクフルト) でサポートされています。
ZRSの単価はLRSの単価よりも高い。詳細については、 OSS料金ページ
ZRSは、有効になった後は無効にできません。
サポートされるストレージクラス
ZRSは、標準、低頻度アクセス (IA) 、およびアーカイブのストレージクラスをサポートしています。 次の表に、ストレージクラスの違いを示します。
項目 | 標準 | IA | アーカイブ |
設計されたデータ耐久性 | 99.9999999999% (9 が 12 個) | 99.9999999999% (9 が 12 個) | 99.9999999999% (9 が 12 個) |
サービス可用性 | 99.995% | 99.50% | 99.50% |
最小請求可能オブジェクトサイズ | N/A | 64 KB | 64 KB |
最小保存期間 | N/A | 30 日 | 60 日 |
データ取得料金 | N/A | 取得したデータのサイズ (GB) に基づく | 復元されたデータまたは取得されたデータのサイズ (GB) に基づくリアルタイムアクセス用のアーカイブデータ |
データアクセス | レイテンシがミリ秒のリアルタイムアクセス | レイテンシがミリ秒のリアルタイムアクセス | アーカイブオブジェクトのリアルタイムアクセスが有効になっていない場合は、1分間の復元処理が必要です。 |
画像処理 | 対応 | 対応 | 対応 |
手順
OSSコンソールの使用
OSS SDKの使用
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用してバケットを作成するときにZRSを有効にする方法の例を示しています。 バケットの作成時に他のプログラミング言語でOSS SDKを使用してZRSを有効にする方法については、「概要」をご参照ください。
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;
public classデモ {
public static void main(String[] args) throws Exception {
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
String endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。
String bucketName = "examplebucket";
// リソースグループのIDを指定します。 リソースグループIDを指定しない場合、バケットはデフォルトリソースグループに属します。
// 文字列rsId = "rg-aek27tc ****";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// バケットを作成し、バケットの階層名前空間機能を有効にします。
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName).withHnsStatus(HnsStatus.Enabled);
// 次のコードは、バケットの作成時にストレージクラス、アクセス制御リスト (ACL) 、および冗長タイプを指定する方法の例を示しています。
// この例では、バケットのストレージクラスはStandardです。
createBucketRequest.setStorageClass(StorageClass.Standard);
// バケットのデフォルトの冗長タイプはDataRedundancyType.LRSです。
createBucketRequest.setDataRedundancyType(DataRedundancyType.LRS);
// バケットのACLをpublic-readに設定します。 デフォルトのACLはprivateです。
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// リソースグループをサポートするリージョンでバケットを作成する場合、バケットのリソースグループを設定できます。
// createBucketRequest.setResourceGroupId(rsId);
ossClient.createBucket(createBucketRequest);
// Create a bucket.
ossClient.createBucket(createBucketRequest);
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
<?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';
}
OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
$end point = "http://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 例: examplebucket.
$bucket= "examplebucket";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// バケットのストレージクラスを低頻度アクセス (IA) に設定します。 The default storage class is Standard.
$options = array(
OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA
);
// バケットのACLをpublic-readに設定します。 デフォルトのバケットACLはprivateです。
$ossClient->createBucket($bucket、OssClient::OSS_ACL_TYPE_PUBLIC_READ、$options);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage()) 。 "\n");
戻ります。}
print(__FUNCTION__) 。 ": OK" 。 "\n");
const OSS = require('ali-OSS ');
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
region: 'yourregion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET
});
// バケットを作成します。
async関数putBucket() {
try {
const options = {
storageClass: 'Standard', // デフォルトでは、バケットのストレージクラスはStandardです。 バケットのストレージクラスをArchiveに設定するには、storageClassをArchiveに設定します。
acl: 'private', // デフォルトでは、バケットのアクセス制御リスト (ACL) はプライベートです。 バケットのACLをpublic readに設定するには、aclをpublic-readに設定します。
dataRedundancyType: 'LRS' // デフォルトでは、バケットの冗長タイプはローカル冗長ストレージ (LRS) です。 バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定するには、dataRedundancyTypeをZRSに設定します。
}
// バケットの名前を指定します。
const result = await client.putBucket('examplebucket' 、オプション);
console.log (結果);
} catch (err) {
console.log(err);
}
}
putBucket();
# -*- coding: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 このサンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# バケットを作成します。
# 次のサンプルコードは、バケットの作成時にストレージクラス、アクセス制御リスト (ACL) 、および冗長性の種類を指定する方法の例を示しています。
# この例では、ストレージクラスはStandard、ACLはprivate、冗長タイプはZRS (ゾーン冗長ストレージ) です。
# bucketConfig = oss2.models.BucketCreateConfig(oss2.BUCKET_STORAGE_CLASS_STANDARD, oss2.BUCKET_DATA_REDUNDANCY_TYPE_ZRS)
# bucket.create_bucket(oss2.BUCKET_ACL_PRIVATE, bucketConfig)
bucket.create_bucket()
;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。
var bucketName = "examplebucket";
// OssClientインスタンスを初期化します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
// バケットを作成します。
try
{
var request = new CreateBucketRequest(bucketName);
// バケットのアクセス制御リスト (ACL) をPublicReadに設定します。 デフォルト値はprivateです。
request.ACL = CannedAccessControlList.PublicRead;
// バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定します。
request.DataRedundancyType = DataRedundancyType.ZRS;
client.CreateBucket (リクエスト);
Console.WriteLine("Create bucket succeeded");
}
catch (Exception ex)
{
Console.WriteLine("バケットの作成に失敗しました。 {0}"、例えばメッセージ);
}
// バケットを作成するリクエストを作成します。
// バケットの名前を指定します。
CreateBucketRequest createBucketRequest=新しいCreateBucketRequest("examplebucket"); 。
// バケットのアクセス制御リスト (ACL) を指定します。
// createBucketRequest.setBucketACL(CannedAccessControlList.Private);
// バケットのストレージクラスを指定します。
// createBucketRequest.setBucketStorageClass(StorageClass.Standard);
// バケットを非同期に作成します。
OSSAsyncTask createTask = oss.asyncCreateBucket(createBucketRequest, new OSSCompletedCallback<CreateBucketRequest, CreateBucketResult>() {
@オーバーライド
public void onSuccess(CreateBucketRequestリクエスト、CreateBucketResult結果) {
Log.d("asyncCreateBucket" 、"Success");
}
@オーバーライド
public void onFailure(CreateBucketRequest request, ClientException clientException, ServiceException serviceException) {
// リクエスト例外を処理します。
if (clientException != null) {
// ネットワーク例外などのクライアント例外を処理します。
clientException.printStackTrace();
}
if (serviceException != null) {
// サービス例外を処理します。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
パッケージメイン
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// examplebucketという名前のバケットを作成します。 ストレージクラスをIA (oss.StorageIA) 、ACLをpublic-read (oss.ACLPublicRead) 、冗長タイプをZRS (oss.RedundancyZRS) に設定します。
err = client.CreateBucket("examplebucket" 、oss.StorageClass(oss.StorageIA) 、oss.ACL(oss.ACLPublicRead) 、oss.RedundancyType(oss.RedundancyZRS))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
id<OSSCredentialProvider> credentialProvider = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:@ "<StsServer>"];
OSSClientConfiguration * cfg = [[OSSClientConfiguration alloc] init];
cfg.maxRetryCount = 3;
cfg.timeoutIntervalForRequest = 15;
// OSSClientインスタンスがリリースされると、セッション内のすべてのタスクがキャンセルされ、セッションは無効になります。 リクエストが完了する前に、OSSClientインスタンスがリリースされていないことを確認してください。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
OSSClient * client = [[OSSClient alloc] initWithEndpoint:@ "Endpoint" credentialProvider:credentialProvider clientConfiguration:cfg];
OSSReateBucketRequest * create = [OSSReateBucketRequest new];
// バケット名をexamplebucketに設定します。
create.bucketName = @ "examplebucket";
// バケットのアクセス制御リスト (ACL) をprivateに設定します。
. xOssACL = @ "private" を作成します。// バケットのストレージクラスを低頻度アクセス (IA) に設定します。
create.storageClass = OSSBucketStorageClassIA;
OSSTask * createTask = [client createBucket:create];
[createTask continueWithBlock:^ id(OSSTask * task) {
if (!task.error) {
NSLog(@ "create bucket success!");
} else {
NSLog(@ "create bucket failed, error: % @", task.error);
}
nilを返します。}];
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* バケットの名前、ストレージクラス、およびアクセス制御リスト (ACL) を指定します。 */
CreateBucketRequestリクエスト (BucketName、StorageClass::IA、CannedAccessControlList::PublicReadWrite);
/* バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定します。 */
// request.setDataRedundancyType(DataRedundancyType::ZRS);
/* バケットを作成します。 */
auto outcome = client.CreateBucket (リクエスト);
if (!outcome.isSuccess()) {
/* 例外を処理します。 */
std::cout << "CreateBucket fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースなどのリソースをリリースします。 */
ShutdownSdk();
0を返します。}
#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. * /
const char * bucket_name = "examplebucket";
void init_options(oss_request_options_t * オプション)
{
options->config = oss_config_create(options->pool);
/* char * stringを使用して、aos_string_t型のデータを初期化します。 */
aos_str_set(&options->config->endpoint, endpoint);
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
/* CNAMEを使用してOSSにアクセスするかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを設定します。 */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char * argv[])
{
/* main() でaos_http_io_initializeメソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
exit(1);
}
/* メモリを管理するためのメモリプールを作成します。 aos_pool_tはapr_pool_tと同じです。 メモリプールの作成に使用されるコードは、APRライブラリに含まれています。 */
aos_pool_t *pool;
/* メモリプールを作成します。 2番目のパラメーターの値はNULLです。 この値は、プールが他のメモリプールを継承しないことを指定します。 */
aos_pool_create(&pool, NULL);
/* Create and initialize options. このパラメーターには、エンドポイント、access_key_id、access_key_secret、is_cname、curlなどのグローバル構成情報が含まれます。 */
oss_request_options_t *oss_client_options;
/* メモリプール内のメモリリソースをオプションに割り当てます。 */
oss_client_options = oss_request_options_create(pool);
/* oss_client_optionsを初期化します。 */
init_options(oss_client_options);
/* パラメーターを初期化します。 */
aos_string_t bucket;
oss_acl_e oss_acl = OSS_ACL_PRIVATE;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
/* char * dataをaos_string_t型のバケットに割り当てます。 */
aos_str_set(&bucket, bucket_name);
/* バケットを作成します。 */
resp_status = oss_create_bucket(oss_client_options, &bucket, oss_acl, &resp_headers);
/* バケットが作成されたかどうかを確認します。 */
if (aos_status_is_ok(resp_status)) {
printf("create bucket succeeded\n");
} else {
printf("create bucket failed\n");
}
/* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。 */
aos_http_io_deinitialize();
0を返します。}
'aliyun/oss' が必要です
client = Aliyun::OSS::Client.new (
# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
エンドポイント: 'https:// oss-cn-hangzhou.aliyuncs.com '、
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
access_key_id: ENV['OSS_ACCESS_KEY_ID '] 、
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET ']
)
# バケットの名前を指定します。 例: examplebucket.
client.create_bucket('examplebucket')
ossutilの使用
ossutilを使用してZRSバケットを作成できます。 詳細については、「mb (バケットの作成) 」をご参照ください。
OSS APIの使用
ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucket」をご参照ください。