バケットは、Object Storage Service (OSS) でオブジェクトを格納するための主要なコンテナです。容量は無制限で、弾力的にスケールします。
基本設定
バケットのコア設定は、作成後に変更できません。
バケット名:グローバルで一意である必要があります。部門やビジネスを反映した名前を使用すると、識別と管理が容易になるため推奨されます。例:
hr-documents。リージョン:データの物理的な保存場所を指定します。以下の優先順位に基づいてリージョンを選択することを推奨します:
コンプライアンス:規制要件を満たすリージョンを選択します。
パフォーマンス:ネットワーク遅延を削減するために、エンドユーザーに最も近いリージョンを選択します。ご利用のデータが Elastic Compute Service (ECS) などの Alibaba Cloud プロダクトからアクセスされる場合は、同じリージョンを選択することを推奨します。これにより、無料の内部ネットワークを利用でき、クロスリージョンでの遅延も削減できます。
機能サポート:リリースノートをご参照いただき、必要な機能がそのリージョンでサポートされているかを確認してください。
コスト:上記の要件を満たした上で、よりのリージョンを選択してください。
説明中国 (張家口) リージョンでは、新しいバケットを作成できません。このリージョンに既存のバケットは、引き続き完全に機能します。このリージョンのリソースプランをお持ちの場合、既存のバケットのコストを相殺するために引き続き使用できます。
バケット名とリージョンのみを指定してバケットを作成した場合、OSS は自動的に次のデフォルト設定を適用します:標準ストレージクラス、ゾーン冗長ストレージ (ZRS)、非公開アクセス制御リスト、および公開アクセス禁止の有効化。
コンソール
OSS コンソールの バケット ページで、バケットの作成 をクリックします。
バケットの作成 パネルで、バケット名 と [リージョン] を設定し、下部にある OK をクリックします。
ossutil
コマンドラインツールである ossutil を使用してバケットを作成できます。インストール手順については、「ossutil のインストール」をご参照ください。
バケットのリージョンを設定します。
ossutil configEnter キーを押して以前の設定をスキップし、リージョンのプロンプトが表示されるまで進みます:
Please enter Region [cn-hangzhou]:ターゲットリージョン ID (例:
cn-beijing) を入力して Enter キーを押すか、直接 Enter キーを押してデフォルトのリージョンcn-hangzhouを使用します。リージョン ID のリストについては、「OSS リージョンリスト」をご参照ください。examplebucketという名前のバケットを作成します。ossutil mb oss://examplebucketバケットが正常に作成されたことを確認します。
ossutil ls
このコマンドの詳細については、「mb (バケットの作成)」をご参照ください。
SDK
以下のコードサンプルは、一般的な SDK を使用してバケットを作成する方法を示しています。他の SDK を使用したサンプルについては、「SDK の概要」をご参照ください。
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
public class Demo {
public static void main(String[] args) throws Exception {
// バケットが配置されているリージョンのエンドポイントに yourEndpoint を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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 を指定しない場合、バケットはデフォルトのリソースグループに追加されます。
//String rsId = "rg-aek27tc****";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// OSSClient インスタンスを作成します。
// OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// バケットを作成し、階層型名前空間機能を有効にします。
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName).withHnsStatus(HnsStatus.Enabled);
// バケット作成時にストレージクラス、ACL、データ冗長タイプを指定したい場合は、以下のコードを参照してください。
// 以下のコードは、ストレージクラスを標準に設定する例です。
createBucketRequest.setStorageClass(StorageClass.Standard);
// デフォルトのデータ冗長タイプは LRS で、DataRedundancyType.LRS として指定されます。データ冗長タイプを ZRS に設定したい場合は、値を DataRedundancyType.ZRS に設定します。
createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS);
// バケットの ACL を公開読み取りに設定します。デフォルトの ACL は非公開です。
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// リソースグループをサポートするリージョンでバケットを作成する場合、バケットをリソースグループに割り当てることができます。
//createBucketRequest.setResourceGroupId(rsId);
// バケットを作成します。
ossClient.createBucket(createBucketRequest);
} 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();
}
}
}
}import argparse
import alibabacloud_oss_v2 as oss
# コマンドライン引数パーサーを作成します。
parser = argparse.ArgumentParser(description="put bucket sample")
# バケットが配置されているリージョンを指定する必須のコマンドラインパラメーター --region を指定します。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# バケットの名前を指定する必須のコマンドラインパラメーター --bucket を指定します。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# 他のサービスが OSS にアクセスするために使用できるエンドポイントを指定するオプションのコマンドラインパラメーター --endpoint を指定します。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
args = parser.parse_args() # コマンドラインパラメーターを解析します。
# 認証のために環境変数からアクセス認証情報をロードします。
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# SDK のデフォルト設定をロードし、認証情報プロバイダーを指定します。
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# バケットが配置されているリージョンを指定します。
cfg.region = args.region
# endpoint パラメーターが提供されている場合、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# 設定を使用して OSSClient インスタンスを作成します。
client = oss.Client(cfg)
# バケットを作成し、そのストレージクラスを標準に設定するリクエストを実行します。
result = client.put_bucket(oss.PutBucketRequest(
bucket=args.bucket,
create_bucket_configuration=oss.CreateBucketConfiguration(
storage_class='Standard'
)
))
# 応答の HTTP ステータスコードと、リクエストが成功したかどうかを確認するために使用されるリクエスト ID を出力します。
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
)
if __name__ == "__main__":
main() # スクリプトのエントリポイント。ファイルが直接実行されると main 関数が呼び出されます。package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// グローバル変数を指定します。
var (
region string // リージョン。
bucketName string // バケット名。
)
// コマンドラインパラメーターを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}
func main() {
// コマンドラインパラメーターを解析します。
flag.Parse()
// バケット名が空かどうかを確認します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// リージョンが空かどうかを確認します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// デフォルト設定をロードし、認証情報プロバイダーとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成します。
client := oss.NewClient(cfg)
request := &oss.PutBucketRequest{
Bucket: oss.Ptr(bucketName), // バケット名。
}
// バケットを作成するリクエストを送信します。
result, err := client.PutBucket(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put bucket %v", err)
}
// バケット作成の結果を表示します。
log.Printf("put bucket result:%#v\n", result)
}
<?php
// オブジェクトと依存ライブラリを自動的にロードします。
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// コマンドラインパラメーターを指定します。
$optsdesc = [
"region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // region パラメーターは必須です。例:oss-cn-hangzhou。
"endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // endpoint パラメーターはオプションです。
"bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケット名は必須です。
];
// コマンドラインパラメーターを解析するためのロングオプションのリストを生成します。
$longopts = \array_map(function ($key) {
return "$key:"; // 各パラメーターの後のコロン (:) は、そのパラメーターが必須であることを示します。
}, array_keys($optsdesc));
// コマンドラインパラメーターを解析します。
$options = getopt("", $longopts);
// 必須パラメーターが設定されているか確認します。
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: the following arguments are required: --$key, $help"; // 必須パラメーターが設定されていないことを指定します。
exit(1);
}
}
// コマンドラインパラメーターの値を取得します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケット名。
// 環境変数から認証情報 (AccessKeyId と AccessKeySecret) をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// SDK のデフォルト設定を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 認証情報プロバイダーを指定します。
$cfg->setRegion($region); // リージョンを指定します。
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合は、それを指定します。
}
// OSSClient インスタンスを作成します。
$client = new Oss\Client($cfg);
// バケット作成を開始するリクエストを作成します。
$request = new Oss\Models\PutBucketRequest($bucket);
// putBucket メソッドを呼び出します。
$result = $client->putBucket($request);
// 結果を出力します。
printf(
'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。
'request id:' . $result->requestId // リクエストの一意の ID。
);
using Aliyun.OSS;
using Aliyun.OSS.Common;
// バケットが配置されているリージョンのエンドポイントに yourEndpoint を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
// ClientConfiguration インスタンスを作成し、必要に応じてデフォルトパラメーターを変更します。
var conf = new ClientConfiguration();
// 署名バージョン V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;
// OssClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
// バケットを作成します。
try
{
var request = new CreateBucketRequest(bucketName);
// アクセス制御リスト (ACL) を公開読み取りに設定します。デフォルトの ACL は非公開です。
request.ACL = CannedAccessControlList.PublicRead;
// データ冗長タイプをゾーン冗長ストレージに設定します。
request.DataRedundancyType = DataRedundancyType.ZRS;
client.CreateBucket(request);
Console.WriteLine("Create bucket succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Create bucket failed. {0}", ex.Message);
}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,
authorizationV4: true,
// バケット名を指定します。
bucket: 'yourBucketName',
});
// バケットを作成します。
async function putBucket() {
try {
const options = {
storageClass: 'Standard', // デフォルトでは、バケットのストレージクラスは標準です。バケットのストレージクラスをアーカイブに設定するには、storageClass を Archive に設定します。
acl: 'private', // デフォルトでは、バケットのアクセス制御リスト (ACL) は非公開です。バケットの ACL を公開読み取りに設定するには、acl を public-read に設定します。
dataRedundancyType: 'LRS' // デフォルトでは、バケットの冗長タイプはローカル冗長ストレージ (LRS) です。バケットの冗長タイプをゾーン冗長ストレージ (ZRS) に設定するには、dataRedundancyType を ZRS に設定します。
}
// バケット名を指定します。
const result = await client.putBucket('examplebucket', options);
console.log(result);
} catch (err) {
console.log(err);
}
}
putBucket(); require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# 次の例では、中国 (杭州) リージョンのエンドポイントを使用します。エンドポイントを実際のものに置き換えてください。
endpoint: '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')// バケットを作成するリクエストを構築します。
// バケット名を指定します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("examplebucket");
// バケットのアクセス制御リスト (ACL) を指定します。
// createBucketRequest.setBucketACL(CannedAccessControlList.Private);
// バケットのストレージクラスを指定します。
// createBucketRequest.setBucketStorageClass(StorageClass.Standard);
// バケットを非同期で作成します。
OSSAsyncTask createTask = oss.asyncCreateBucket(createBucketRequest, new OSSCompletedCallback<CreateBucketRequest, CreateBucketResult>() {
@Override
public void onSuccess(CreateBucketRequest request, CreateBucketResult result) {
Log.d("asyncCreateBucket", "Success");
}
@Override
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());
}
}
});#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* OSS アカウント情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントに yourEndpoint を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットが配置されているリージョンに yourRegion を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
std::string Region = "yourRegion";
/* バケット名を指定します。例:examplebucket。 */
std::string BucketName = "examplebucket";
/* ネットワークリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* 新しいバケットの名前、ストレージクラス、ACL を指定します。 */
CreateBucketRequest request(BucketName, StorageClass::IA, CannedAccessControlList::PublicReadWrite);
/* データ冗長タイプをゾーン冗長ストレージに設定します。 */
request.setDataRedundancyType(DataRedundancyType::ZRS);
/* バケットを作成します。 */
auto outcome = client.CreateBucket(request);
if (!outcome.isSuccess()) {
/* 例外を処理します。 */
std::cout << "CreateBucket fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースを解放します。 */
ShutdownSdk();
return 0;
}// バケットを作成するリクエストを構築します。
OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
// バケット名を examplebucket に設定します。
create.bucketName = @"examplebucket";
// バケットのアクセス制御リスト (ACL) を非公開に設定します。
create.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);
}
return nil;
}];
// 現在のスレッドをブロックして、タスクが完了するのを待ちます。
// [createTask waitUntilFinished]; #include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントに yourEndpoint を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケット名を指定します。例:examplebucket。 */
const char *bucket_name = "examplebucket";
/* バケットが配置されているリージョンに yourRegion を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* aos_string_t 型を char* 文字列で初期化します。 */
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"));
// 以下の 2 つのパラメーターを設定します。
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* CNAME を使用して OSS にアクセスするかどうかを指定します。値 0 は CNAME を使用しないことを示します。 */
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを設定します。 */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* プログラムのエントリポイントで、aos_http_io_initialize メソッドを呼び出して、ネットワークやメモリなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリ管理のためのメモリプールは apr_pool_t と同等です。実装コードは apr ライブラリにあります。 */
aos_pool_t *pool;
/* 新しいメモリプールを作成します。2 番目のパラメーターは NULL で、新しいプールが他のメモリプールから継承しないことを示します。 */
aos_pool_create(&pool, NULL);
/* オプションを作成して初期化します。このパラメーターには、エンドポイント、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* データを 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();
return 0;
}API
PutBucket 操作を呼び出す際、Host リクエストヘッダーでバケット名とリージョンを指定します。
ストレージクラス
OSS は、標準、低頻度アクセス (IA)、アーカイブ、コールドアーカイブ、ディープコールドアーカイブの 5 つのストレージクラスを提供します。デフォルトは標準です。これらのクラスは、ストレージコストが段階的に低くなりますが、アクセス制限が厳しくなるため、アクセス頻度の異なるデータに適しています。
デフォルトでは、オブジェクトはバケットのストレージクラスを継承します。バケットのストレージクラスは作成後に変更できませんが、ライフサイクルルールを使用してオブジェクトのストレージクラスを自動的に移行させ、コストを最適化することができます。
標準
各オブジェクトが月に 1 回以上アクセスされるアクティブなデータに最適です。リアルタイムアクセスを提供します。データアクセスパターンが不明な場合に推奨される選択肢です。後でライフサイクルルールを使用して、オブジェクトをより低コストのストレージクラスに自動的に移行させることができます。
低頻度アクセス (IA):
バックアップやログなど、各オブジェクトが月に 1 回以下アクセスされるウォームデータに適しています。リアルタイムアクセスを提供しますが、最低 30 日間の保存期間があります。30 日間の最低保存期間より前にオブジェクトを削除した場合、最低保存期間分の料金が課金されます。このストレージクラスは、一時的なデータやテストデータには適していません。
アーカイブ:
各オブジェクトが 90 日に 1 回未満アクセスされるコールドデータ向けに設計されています。アーカイブダイレクトリードによるリアルタイムアクセスをサポートするか、読み取り前にオブジェクトを復元することができます (復元には約 1 分かかります)。最低 60 日間の保存期間があります。
復元:アーカイブされたデータを一時的に読み取り可能にするプロセスです。これには待機時間が必要です。
コールドアーカイブ
年に 1 回未満アクセスされるデータ向けです。読み取り前にデータを復元する必要があり、これには 1 時間から 12 時間かかります。より低コストで、最低 180 日間の保存期間があります。
ディープコールドアーカイブ
これは最も低コストのオプションで、年に 1 回未満アクセスされるデータに適しています。復元には 12 時間または 48 時間かかり、最低 180 日間の保存期間があります。これを新しいバケットのデフォルトのストレージクラスとして設定することは推奨しません。代わりに、ライフサイクルルールを使用してデータをこのクラスに自動的に移行させてください。
コンソール
バケットを作成する際、要件に基づいてバケットのストレージクラスを設定します。
ossutil
次のコマンドは、ストレージクラスが低頻度アクセス (IA) の examplebucket という名前のバケットを作成します。
ossutil mb oss://examplebucket --storage-class IAこのコマンドの詳細については、「mb (バケットの作成)」をご参照ください。
OSS SDK
以下のコードサンプルは、一般的な SDK を使用してバケットを作成する方法を示しています。他の SDK を使用したサンプルについては、「SDK の概要」をご参照ください。
Java
ストレージクラスを設定するには、CreateBucketRequest オブジェクトを次のように設定します。
// ストレージクラスを含むリクエストオブジェクトを準備します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setStorageClass(StorageClass.IA); // ここでストレージクラスを指定します。
// オプション:StorageClass.Standard、StorageClass.IA、StorageClass.Archive など。完全な例については、「バケットの作成 (Java SDK V1)」をご参照ください。
Python
client.put_bucket メソッドを呼び出す際、create_bucket_configuration パラメーターを使用してストレージクラスを指定します。
# ストレージクラスを含むリクエストオブジェクトを準備します。
req = oss.PutBucketRequest(
bucket="your-bucket-name",
create_bucket_configuration=oss.CreateBucketConfiguration(
storage_class='IA' # ここでストレージクラスを指定します。
)
)
# オプション:'Standard'、'IA'、'Archive'、'ColdArchive'、'DeepColdArchive'完全な例については、「バケットの作成 (Python SDK V2)」をご参照ください。
Go
ストレージクラスを設定するには、PutBucketRequest を作成する際に CreateBucketConfiguration フィールドを設定します。
request := &oss.PutBucketRequest{
Bucket: oss.Ptr("your-bucket-name"),
CreateBucketConfiguration: &oss.CreateBucketConfiguration{
StorageClass: oss.StorageClassIA, // ここでストレージクラスを指定します。
},
}
// オプション:oss.StorageClassStandard、oss.StorageClassIA、oss.StorageClassArchive など。完全な例については、「バケットの作成 (Go SDK V2)」をご参照ください。
PHP
ストレージクラスを設定するには、PutBucketRequest オブジェクトを作成する際に、コンストラクターに CreateBucketConfiguration オブジェクトを渡します。
// ストレージクラスなどの設定を含むリクエストオブジェクトを準備します。
$request = new Oss\Models\PutBucketRequest(
"your-bucket-name",
null, // acl
null, // resourceGroupId
new Oss\Models\CreateBucketConfiguration(
'IA' // ここでストレージクラスを指定します。
)
);
/*
* オプションのストレージクラス:'Standard'、'IA'、'Archive'、'ColdArchive'、'DeepColdArchive'
*/完全な例については、「バケットの作成 (PHP SDK V2)」をご参照ください。
C#
ストレージクラスを設定するには、CreateBucketRequest オブジェクトを作成し、そのプロパティを次のように設定します。
// ストレージクラス設定を含むリクエストオブジェクトを準備します。
var request = new CreateBucketRequest("your-bucket-name");
request.StorageClass = StorageClass.IA; // ここでストレージクラスを指定します。
// オプションのストレージクラス:StorageClass.Standard、StorageClass.IA、StorageClass.Archive など。完全な例については、「バケットの作成 (C# SDK V1)」をご参照ください。
Node.js
ストレージクラスを設定するには、options オブジェクトを作成し、それを putBucket メソッドに渡します。
// ストレージクラス設定を含む options オブジェクトを準備します。
const options = {
storageClass: 'IA', // ここでストレージクラスを指定します。
};
// オプションのストレージクラス:'Standard'、'IA'、'Archive'、'ColdArchive'、'DeepColdArchive'完全な例については、「バケットの作成 (Node.js SDK)」をご参照ください。
Android
ストレージクラスまたはアクセス制御リストを設定するには、CreateBucketRequest オブジェクトを作成し、次のように設定します。
// ストレージクラスなどの設定を含むリクエストオブジェクトを準備します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setBucketStorageClass(StorageClass.IA); // ここでストレージクラスを指定します。
// オプションのストレージクラス:StorageClass.Standard、StorageClass.IA、StorageClass.Archive など。完全な例については、「バケットの作成 (Android SDK)」をご参照ください。
iOS
ストレージクラスを設定するには、OSSCreateBucketRequest オブジェクトを作成し、そのプロパティを次のように設定します。
// ストレージクラスなどの設定を含むリクエストオブジェクトを準備します。
OSSCreateBucketRequest *create = [OSSCreateBucketRequest new];
create.bucketName = @"your-bucket-name";
create.storageClass = OSSBucketStorageClassIA; // ここでストレージクラスを指定します。
// オプションのストレージクラス:OSSBucketStorageClassStandard、OSSBucketStorageClassIA など。完全な例については、「バケットの作成 (iOS SDK)」をご参照ください。
API
PutBucket を呼び出す際、StorageClass リクエスト要素でバケットのストレージクラスを指定します。
ストレージの冗長タイプ
ストレージの冗長タイプは、データのディザスタリカバリ能力、耐久性、可用性を決定します。デフォルトはゾーン冗長ストレージ (ZRS) です。ローカル冗長ストレージ (LRS) から ZRS にアップグレードすることはできますが、ダウングレードはできません。
ゾーン冗長ストレージ (ZRS) - 本番環境に推奨
データは、同一リージョン内の複数のアベイラビリティゾーン (AZ)にまたがって保存されます。この設計により、アベイラビリティゾーン全体に障害が発生した場合でも事業継続性が確保され、より高いデータ耐久性とサービス可用性が提供されます。
ローカル冗長ストレージ (LRS) - 重要でないデータやテストデータ向け
データは単一のアベイラビリティゾーン内で冗長的に保存され、コストが低くなります。これによりハードウェア障害からは保護されますが、アベイラビリティゾーン全体が利用できなくなった場合のデータアクセスは保証できません。
コンソール
バケットを作成する際、バケットのストレージの冗長タイプを選択できます。
ossutil
次のコマンドは、ストレージの冗長タイプがローカル冗長ストレージ (LRS) のバケット examplebucket を作成します。
ossutil mb oss://examplebucket --redundancy-type LRSこのコマンドの詳細については、「mb (バケットの作成)」をご参照ください。
OSS SDK
Java
ストレージの冗長タイプを設定するには、CreateBucketRequest オブジェクトを次のように設定します。
// ストレージの冗長タイプを含むリクエストオブジェクトを準備します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setDataRedundancyType(DataRedundancyType.ZRS); // ここでストレージの冗長タイプを指定します。
// オプション:DataRedundancyType.ZRS、DataRedundancyType.LRS完全な例については、「バケットの作成 (Java SDK V1)」をご参照ください。
Python
client.put_bucket メソッドを呼び出す際、create_bucket_configuration パラメーターを使用してストレージの冗長タイプを指定します。
# ストレージの冗長タイプを含むリクエストオブジェクトを準備します。
req = oss.PutBucketRequest(
bucket="your-bucket-name",
create_bucket_configuration=oss.CreateBucketConfiguration(
data_redundancy_type='ZRS' # ここでストレージの冗長タイプを指定します。
)
)
# オプション:'ZRS'、'LRS'完全な例については、「バケットの作成 (Python SDK V2)」をご参照ください。
Go
ストレージの冗長タイプを設定するには、PutBucketRequest を作成する際に、CreateBucketConfiguration フィールドを設定します。
request := &oss.PutBucketRequest{
Bucket: oss.Ptr("your-bucket-name"),
CreateBucketConfiguration: &oss.CreateBucketConfiguration{
DataRedundancyType: oss.DataRedundancyZRS, // ここでストレージの冗長タイプを指定します。
},
}
// オプション:oss.DataRedundancyZRS、oss.DataRedundancyLRS完全な例については、「バケットの作成 (Go SDK V2)」をご参照ください。
PHP
ストレージの冗長タイプを設定するには、PutBucketRequest オブジェクトを作成する際に、コンストラクターに CreateBucketConfiguration オブジェクトを渡します。
// ストレージの冗長タイプなどの設定を含むリクエストオブジェクトを準備します。
$request = new Oss\Models\PutBucketRequest(
"your-bucket-name",
null, // acl
null, // resourceGroupId
new Oss\Models\CreateBucketConfiguration(
null, // storageClass
'ZRS' // ここでストレージの冗長タイプを指定します。
)
);
/*
* オプションのストレージ冗長タイプ:'ZRS'、'LRS'
*/完全な例については、「バケットの作成 (PHP SDK V2)」をご参照ください。
C#
ストレージの冗長タイプを設定するには、CreateBucketRequest オブジェクトを作成し、そのプロパティを次のように設定します。
// ストレージの冗長タイプ設定を含むリクエストオブジェクトを準備します。
var request = new CreateBucketRequest("your-bucket-name");
request.DataRedundancyType = DataRedundancyType.ZRS; // ここでストレージの冗長タイプを指定します。
// オプションのストレージ冗長タイプ:DataRedundancyType.ZRS、DataRedundancyType.LRS完全な例については、「バケットの作成 (C# SDK V1)」をご参照ください。
Node.js
ストレージの冗長タイプを設定するには、options オブジェクトを作成し、それを putBucket メソッドに渡します。
// ストレージの冗長タイプ設定を含む options オブジェクトを準備します。
const options = {
dataRedundancyType: 'LRS', // ここでストレージの冗長タイプを指定します。
};
// オプションのストレージ冗長タイプ:'ZRS'、'LRS'完全な例については、「バケットの作成 (Node.js SDK)」をご参照ください。
API
PutBucket を呼び出す際、DataRedundancyType リクエスト要素でバケットのストレージの冗長タイプを指定します。
アクセス制御リスト (ACL)
アクセス制御リスト (ACL) は、バケットとそのオブジェクトへのアクセスを制御します。デフォルトの権限は非公開で、バケット作成後にいつでも変更できます。デフォルトでは、オブジェクトはバケットのアクセス権限を継承します。個々のオブジェクトに対して権限を設定することもできます。
非公開 - 強く推奨
これはデフォルトで最も安全な設定です。バケットの所有者と、RAM ポリシーやバケットポリシーを通じて明示的に権限を付与されたユーザーのみがバケットにアクセスできます。常にこの設定を使用することを推奨します。他のユーザーにアクセスを許可するには、「権限とアクセス制御の概要」をご参照ください。
公開読み取り - 注意して使用
認証は不要です。匿名訪問者を含む誰でもオブジェクトへの読み取り専用アクセスが可能です。
データが完全に公開されるため、アウトバウンドインターネットトラフィックに対して予期しない料金が発生する可能性があります。この設定は、静的 Web サイトのアセットをホストするなど、公開共有シナリオに適しています。
公開読み取りを有効にする必要がある場合は、不正なトラフィック消費を防ぐために、ホットリンク保護を設定して、ご自身の Web サイトドメインなどの特定のリファラーからのアクセスのみを許可することを推奨します。
公開読み書き - 強く非推奨
誰でもバケット内のオブジェクトを読み取り、書き込み、さらには削除できます。これは非常に高いセキュリティリスクをもたらし、多額の料金が発生する可能性があります。この設定は、公開リポジトリなどの特殊な場合にのみ使用してください。一般的な使用は固く禁じられています。
コンソール
セキュリティ上の理由から、OSS コンソールはデフォルトで公開アクセス禁止を有効にしており、非公開バケットの作成のみをサポートしています。
ACL を公開読み取りまたは公開読み書きに変更するには、次の手順を実行します:
対象のバケット名をクリックして、その詳細ページに移動します。
左側のナビゲーションウィンドウで、[権限] > [公開アクセス禁止] を選択し、このポリシーをオフにします。
[ACL] タブに切り替え、[設定] をクリックします。
画面の指示に従って、バケットの ACL を 公開読み取り または 公開読み取り に変更します。
ossutil
次のコマンドは、examplebucket という名前のバケットを作成し、そのアクセス制御リスト (ACL) を非公開に設定します。
ossutil mb oss://examplebucket --acl=privateこのコマンドの詳細については、「mb (バケットの作成)」をご参照ください。
OSS SDK
Java
アクセス制御リストを設定するには、CreateBucketRequest オブジェクトを次のように設定します。
// アクセス権限を含むリクエストオブジェクトを準備します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setCannedACL(CannedAccessControlList.Private); // ここでバケットの ACL を指定します。
// オプション:CannedAccessControlList.Private、CannedAccessControlList.PublicRead、CannedAccessControlList.PublicReadWrite完全な例については、「バケットの作成 (Java SDK V1)」をご参照ください。
Python
client.put_bucket メソッドを呼び出す際、create_bucket_configuration パラメーターでアクセス制御リストを指定します。
# アクセス権限を含むリクエストオブジェクトを準備します。
req = oss.PutBucketRequest(
bucket="your-bucket-name",
create_bucket_configuration=oss.CreateBucketConfiguration(
access_control_policy='private' # ここでアクセス権限を指定します。
)
)
# オプション:'private'、'public-read'、'public-read-write'完全な例については、「バケットの作成 (Python SDK V2)」をご参照ください。
Go
アクセス制御リストを設定するには、PutBucketRequest を作成する際に、Acl フィールドを設定します。
// アクセス権限などの設定を含むリクエストオブジェクトを準備します。
request := &oss.PutBucketRequest{
Bucket: oss.Ptr("your-bucket-name"),
Acl: oss.BucketACLPrivate, // ここでアクセス権限を指定します。
CreateBucketConfiguration: &oss.CreateBucketConfiguration{
},
}
// オプションのアクセス権限:oss.BucketACLPrivate、oss.BucketACLPublicRead、oss.BucketACLPublicReadWrite完全な例については、「バケットの作成 (Go SDK V2)」をご参照ください。
PHP
アクセス制御リストを設定するには、PutBucketRequest を作成するときに Acl フィールドを設定します。
// アクセス権限などの設定を含むリクエストオブジェクトを準備します。
$request = new Oss\Models\PutBucketRequest(
"your-bucket-name",
'private', // ここでアクセス権限を指定します (2 番目のパラメーター)。
null, // resourceGroupId
new Oss\Models\CreateBucketConfiguration(
'IA', // ここでストレージクラスを指定します。
'ZRS' // ここで冗長タイプを指定します。
)
);
/*
* オプションのアクセス権限:'private'、'public-read'、'public-read-write'
*/完全な例については、「バケットの作成 (PHP SDK V2)」をご参照ください。
C#
アクセス制御リストを設定するには、CreateBucketRequest オブジェクトを作成し、そのプロパティを次のように設定します。
// アクセス権限設定を含むリクエストオブジェクトを準備します。
var request = new CreateBucketRequest("your-bucket-name");
request.ACL = CannedAccessControlList.Private; // ここでアクセス権限を指定します。
// オプションのアクセス権限:CannedAccessControlList.Private、CannedAccessControlList.PublicRead、CannedAccessControlList.PublicReadWrite完全な例については、「バケットの作成 (C# SDK V1)」をご参照ください。
Node.js
アクセス権限を設定するには、options オブジェクトを作成し、それを putBucket メソッドに渡します。
// アクセス権限を含む options オブジェクトを準備します。
const options = {
acl: 'private', // ここでアクセス権限を指定します。
};
// オプションのアクセス権限:'private'、'public-read'、'public-read-write'完全な例については、「バケットの作成 (Node.js SDK)」をご参照ください。
Android
アクセス制御リストを設定するには、CreateBucketRequest オブジェクトを作成し、次のように設定します。
// アクセス権限などの設定を含むリクエストオブジェクトを準備します。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("your-bucket-name");
createBucketRequest.setBucketACL(CannedAccessControlList.Private); // ここでアクセス権限を指定します。
// オプションのアクセス権限:CannedAccessControlList.Private、CannedAccessControlList.PublicRead、CannedAccessControlList.PublicReadWrite完全な例については、「バケットの作成 (Android SDK)」をご参照ください。
iOS
アクセス権限を設定するには、OSSCreateBucketRequest オブジェクトを作成し、そのプロパティを次のように設定します。
// アクセス権限などの設定を含むリクエストオブジェクトを準備します。
OSSCreateBucketRequest *create = [OSSCreateBucketRequest new];
create.bucketName = @"your-bucket-name";
create.xOssACL = @"private"; // ここでアクセス権限を指定します。
// オプションのアクセス権限:private、public-read、public-read-write など。完全な例については、「バケットの作成 (iOS SDK)」をご参照ください。
API
PutBucket API を呼び出す際、x-oss-acl リクエストヘッダーでバケットの読み書き権限を指定します。
公開アクセス禁止
これは、ACL やバケットポリシーの誤った設定による意図しないデータ漏洩を防ぐためのグローバルなセキュリティスイッチです。
有効にすると、非公開バケットのみを作成できます。バケットの ACL を公開読み取りや公開読み書きに設定したり、公開アクセスを許可するバケットポリシーを適用したりすることはできません。OSS は、バケット作成時にデフォルトで公開アクセス禁止を有効にします。ユースケースで公開アクセスが必要な場合は、バケット作成後にこの機能を手動で無効にすることができます。ただし、セキュリティ上の理由から、無効にすることは推奨しません。
オプション機能
これらの機能は、バケット作成時または作成後に必要に応じて設定できます。
バージョニング
データの偶発的な削除や上書きを防ぎます。既存のオブジェクトと同じ名前のオブジェクトをアップロードすると、現在のバージョンを上書きする代わりに新しいバージョンが作成されます。ワンクリックで以前のバージョンを復元し、エラーから回復できます。詳細については、「バージョニング」をご参照ください。
サーバーサイド暗号化
保存データを自動的に暗号化します。OSS は、データが書き込まれる際に暗号化し、読み取られる際に復号します。少なくとも「OSS マネージド」オプションを有効にすることを推奨します。詳細については、「サーバーサイド暗号化」をご参照ください。
リソースグループ
複数チームでの共同作業に適しています。部門やプロジェクトごとにバケットをグループ化し、個別の権限管理やコスト計算を行うことができます。詳細については、「リソースグループの使用」をご参照ください。
リアルタイムログクエリ
有効にすると、コンソールでアクセスログを迅速にクエリおよび分析できます。これにより、誰がどのオブジェクトにいつアクセスしたかを追跡し、異常なアクティビティの調査やユーザーの行動分析に役立ちます。詳細については、「リアルタイムログクエリ」をご参照ください。
スケジュールバックアップ
自動データバックアップをサポートします。詳細については、「バケットのスケジュールバックアップの設定」をご参照ください。
OSS-HDFS サービス
データレイクのシナリオに最適です。このサービスにより、Spark などのビッグデータフレームワークがデータ移行なしで OSS 内のデータを直接分析できます。詳細については、「OSS-HDFS サービスとは」をご参照ください。
バケットタグ
キーと値のペアのタグ (例:
Department:R&D) を使用してバケットを分類し、一括管理やコスト分析を容易にすることができます。詳細については、「バケットタグの管理」をご参照ください。
課金
バケットの作成は無料です。バケットにデータを保存すると、実際の使用量に基づいて課金されます。不要なコストを避けるために、設定時に次の点を考慮してください:
リソースプランの互換性
リソースプランのタイプは、バケットのストレージの冗長タイプと完全に一致する必要があります。ローカル冗長ストレージ (LRS) のリソースプランは、ゾーン冗長ストレージ (ZRS) バケットのコストを相殺できず、その逆も同様です。作成時に選択内容を確認してください。標準以外のストレージクラスの特別課金
低頻度アクセス (IA)、アーカイブ、コールドアーカイブ、ディープコールドアーカイブのストレージクラスは単価が低いですが、最低保存期間があり、データ取得料金が発生します。早期削除または変更:最低保存期間が終了する前にオブジェクトを削除または変更した場合、最低保存期間分の料金が全額課金されます。
データ読み取り:標準以外のストレージクラスでデータにアクセスすると、追加のデータ取得料金が発生します。
公開アクセスのリスク
アクセス制御リスト (ACL) を公開読み取りまたは公開読み書きに設定すると、データがインターネットに公開されます。これにより、不正なホットリンクやデータ盗難が発生し、予期せず高いトラフィック料金が発生する可能性があります。