バケットは、Object Storage Service (OSS) でファイルを保持する基本コンテナです。容量は無制限で、弾力的にスケールします。
基本設定
これらはバケットのコア設定です。バケットの作成後は変更できません。
バケット名:バケット名はグローバルで一意である必要があります。識別と管理を容易にするために、部門やサービスに基づいてバケットに名前を付けることを推奨します。例:
hr-documents。リージョン:リージョンはデータの物理的な場所を決定します。以下の優先順位に基づいてリージョンを選択してください:
コンプライアンス:規制要件を満たすリージョンを選択します。
パフォーマンス:ネットワーク遅延を削減するために、ターゲットユーザーに最も近いリージョンを選択します。Elastic Compute Service (ECS) インスタンスなど、別の Alibaba Cloud プロダクトからデータにアクセスする場合は、同じリージョンを選択します。これにより、内部ネットワークを無料で使用でき、リージョン間の遅延を削減できます。
機能サポート:必要な機能をリージョンがサポートしていることを確認します。詳細については、「リリースノート」をご参照ください。
コスト:上記の条件を満たした後、より低価格の料金のリージョンを選択します。
バケット名とリージョンのみを指定した場合、標準ストレージ、ゾーン冗長ストレージ、非公開アクセス、およびパブリックアクセスのブロック有効化というデフォルト設定が使用されます。
コンソール
OSS コンソールの [バケット] ページで、[バケットの作成] をクリックします。
[バケットの作成] パネルで、[バケット名] と [リージョン] を設定し、[作成] をクリックします。
ossutil
ossutil コマンドラインインターフェイス (CLI) を使用してバケットを作成できます。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 です。
createBucketRequest.setDataRedundancyType(DataRedundancyType.LRS);
// バケットの ACL を公開読み取りに設定します。デフォルトの ACL は非公開です。
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// リソースグループをサポートするリージョンでバケットを作成する場合、バケットにリソースグループを設定できます。
//createBucketRequest.setResourceGroupId(rsId);
ossClient.createBucket(createBucketRequest);
// バケットを作成します。
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)
# オプションのコマンドラインパラメーター --endpoint を指定します。これは他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。
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', // バケットのデフォルトのストレージクラスは標準です。ストレージクラスをアーカイブに設定するには、Standard を Archive に置き換えます。
acl: 'private', // バケットのデフォルトのアクセス制御リスト (ACL) は非公開です。ACL を公開読み取りに設定するには、private を public-read に置き換えます。
dataRedundancyType: 'LRS' // バケットのデフォルトのデータディザスタリカバリタイプはローカル冗長ストレージ (LRS) です。データディザスタリカバリタイプをゾーン冗長ストレージ (ZRS) に設定するには、LRS を 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);
/* char* 文字列で 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"));
// 次の 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 つのファイルに月に 1 回以上アクセスされるアクティブなデータに適しています。リアルタイムアクセスをサポートします。データアクセス頻度が不明な場合は、これが推奨される選択肢です。後でライフサイクルルールを使用して、オブジェクトをより低コストのストレージクラスに自動的に移行できます。
低頻度アクセス (IA):
バックアップファイルや操作ログなど、1 つのファイルに月に 1 回以下しかアクセスされないウォームデータに適しています。リアルタイムアクセスをサポートしますが、最低ストレージ期間は 30 日です。30 日が経過する前にオブジェクトを削除した場合でも、30 日分のストレージ料金が請求されます。このストレージクラスは、一時的なデータやテストデータには適していません。
アーカイブ:
1 つのファイルに 90 日に 1 回未満しかアクセスされないコールドデータに適しています。アーカイブオブジェクトのリアルタイムアクセスをサポートします。オブジェクトを最初に復元してから読み取ることも選択できます。復元には約 1 分かかります。最低ストレージ期間は 60 日です。
復元:データの状態をアクセス可能な状態に戻すことです。このプロセスには待機時間が必要です。
コールドアーカイブ
1 つのファイルに年に 1 回未満しかアクセスされないデータに適しています。データを読み取る前に復元する必要があります。復元には 1〜12 時間かかります。このクラスはコストが低く、最低ストレージ期間は 180 日です。
ディープコールドアーカイブ
これは最も低コストのオプションであり、1 つのファイルに年に 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) - 本番環境に推奨
データは同じリージョン内の複数のゾーン (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, // ここでストレージ冗長タイプを指定します。
'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 コンソールの使用
セキュリティ上の理由から、OSS コンソールはデフォルトでパブリックアクセスのブロックを有効にし、非公開バケットの作成のみをサポートします。
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='pricate' # ここでアクセス権限を指定します。
)
)
# オプション:'pricate'、'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 操作を呼び出す際に、x-oss-acl リクエストヘッダーでバケットの ACL を指定できます。
パブリックアクセスのブロック
これは、誤った ACL やバケットポリシーの設定によるデータの偶発的な公開を防ぐためのグローバルなセキュリティスイッチです。
有効にすると、非公開バケットのみを作成できます。公開読み取りまたは公開読み書きの ACL を設定したり、パブリックアクセスセマンティクスを持つバケットポリシーを作成したりすることはできません。デフォルトでは、OSS でバケットを作成する際にパブリックアクセスのブロックが有効になっています。ビジネスでパブリックアクセスが必要な場合は、バケット作成後にこの機能を手動で無効にできます。ただし、セキュリティ上の理由から、無効にすることは推奨されません。
オプションの機能設定
ビジネスニーズに応じて、バケット作成時または作成後にこれらの機能 を設定できます。
バージョニング
この機能は、データの偶発的な削除や上書きを防ぎます。同じ名前のオブジェクトをアップロードすると、既存のものを上書きする代わりに新しいバージョンが作成されます。偶発的な操作の後、ワンクリックで以前のバージョンを復元できます。詳細については、「バージョニング」をご参照ください。
サーバーサイド暗号化
この機能は、静的データを自動的に暗号化します。OSS はデータ書き込み時に暗号化し、読み取り時に復号化します。「OSS による完全管理」オプションを少なくとも有効にすることを推奨します。詳細については、「サーバーサイド暗号化」をご参照ください。
リソースグループ
この機能は、複数チームでの共同作業に適しています。部門やプロジェクトごとにバケットをグループ化し、独立した権限管理とコスト計算を行うことができます。詳細については、「リソースグループの使用」をご参照ください。
リアルタイムログクエリ
この機能を有効にすると、コンソールでアクセスログを迅速にクエリおよび分析し、誰がどのファイルにいつアクセスしたかを確認できます。これにより、異常なアクセスを調査したり、ユーザーの行動分析を行ったりするのに役立ちます。詳細については、「リアルタイムログクエリ」をご参照ください。
定期バックアップ
この機能は、自動データバックアップをサポートします。詳細については、「バケットの定期バックアップの設定」をご参照ください。
HDFS サービス
この機能は、データレイクのシナリオに適しています。Spark などのビッグデータフレームワークが、データ移行なしで OSS データを直接分析できるようになります。詳細については、「OSS-HDFS サービスとは」をご参照ください。
バケットタギング
この機能は、一括管理とコスト分析を容易にします。キーと値のタグ (例:
department:research) を使用してバケットを分類できます。詳細については、「バケットタグの管理」をご参照ください。
課金に関する説明
バケットの作成は無料です。バケットにデータを保存した後に、実際の使用量に対して課金されます。不要な料金を避けるために、バケットを設定する際には次の点に注意してください:
ストレージ冗長性とリソースプランの一致
リソースプランのタイプは、バケットのストレージ冗長タイプと完全に一致する必要があります。たとえば、LRS (ローカル冗長) リソースプランは、ZRS (ゾーン冗長) バケットのコストを相殺するために使用できず、その逆も同様です。作成時に選択を確認してください。標準以外のストレージクラスの特別課金
低頻度アクセス、アーカイブ、コールドアーカイブ、ディープコールドアーカイブのストレージクラスは単価が低いですが、最低ストレージ期間があり、データ取得料金が発生します。早期の削除または変更:ファイルが最低ストレージ期間を満たす前に削除または変更された場合、OSS は残りの期間のストレージ料金を引き続き請求します。
データの読み取り:標準ストレージクラスを除き、他のストレージクラスのデータにアクセスすると、追加のデータ取得料金が発生します。
パブリックアクセスのリスク
アクセス制御リスト (ACL) を公開読み取りまたは公開読み書きに設定すると、データがインターネットに公開されます。これにより、悪意のあるトラフィック消費が発生し、予期せず高いトラフィック料金が発生する可能性があります。