バケットは、Object Storage Service (OSS) におけるオブジェクトの基本的なコンテナです。容量無制限のストレージを提供し、弾力的にスケールします。
基本設定
これらはバケットのコア設定であり、作成後は変更できません。
-
バケット名:グローバルで一意である必要があります。識別と管理を簡素化するために、バケット名には部門やビジネスの識別子を使用することを推奨します。例:
hr-documents。 -
リージョン:データが物理的に保存される場所を決定します。以下の優先順位に基づいてリージョンを選択してください:
-
コンプライアンス:規制要件を満たすリージョンを選択してください。
-
パフォーマンス:ネットワーク遅延を削減するために、ターゲットユーザーに最も近いリージョンを選択してください。Elastic Compute Service (ECS) などの他の Alibaba Cloud 製品からデータにアクセスする場合は、同じリージョンを選択すると、無料の内部ネットワークトラフィックを利用でき、遅延を最小限に抑えられます。
-
機能の可用性:リリースノートをご参照いただき、リージョンが必要な機能をサポートしているかを確認してください。
-
コスト最適化:他の要件を満たした上で、より有利なのリージョンを選択してください。
説明現在、中国 (張家口) リージョンではバケットを新規作成できません。ただし、このリージョンに既存のバケットは影響を受けません。このリージョンのリソースプランをお持ちの場合は、引き続きそのプランを使用してこれらのバケットの料金を相殺できます。
-
バケット作成時にバケット名とリージョンのみを指定した場合、デフォルトで次の設定になります:標準ストレージ、ゾーン冗長ストレージ (ZRS)、非公開、および公開アクセス禁止が有効。
コンソール
-
OSS コンソールで、OSS コンソールの [バケット] ページに移動し、[バケットの作成] をクリックします。
-
[バケットの作成] パネルで、[バケット名] と [リージョン] を設定し、その後 [作成] をクリックします。
ossutil
ossutil コマンドラインツールを使用してバケットを作成します。インストール手順については、「ossutil のインストール」をご参照ください。
-
必要なバケットリージョンを設定します。
ossutil config -
Enter キーを押して最初のプロンプトをスキップし、リージョンのプロンプトが表示されるまで進みます:
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 のコードサンプルについては、Alibaba Cloud 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 {
// 中国 (杭州) リージョンのエンドポイント。
// ご利用のバケットのリージョンに対応するエンドポイントに置き換えてください。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数 OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET から認証情報をロードします。
EnvironmentVariableCredentialsProvider credentialsProvider =
CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
String bucketName = "examplebucket";
// エンドポイントに一致するリージョン ID に置き換えてください。
String region = "cn-hangzhou";
// 署名バージョン 4 で 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 {
// デフォルト設定でバケットを作成します。
ossClient.createBucket(new CreateBucketRequest(bucketName));
System.out.println("Bucket created: " + bucketName);
} catch (OSSException oe) {
// OSS がリクエストを拒否しました。詳細については、エラーコードとリクエスト ID を確認してください。
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) {
// クライアントが OSS に到達できませんでした (例:ネットワークエラー)。
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)
# バケットを作成し、そのストレージクラスを Standard に設定するリクエストを実行します。
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
)
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。
);
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 = {
// ストレージクラス:Standard (デフォルト)、Archive
storageClass: 'Standard',
// ACL:private (デフォルト)、public-read、public-read-write
acl: 'private',
// データ冗長タイプ:LRS (ローカル冗長ストレージ、デフォルト)、ZRS (ゾーン冗長ストレージ)
dataRedundancyType: 'LRS',
};
const result = await client.putBucket('examplebucket', options);
console.log(result);
} catch (err) {
console.log(err);
}
}
putBucket();// バケット作成リクエストを構築します。
// バケット名を指定します。
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) を private に設定します。
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]; API
PutBucket API でバケットを作成するには、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) です。ローカル冗長ストレージ (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 ポリシーまたはバケットポリシーを通じて権限を付与されたユーザーのみがバケットにアクセスできます。他のユーザーにアクセスを許可するには、「権限とアクセス制御の概要」をご参照ください。
-
公開読み取り - 注意して使用
認証は不要です。匿名訪問者を含む誰でもオブジェクトを読み取ることができますが、書き込みはできません。
-
この設定によりデータが公開され、予期せぬアウトバウンドトラフィック料金が発生する可能性があります。この設定は、静的ウェブサイトのアセットのホスティングなど、公開共有が必要なシナリオに適しています。
-
公開読み取りを有効にする必要がある場合は、不正なホットリンクを防ぐために、ウェブサイトのドメインなど特定のソースからのアクセスのみを許可するようにホットリンク保護を設定してください。
-
-
公開読み書き - 強く非推奨
誰でもバケット内のオブジェクトの読み取り、書き込み、さらには削除ができます。これは非常に高いセキュリティリスクをもたらし、多額の料金が発生する可能性があります。この設定は、公開リソースリポジトリなどの特殊なシナリオでのみ使用し、一般的な目的では絶対に使用しないでください。
OSS コンソール
セキュリティ上の理由から、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 オブジェクトを作成する際に、2 番目のパラメーターとして 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 は書き込み時にデータを暗号化し、読み取り時に復号します。「OSS による完全管理」オプションを少なくとも有効にすることを推奨します。詳細については、「サーバーサイド暗号化」をご参照ください。
-
リソースグループ
リソースグループは、複数チームでの共同作業に最適です。部門やプロジェクトごとにバケットをグループ化し、独立したアクセス制御とコスト集計を可能にします。詳細については、「リソースグループの使用」をご参照ください。
-
リアルタイムログクエリ
有効にすると、コンソールでアクセスログを迅速にクエリ・分析し、異常なアクセスのトラブルシューティング、ユーザー行動分析、誰がいつどのオブジェクトにアクセスしたかを特定できます。詳細については、「リアルタイムログクエリ」をご参照ください。
-
スケジュールバックアップ
スケジュールバックアップは、データバックアップを自動化します。詳細については、「バケットのスケジュールバックアップの設定」をご参照ください。
-
OSS-HDFS
データレイクのシナリオに最適な OSS-HDFS は、Spark などのビッグデータフレームワークが移行なしで OSS データを直接分析できるようにします。詳細については、「OSS-HDFS サービスとは」をご参照ください。
-
バケットタギング
バケットタギングは、一括管理とコスト分析を容易にします。キーと値のタグ (例:
department:research) を使用してバケットを分類できます。詳細については、「バケットタグの管理」をご参照ください。
課金
バケットの作成は無料です。バケットにデータを保存した後に、使用量に基づいて課金されます。不要な料金を避けるために、バケットを設定する際には次の点を考慮してください:
-
リソースプランとストレージ冗長タイプの一致
リソースプランのタイプは、バケットのストレージ冗長タイプと完全に一致する必要があります。たとえば、LRS リソースプランは ZRS バケットのコストを相殺するために使用できず、その逆も同様です。作成時に選択内容を確認してください。 -
標準以外のストレージクラスの特別課金
低頻度アクセス、アーカイブ、コールドアーカイブ、ディープコールドアーカイブのストレージクラスはストレージコストが低いですが、最小保存期間があり、データ取得料金が発生します。-
早期削除または変更:オブジェクトが最小保存期間満了前に削除または変更された場合、OSS は残りの期間分のストレージ料金を課金します。
-
データ読み取り:標準ストレージクラスを除き、他のストレージクラスのデータにアクセスすると、追加のデータ取得料金が発生します。
-
-
公開アクセスのリスク
ACL を公開読み取りまたは公開読み書きに設定すると、データがインターネットに公開されます。これにより、悪意のあるトラフィックを引き寄せ、予期せず高いトラフィック料金が発生する可能性があります。