すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS へのファイル、画像、動画のアップロード

最終更新日:Mar 05, 2025

5 GB 以下のローカルファイル、画像、または動画で、高同時実行アップロードパフォーマンスが不要な場合は、シンプルアップロード方式が適しています。

前提条件

バケットが作成済みであることを確認します。 詳細については、「バケットを作成する」をご参照ください。

操作方法

警告

OSS-HDFS サービスが有効になっているバケットのデータストレージディレクトリ .dlsdata/ に、OSS-HDFS 以外の方法でオブジェクトをアップロードしないでください。OSS-HDFS サービスの中断またはデータ損失を防ぐためです。

OSS コンソールを使用する

説明

Finance Cloud では、OSS コンソールにはインターネット経由でアクセスできません。 オブジェクトのアップロードには、SDK、ossutil、または ossbrowser を使用してください。

  1. OSS コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウから、ファイル > オブジェクト を選択します。

  4. オブジェクト ページで、アップロード をクリックします。

  5. アップロード パネルで、以下のようにパラメータを設定します。

    1. 基本オプションを構成します。

      パラメータ

      説明

      アップロード先

      オブジェクトがバケットにアップロードされた後に保存されるディレクトリを指定します。

      • カレントディレクトリ: オブジェクトを現在のディレクトリにアップロードします。

      • ディレクトリを指定する: オブジェクトを指定したディレクトリにアップロードします。 ディレクトリ名を入力する必要があります。 入力した名前のディレクトリが存在しない場合、OSS は自動的にディレクトリを作成し、オブジェクトをそのディレクトリにアップロードします。

        ディレクトリ名は、以下の要件を満たしている必要があります。

        • 名前に使用できるのは UTF-8 文字のみです。 名前の長さは 1 ~ 254 文字である必要があります。

        • 名前はスラッシュ (/) またはバックスラッシュ (\) で始めることはできません。

        • 名前に連続したスラッシュ (/) を含めることはできません。

        • 名前を .. にすることはできません。

      ファイル ACL

      オブジェクトの ACL を指定します。

      • バケットを継承: オブジェクトの ACL はバケットの ACL と同じです。

      • 非公開 (推奨): オブジェクトの所有者のみが、オブジェクトに対する読み取りおよび書き込み権限を持ちます。 他のユーザーは、オブジェクトにアクセスする権限を持ちません。

      • 公開読み取り: オブジェクトの所有者は、オブジェクトに対する読み取りおよび書き込み権限を持ちます。 他のユーザー (匿名ユーザーを含む) は、オブジェクトを読み取ることのみができます。 これにより、バケット内のデータへの不正アクセスや高額な料金が発生する可能性があります。 慎重に行ってください。

      • 公開読み書き: すべてのユーザー (匿名ユーザーを含む) がオブジェクトの読み取りと書き込みを行うことができます。 これにより、バケット内のデータへの不正アクセスや高額な料金が発生する可能性があります。 ユーザーが禁止されているデータまたは情報をアップロードした場合、お客様の法的権利が侵害される可能性があります。 必要な場合を除き、ACL を公開読み書きに設定しないことをお勧めします。

      オブジェクトの ACL の詳細については、「オブジェクトの ACL を設定する」をご参照ください。

      アップロードするファイル

      アップロードするファイルまたはディレクトリを選択します。

      ファイルの選択 または フォルダーの選択 をクリックしてローカルファイルまたはディレクトリを選択するか、ターゲットファイルまたはディレクトリをアップロードするファイルの領域に直接ドラッグします。

      アップロードするディレクトリにアップロードしたくないファイルが含まれている場合は、ターゲットファイルの右側にある [削除] をクリックして、ファイルリストから削除します。

      重要
      • バージョン管理されていないバケットにローカルファイルをアップロードし、ローカルファイルの名前がバケット内の既存のオブジェクトと同じ名前の場合、アップロードされたオブジェクトは既存のオブジェクトを上書きします。

      • バージョン管理されたバケットにローカルファイルをアップロードし、ローカルファイルの名前がバケット内の既存のオブジェクトと同じ名前の場合、アップロードされたオブジェクトは最新バージョンになり、既存のオブジェクトは以前のバージョンになります。

    2. オプション:オブジェクトのストレージクラスや暗号化方法などの詳細オプションを設定します。

      パラメータ

      説明

      ストレージクラス

      オブジェクトのストレージクラスを指定します。

      • バケットを継承: オブジェクトのストレージクラスはバケットのストレージクラスと同じです。

      • スタンダード: 頻繁なデータアクセスをサポートする、信頼性、可用性、およびパフォーマンスの高いオブジェクトストレージサービスを提供します。 標準ストレージは、ソーシャルネットワーキング アプリケーション、画像、オーディオ、動画共有アプリケーション、大規模 Web サイト、ビッグデータ分析など、さまざまなシナリオに適しています。 標準ストレージは、ゾーン冗長ストレージ (ZRS) とローカル冗長ストレージ (LRS) をサポートしています。

      • 低頻度アクセス: 低ストレージコストで耐久性の高いオブジェクトストレージサービスを提供します。 IA の最小請求サイズは 64 KB、最小請求ストレージ期間は 30 日です。 IA オブジェクトにはリアルタイムでアクセスできます。 ただし、IA オブジェクトにアクセスすると、データ取得料金が発生します。 IA ストレージは、月に 1 ~ 2 回程度アクセスされるデータに適しています。 IA ストレージは、ゾーン冗長ストレージとローカル冗長ストレージをサポートしています。

      • アーカイブストレージ: 非常に低いストレージコストで耐久性の高いオブジェクトストレージサービスを提供します。 アーカイブの最小請求サイズは 64 KB、最小請求ストレージ期間は 60 日です。 アーカイブオブジェクトは、復元後、またはアーカイブオブジェクトのリアルタイムアクセスが有効になった後にアクセスできます。 アクセスしたアーカイブデータのサイズに基づいて、アーカイブデータ取得料金が発生します。 アーカイブは、アーカイブデータ、医療画像、科学資料、ビデオ映像など、長期間保存する必要があり、めったにアクセスされないデータに適しています。 アーカイブストレージは、ゾーン冗長ストレージとローカル冗長ストレージをサポートしています。

      • コールドアーカイブ: アーカイブストレージよりも低いストレージコストで耐久性の高いオブジェクトストレージサービスを提供します。 コールドアーカイブの最小請求サイズは 64 KB、最小請求ストレージ期間は 180 日です。 コールドアーカイブオブジェクトにアクセスするには、事前に復元する必要があります。 コールドアーカイブオブジェクトの復元にかかる時間は、オブジェクトのサイズと復元優先度によって異なります。 コールドアーカイブオブジェクトを復元すると、データ取得料金と API 操作呼び出し料金が発生します。 コールドアーカイブは、コンプライアンスのために保持されるデータ、ビッグデータおよび AI 分野で長期間にわたって蓄積された生データ、保持されたメディアリソース、オンライン教育業界のアーカイブビデオなど、非常に長期間保存する必要があるコールドデータに適しています。 コールドアーカイブは、ローカル冗長ストレージのみをサポートしています。

      • ディープコールドアーカイブ: コールドアーカイブストレージよりも低いストレージコストで耐久性の高いオブジェクトストレージサービスを提供します。 ディープコールドアーカイブの最小請求サイズは 64 KB、最小請求ストレージ期間は 180 日です。 ディープコールドアーカイブオブジェクトにアクセスするには、事前に復元する必要があります。 ディープコールドアーカイブオブジェクトの復元にかかる時間は、オブジェクトのサイズと復元優先度によって異なります。 ディープコールドアーカイブオブジェクトを復元すると、データ取得料金と API 操作呼び出し料金が発生します。 ディープコールドアーカイブは、ビッグデータおよび AI 分野で長期間にわたって蓄積された生データ、保持されたメディアリソース、規制およびコンプライアンスドキュメント、テープからクラウドにマイグレーションして長期間保存する必要があるデータなど、非常に長期間保存する必要がある非常にコールドなデータに適しています。 ディープコールドアーカイブは、ローカル冗長ストレージのみをサポートしています。

      詳細については、「ストレージクラスの概要」をご参照ください。

      暗号化の方法

      オブジェクトのサーバ側暗号化方法を指定します。

      • バケットを継承: オブジェクトのサーバ側暗号化方法は、バケットのサーバ側暗号化方法と同じです。

      • OSS 管理: OSS によって管理されるキーを使用して、バケット内のオブジェクトを暗号化します。 OSS は、異なるキーを使用して各オブジェクトを暗号化します。 OSS はまた、マスターキーを使用してキーを暗号化します。

      • KMS: デフォルトのカスタマーマスターキー (CMK) または指定された CMK ID を使用して、オブジェクトを暗号化および復号します。 次のセクションでは、KMS で使用される 暗号化キー について説明します。

        • alias/acs/oss(CMK ID): KMS によって管理されるデフォルトの CMK を使用して、暗号化と復号のためのキーを生成します。

        • alias/<cmkname>(CMK ID): カスタム CMK を使用して、オブジェクトの暗号化のためのキーを生成します。 CMK ID は、暗号化されたオブジェクトのメタデータに記録されます。 オブジェクトは、復号権限を持つユーザーがダウンロードするときに復号されます。 <cmkname> は、CMK の作成時に構成した CMK のオプション名です。

          CMK ID を指定する前に、KMS コンソールで、バケットと同じリージョンに通常のキーまたは外部キーを作成する必要があります。 詳細については、「CMK を作成する」をご参照ください。

      • 暗号化アルゴリズム: AES256 のみがサポートされています。

      ユーザー定義のメタデータ

      オブジェクトの説明情報を追加します。 1 つのオブジェクトに複数のユーザーメタデータヘッダーを追加できます。 ただし、ユーザーメタデータの合計サイズは 8 KB を超えることはできません。 ユーザーメタデータを追加する場合は、パラメータのプレフィックスとして x-oss-meta- を使用し、パラメータの値を指定する必要があります。 例: x-oss-meta-location:hangzhou

    3. アップロード をクリックします。

      各ファイルのアップロードの進行状況は、タスクのアップロード タブに表示されます。

グラフィカル管理ツール ossbrowser を使用する

ossbrowser は、OSS コンソールと同じバケットレベルの操作をサポートしています。 シンプルアップロードについては、ossbrowser の画面上の指示に従ってください。 ossbrowser の使用方法の詳細については、「ossbrowser をすばやく使用する」をご参照ください。

Alibaba Cloud SDK を使用する

Java

次の例は、Java SDK を使用したファイルのアップロードを示しています。 文字列、ファイルストリーム、ネットワークストリームのアップロードなどのシンプルアップロードシナリオのサンプルコードについては、「Java シンプルアップロード」をご参照ください。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

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();
        // バケットの名前を指定します。 例: examplebucket。
        String bucketName = "examplebucket";
        // オブジェクトのフルパスを指定します。 フルパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。
        String objectName = "exampledir/exampleobject.txt";
        // アップロードするローカルファイルのフルパスを指定します。 例: D:\\localpath\\examplefile.txt。
        // デフォルトでは、ローカルファイルのパスが指定されていない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
        String filePath= "D:\\localpath\\examplefile.txt";
        // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";
        
        // OSSClient インスタンスを作成します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // PutObjectRequest オブジェクトを作成します。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            // 次のサンプルコードは、オブジェクトをアップロードするときにオブジェクトのストレージクラスと ACL を指定する方法の例を示しています。
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            
            // ローカルファイルをアップロードします。
            PutObjectResult result = ossClient.putObject(putObjectRequest);           
        } 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();
            }
        }
    }
}

Python

次の例は、Python SDK を使用したファイルのアップロードを示しています。 文字列やネットワークストリームのアップロードなどのシンプルアップロードシナリオのサンプルコードについては、「Python シンプルアップロード」をご参照ください。

# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# エンドポイントにマップするリージョンの ID を指定します。 例: cn-hangzhou。 このパラメータは、署名アルゴリズム V4 を使用する場合は必須です。
region = "cn-hangzhou"

# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# ファイルはバイナリモードで開く必要があります。
# ローカルファイルのフルパスを指定します。 デフォルトでは、ローカルファイルのフルパスを指定しない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
with open('D:\\localpath\\examplefile.txt', 'rb') as fileobj:
    # seek メソッドを使用して、ファイルの 1,000 バイト目からデータを読み取ります。 データは、ローカルファイルの 1000 バイト目から最後のバイトまでアップロードされます。
    fileobj.seek(1000, os.SEEK_SET)
    # tell メソッドを使用して、現在の位置を取得します。
    current = fileobj.tell()
    # オブジェクトのフルパスを指定します。 フルパスにバケット名を含めないでください。
    bucket.put_object('exampleobject.txt', fileobj)

Go

次の例は、Go SDK を使用したファイルのアップロードを示しています。 文字列、ファイルストリーム、ネットワークストリームのアップロードなどのシンプルアップロードシナリオのサンプルコードについては、「Go シンプルアップロード」をご参照ください。

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 // バケットの名前。
	objectName string // オブジェクトの名前。
)

// コマンドラインパラメータを初期化するために使用される init 関数を指定します。
func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
	flag.StringVar(&objectName, "object", "", "オブジェクトの名前。")
}

func main() {
	// コマンドラインパラメータを解析します。
	flag.Parse()

	// バケット名が空かどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータ、バケット名が必要です")
	}

	// リージョンが空かどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータ、リージョンが必要です")
	}

	// オブジェクト名が空かどうかを確認します。
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータ、オブジェクト名が必要です")
	}

	// デフォルトの構成を読み込み、認証情報プロバイダとリージョンを指定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSSClient インスタンスを作成します。
	client := oss.NewClient(cfg)

	// アップロードするローカルファイルのパスを指定します。 例: /Users/localpath/exampleobject.txt。
	localFile := "/Users/localpath/exampleobject.txt"

	// ローカルファイルをアップロードするリクエストを作成します。
	putRequest := &oss.PutObjectRequest{
		Bucket:       oss.Ptr(bucketName),      // バケットの名前を指定します。
		Key:          oss.Ptr(objectName),      // オブジェクトの名前を指定します。
		StorageClass: oss.StorageClassStandard, // オブジェクトのストレージクラスを Standard に設定します。
		Acl:          oss.ObjectACLPrivate,     // オブジェクトのアクセス制御リスト (ACL) を private に設定します。
		Metadata: map[string]string{
			"yourMetadataKey 1": "yourMetadataValue 1", // オブジェクトのメタデータを指定します。
		},
	}

	// ローカルファイルをアップロードするリクエストを実行します。
	result, err := client.PutObjectFromFile(context.TODO(), putRequest, localFile)
	if err != nil {
		log.Fatalf("ファイル %v からオブジェクトを配置できませんでした", err)
	}

	// オブジェクトアップロード操作の結果を表示します。
	log.Printf("ファイルからのオブジェクト配置結果:%#v\n", result)
}

Node.js

次の例は、Node.js SDK を使用したファイルのアップロードを示しています。 文字列、ファイルストリーム、ネットワークストリームのアップロードなどのシンプルアップロードシナリオのサンプルコードについては、「文字列をアップロードする」および「ストリーミングアップロード」をご参照ください。

const OSS = require('ali-oss')
const path=require("path")

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: 'examplebucket',
});

// カスタムリクエストヘッダーを追加します。
const headers = {
  // オブジェクトのストレージクラスを指定します。
  'x-oss-storage-class': 'Standard',
  // オブジェクトのアクセス制御リスト (ACL) を指定します。
  'x-oss-object-acl': 'private',
  // オブジェクトの URL を使用してオブジェクトにアクセスする場合、オブジェクトを添付ファイルとしてダウンロードすることを指定します。 この例では、ダウンロードされたオブジェクトの名前は example.jpg です。
  'Content-Disposition': 'attachment; filename="example.txt"',
  // オブジェクトのタグを指定します。 オブジェクトに複数のタグを同時に指定できます。
  'x-oss-tagging': 'Tag1=1&Tag2=2',
  // PutObject 操作で同じ名前のオブジェクトを上書きするかどうかを指定します。 この例では、x-oss-forbid-overwrite パラメータが true に設定されています。これは、同じ名前の既存のオブジェクトをアップロードされたオブジェクトで上書きできないことを指定します。
  'x-oss-forbid-overwrite': 'true',
};

async function put () {
  try {
    // オブジェクトとローカルファイルのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。
    // ローカルファイルのパスが指定されていない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
    const result = await client.put('exampleobject.txt', path.normalize('D:\\localpath\\examplefile.txt')
    // カスタムヘッダーを指定します。
    ,{headers}
    );
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();

PHP

次のコードスニペットは、PHP SDK を使用してファイルをアップロードする方法を示しています。 文字列のアップロードなど、シンプルアップロードシナリオのその他の例については、「PHP シンプルアップロード」をご参照ください。

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

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケットの名前を指定します。 例: examplebucket。
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 フルパスにバケット名を含めないでください。
$object = "exampledir/exampleobject.txt";
// ローカルファイルのフルパスを指定します。 例: D:\\localpath\\examplefile.txt。 デフォルトでは、ローカルファイルのパスを指定しない場合、ファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
$filePath = "D:\\localpath\\examplefile.txt";

try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->uploadFile($bucket, $object, $filePath);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . "OK" . "\n");

Browser.js

Browser.js SDK の詳細については、「Browser.js シンプルアップロード」をご参照ください。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>ドキュメント</title>
  </head>
  <body>
    <input id="file" type="file" />
    <button id="upload">オブジェクトのアップロード</button>
    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
    <script>
      const client = new OSS({
        // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
        region: "yourRegion",
        authorizationV4: true
        // STS から取得した一時的な AccessKey ペアを指定します。 AccessKey ペアは、AccessKey ID と AccessKey シークレットで構成されます。
        accessKeyId: "yourAccessKeyId",
        accessKeySecret: "yourAccessKeySecret",
        // STS から取得したセキュリティトークンを指定します。
        stsToken: "yourSecurityToken",
        // バケットの名前を指定します。
        bucket: "examplebucket",
      });

      // ドロップダウンリストからローカルファイルを選択します。 例: <input type="file" id="file" />。
      let data;
      // Blob データを作成して指定します。
      //const data = new Blob(['Hello OSS']);
      // OSS バッファを作成し、OSS バッファの内容を指定します。
      //const data = new OSS.Buffer(['Hello OSS']);

      const upload = document.getElementById("upload");

      async function putObject(data) {
        try {
          // オブジェクトのフルパスを指定します。 フルパスにバケット名を含めないでください。
          // データを現在のバケットまたはバケット内の特定のディレクトリにアップロードするオブジェクト名またはオブジェクトのフルパスを指定します。 たとえば、オブジェクト名を exampleobject.txt に設定するか、オブジェクトのパスを exampledir/exampleobject.txt に設定します。
          // データは、ファイル、Blob データ、または OSS バッファに設定できます。
          const options = {
            meta: { temp: "demo" },
            mime: "json",
            headers: { "Content-Type": "text/plain" },
          };
          const result = await client.put("examplefile.txt", data, options);
          console.log(result);
        } catch (e) {
          console.log(e);
        }
      }

      upload.addEventListener("click", () => {
        const data = file.files[0];
        putObject(data);
      });
    </script>
  </body>
</html>

.NET

次の例は、.NET SDK を使用してファイルをアップロードする方法を示しています。 文字列のアップロードなど、シンプルアップロードシナリオの詳細については、「.NET シンプルアップロード」をご参照ください。

using Aliyun.OSS;
using Aliyun.OSS.Common;

// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを 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");
// バケットの名前を指定します。 例: examplebucket。
var bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。 フルパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。
var objectName = "exampledir/exampleobject.txt";
// アップロードするローカルファイルのフルパスを指定します。 デフォルトでは、ローカルファイルのフルパスを指定しない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
var localFilename = "D:\\localpath\\examplefile.txt";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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
{
    // ローカルファイルをアップロードします。
    client.PutObject(bucketName, objectName, localFilename);
    Console.WriteLine("Put object succeeded");
}
catch (Exception ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
}

Android

次のコードスニペットは、Android SDK を使用したファイルのアップロードの例を示しています。 バイナリ byte[] 配列のアップロードなど、シンプルアップロードシナリオのその他の例については、「Android シンプルアップロード」をご参照ください。

// アップロードリクエストを構築します。
// バケットの名前、オブジェクトのフルパス、およびローカルファイルのフルパスを指定します。 この例では、バケットの名前は examplebucket、オブジェクトのフルパスは exampledir/exampleobject.txt、ローカルファイルのフルパスは /storage/emulated/0/oss/examplefile.txt です。
// オブジェクトのフルパスにバケット名を含めないでください。
PutObjectRequest put = new PutObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");

// (オプション) オブジェクトメタデータを指定します。
 ObjectMetadata metadata = new ObjectMetadata();
// metadata.setContentType("application/octet-stream"); // content-type を設定します。
// metadata.setContentMD5(BinaryUtil.calculateBase64Md5(uploadFilePath)); // MD5 検証に使用される MD5 ハッシュを指定します。
// オブジェクトの ACL を private に設定します。
metadata.setHeader("x-oss-object-acl", "private");
// オブジェクトのストレージクラスを Standard に設定します。
metadata.setHeader("x-oss-storage-class", "Standard");
// アップロードされたオブジェクトが既存のオブジェクトと同じ名前の場合、既存のオブジェクトを上書きしないように指定します。
// metadata.setHeader("x-oss-forbid-overwrite", "true");
// オブジェクトに 1 つ以上のタグを指定します。
// metadata.setHeader("x-oss-tagging", "a:1");
// OSS がオブジェクトを作成するときにオブジェクトを暗号化するために使用されるサーバ側暗号化アルゴリズムを指定します。
// metadata.setHeader("x-oss-server-side-encryption", "AES256");
// KMS によって管理される CMK を指定します。 このパラメータは、x-oss-server-side-encryption が KMS に設定されている場合にのみ有効になります。
// metadata.setHeader("x-oss-server-side-encryption-key-id", "9468da86-3509-4f8d-a61e-6eab1eac****");

put.setMetadata(metadata);

try {
    PutObjectResult putResult = oss.putObject(put);

    Log.d("PutObject", "UploadSuccess");
    Log.d("ETag", putResult.getETag());
    Log.d("RequestId", putResult.getRequestId());
} catch (ClientException e) {
    // クライアント側の例外 (ネットワークエラーなど) を処理します。
    e.printStackTrace();
} catch (ServiceException e) {
    // サーバ側の例外を処理します。
    Log.e("RequestId", e.getRequestId());
    Log.e("ErrorCode", e.getErrorCode());
    Log.e("HostId", e.getHostId());
    Log.e("RawMessage", e.getRawMessage());
}

iOS

iOS SDK の詳細については、「iOS シンプルアップロード」をご参照ください。

OSSPutObjectRequest * put = [OSSPutObjectRequest new];

// バケットの名前を指定します。 例: examplebucket。
put.bucketName = @"examplebucket";
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 フルパスにバケット名を含めないでください。
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// put.uploadingData = <NSData *>; // NSData を直接アップロードします。

// (オプション) アップロードの進行状況インジケータを構成します。
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    // アップロードされているバイト数、アップロードされたバイト数、およびアップロードするバイト数の合計を指定します。
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// オプションのフィールドを構成します。
// put.contentType = @"application/octet-stream";
// Content-MD5 を指定します。
// put.contentMd5 = @"eB5eJF1ptWaXm4bijSPyxw==";
// オブジェクトのエンコード方法を指定します。
// put.contentEncoding = @"identity";
// オブジェクトの内容を表示する方法を指定します。
// put.contentDisposition = @"attachment";
// オブジェクトメタデータまたは HTTP ヘッダーを構成します。
// NSMutableDictionary *meta = [NSMutableDictionary dictionary];
// オブジェクトメタデータを指定します。
// [meta setObject:@"value" forKey:@"x-oss-meta-name1"];
// オブジェクトのアクセス制御リスト (ACL) を private に設定します。
// [meta setObject:@"private" forKey:@"x-oss-object-acl"];
// オブジェクトのストレージクラスを Standard に設定します。
// [meta setObject:@"Standard" forKey:@"x-oss-storage-class"];
// このアップロードで、同じ名前の既存のオブジェクトを上書きすることを指定します。
// [meta setObject:@"true" forKey:@"x-oss-forbid-overwrite"];
// オブジェクトに 1 つ以上のタグを指定します。
// [meta setObject:@"a:1" forKey:@"x-oss-tagging"];
// Object Storage Service (OSS) がオブジェクトを作成するときにデスティネーションオブジェクトを暗号化するために使用されるサーバ側暗号化アルゴリズムを指定します。
// [meta setObject:@"AES256" forKey:@"x-oss-server-side-encryption"];
// Key Management Service (KMS) によって管理されるカスタマーマスターキー (CMK) を指定します。 このパラメータは、x-oss-server-side-encryption を KMS に設定した場合にのみ有効になります。
// [meta setObject:@"9468da86-3509-4f8d-a61e-6eab1eac****" forKey:@"x-oss-server-side-encryption-key-id"];
// put.objectMeta = meta;
OSSTask * putTask = [client putObject:put];

[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];
// waitUntilFinished は現在のスレッドの実行をブロックしますが、タスクの進行状況はブロックしません。
// [putTask waitUntilFinished];
// [put cancel];

C++

次の例は、C++ SDK を使用してファイルをアップロードする方法を示しています。 文字列のアップロードなど、シンプルアップロードシナリオのその他の例については、「C++ シンプルアップロード」をご参照ください。

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

int main(void)
{
    /* OSS へのアクセスに使用されるアカウントに関する情報を初期化します。 */
            
    /* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    /* バケットの名前を指定します。 例: examplebucket。 */
    std::string BucketName = "examplebucket";
    /* オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。 */
    std::string ObjectName = "exampledir/exampleobject.txt";

    /* ネットワークリソースなどのリソースを初期化します。 */
    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);
    /* ローカルファイルのフルパスを指定します。 例: D:\\localpath\\examplefile.txt。 この例では、localpath は examplefile.txt ファイルが保存されているローカルパスを示します。 */
    std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("D:\\localpath\\examplefile.txt", std::ios::in | std::ios::binary);
    PutObjectRequest request(BucketName, ObjectName, content);

    /* (オプション) オブジェクトの ACL を private に、ストレージクラスを Standard に設定します。 */
    //request.MetaData().addHeader("x-oss-object-acl", "private");
    //request.MetaData().addHeader("x-oss-storage-class", "Standard");

    auto outcome = client.PutObject(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。 */
        std::cout << "PutObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースを解放します。 */
    ShutdownSdk();
        return 0;
}

C

次の例は、C SDK を使用してファイルをアップロードする方法を示しています。 文字列のアップロードなど、シンプルアップロードシナリオのその他の例については、「C シンプルアップロード」をご参照ください。

#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket。 */
const char *bucket_name = "examplebucket";
/* オブジェクトのフルパスを指定します。 フルパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。 */
const char *object_name = "exampledir/exampleobject.txt";
const char *object_content = "More than just cloud.";
/* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを 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 を使用するかどうかを指定します。 値 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);
    /* オプションを作成して初期化します。 このパラメータには、endpoint、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;
    aos_string_t object;
    aos_list_t buffer;
    aos_buf_t *content = NULL;
    aos_table_t *headers = NULL;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    aos_list_init(&buffer);
    content = aos_buf_pack(oss_client_options->pool, object_content, strlen(object_content));
    aos_list_add_tail(&content->node, &buffer);
    /* オブジェクトをアップロードします。 */
    resp_status = oss_put_object_from_buffer(oss_client_options, &bucket, &object, &buffer, headers, &resp_headers);
    /* オブジェクトがアップロードされたかどうかを確認します。 */
    if (aos_status_is_ok(resp_status)) {
        printf("put object from buffer succeeded\n");
    } else {
        printf("put object from buffer failed\n");      
    }
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(pool);
    /* 割り当てられたグローバルリソースを解放します。 */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

次の例は、Ruby SDK を使用してファイルをアップロードする方法を示しています。 ストリーミングアップロードなど、シンプルアップロードシナリオのその他の例については、「Ruby ストリーミングアップロード」をご参照ください。

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。
bucket = client.get_bucket('examplebucket')
# オブジェクトをアップロードします。
bucket.put_object('exampleobject.txt', :file => 'D:\\localpath\\examplefile.txt')

コマンドラインツール ossutil を使用する

コマンドラインツール ossutil を使用してファイルをアップロードできます。 ossutil のインストール手順については、「ossutil をインストールする」をご参照ください。

次のコマンドを使用して、ローカルファイルをバケット にアップロードします。

ossutil api put-object --bucket examplebucket --key exampleobject --body file://uploadFile

このコマンドの詳細については、「put-object」をご参照ください。

関連操作

上記の操作は API 呼び出しに基づいています。 カスタマイズの度合いを高めるには、RESTful API を直接呼び出すことができます。 直接 API 呼び出しを行う場合は、コードに署名計算を含める必要があります。 詳細については、「PutObject」をご参照ください。

権限の説明

デフォルトでは、Alibaba Cloud アカウントはすべての権限を持っています。 Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールは、最初は権限を持っていません。 Alibaba Cloud アカウントまたは管理者は、RAM ポリシー または バケットポリシー を使用して操作権限を割り当てる必要があります。

API

アクション

説明

PutObject

oss:PutObject

オブジェクトをアップロードします。

oss:PutObjectTagging

オブジェクトをアップロードするときに、x-oss-tagging を使用してオブジェクトのタグが指定されている場合は、この操作の権限が必要です。

kms:GenerateDataKey

オブジェクトをアップロードするときに、x-oss-server-side-encryption を使用してサーバ側暗号化が KMS として指定されている場合、またはバケットで KMS ベースのサーバ側暗号化が有効になっている場合は、これら 2 つの操作の権限が必要です。

kms:Decrypt

料金の説明

シンプルアップロード方式を使用して OSS にファイルをアップロードすると、いくつかの項目に対して料金が発生します。 これらの項目の料金の詳細については、OSS 料金 を参照してください。

API

請求対象項目

説明

PutObject

PUT リクエスト

成功したリクエストの数に基づいてリクエスト料金が発生します。

ストレージ料金

オブジェクトのストレージタイプ、サイズ、および期間に基づいてストレージ料金が発生します。

詳細情報

アップロードプロセスを管理する

  • アップロードの進行状況を監視する: アップロードの進行状況を監視し、プログレスバーを表示するには、「アップロードプログレスバー」をご参照ください。

  • アップロードコールバック: ファイルのアップロード後にアプリケーションサーバへのコールバックリクエストを設定できます。 詳細については、「アップロードコールバック」をご参照ください。

アップロード後にファイルを処理する

  • 画像処理: アップロードされた画像を圧縮し、カスタムスタイルを適用し、サイズ情報を取得できます。 詳細については、「画像処理」をご参照ください。

  • メディア処理: アップロードされたメディアに対して、光学式文字認識 (OCR)、字幕抽出、動画トランスコード、サムネイル生成などのタスクを実行します。 詳細については、「メディア処理」をご参照ください。

ECI で OSS データにアクセスする

Hadoop や Spark などのバッチジョブのストレージバックエンドとして OSS を使用し、ECI で OSS データに直接アクセスします。 詳細については、「ECI で OSS データにアクセスする」をご参照ください。

クライアントを使用してファイルをアップロードする

クライアント側のアップロードは、サーバ側プロキシアップロードと比較して、速度を向上させ、サーバの負荷を軽減し、転送を回避できます。 OSS へのファイルのアップロードを高速化するには、クライアント側のアップロードをお勧めします。 詳細については、「クライアント側アップロード」をご参照ください。

FAQ

5 GB を超えるファイルをアップロードする方法

シンプルアップロード方式では、ファイルサイズが 5 GB に制限されています。 この制限を超えるファイルの場合は、マルチパートアップロード を使用する必要があります。

バッチアップロードを実行する方法

OSS コンソールと ossbrowser では、指定したディレクトリからのバッチアップロードが容易になりますが、ファイルフィルタリングはサポートされていません。 ファイルフィルタリング機能については、ossutil ツールをお勧めします。

  • OSS コンソールを使用する

    バケット名をクリックして目的のバケットに移動し、[ファイルのアップロード] > [フォルダスキャン] をクリックします。 アップロードするフォルダを選択し、[ファイルのアップロード] をクリックします。

  • ossbrowser を使用する

    バケットインターフェイスで、ページ上部にある [アップロード] ボタンをクリックし、ドロップダウン リストボックスから [フォルダのアップロード] を選択します。

  • ossutil ツールを使用する

    OSS にファイルをバッチアップロードするには、ossutil の cp コマンドで -r (--recursive) オプションを使用します。 詳細な手順については、「cp (ファイルをアップロードする)」をご参照ください。

    • localfolder ディレクトリから examplebucket バケットの desfolder ディレクトリにファイルをアップロードするには:

      ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/
    • 特定の条件を満たすファイルをバッチアップロードできます。

      TXT 形式のすべてのファイルをアップロードします。

      ossutil cp -r D:/localpath/localfolder/ oss://examplebucket/desfolder/ --include "*.txt"
  • ZIP パッケージ展開

    最初に展開ルールを設定することで、ZIP パッケージ展開機能を活用します。 複数のファイルを ZIP パッケージに圧縮し、OSS にアップロードし、Function Compute をトリガーして ZIP パッケージを展開し、ファイルを OSS にアップロードします。 詳細については、「ZIP パッケージ展開」をご参照ください。

サードパーティによる一時アクセス用に OSS リソースを共有する方法

OSS は、サードパーティに一時的なアクセス権を付与する方法を 2 つ提供しています。

シンプルアップロードにカスタムドメイン名を使用する方法

カスタムドメイン名を使用して SDK で OssClient を作成します。 詳細については、「手順 3: カスタムドメイン名を使用する」をご参照ください。 各言語の構成で cname パラメータが true に設定されていることを確認してください。

ファイルが誤って上書きされるのを防ぐ方法

デフォルトでは、OSS は既存のオブジェクトを同じ名前の新たにアップロードされたオブジェクトで上書きします。 誤って上書きされないようにするには、次のオプションを検討してください。

  • バージョン管理を有効にする

    バケットのバージョン管理を有効にすると、上書きされたオブジェクトが以前のバージョンとして保存され、いつでも復元できます。 詳細については、「バージョン管理の概要」をご参照ください。

  • x-oss-forbid-overwrite パラメータを使用する

    アップロードリクエストヘッダーに x-oss-forbid-overwrite パラメータを含め、true に設定します。 これにより、既存のオブジェクトと同じ名前のオブジェクトのアップロードが防止され、FileAlreadyExists エラーが返されます。 このパラメータがない場合、または false に設定されている場合、既存のオブジェクトは上書きされます。

PUT リクエスト料金を削減する方法

多数のオブジェクトをアップロードし、オブジェクトのストレージクラスをディープコールドアーカイブに設定する場合、高額な PUT リクエスト料金 が発生します。 オブジェクトをアップロードするときにオブジェクトのストレージクラスを標準に設定し、ライフサイクルルール を構成して、標準オブジェクトのストレージクラスをディープコールドアーカイブに変換することをお勧めします。 これにより、PUT リクエスト料金が削減されます。

複数のユーザーがアップロードした同じ名前 (パスを含む) のファイルを OSS がどのように保持するか

異なるユーザーによってアップロードされた同じ名前のファイルの保持は、バージョン管理 が有効になっているかどうかによって異なります。

  • バージョン管理が無効または一時停止されている場合: 同じ名前で最後にアップロードされたオブジェクトは、以前のオブジェクトを上書きするため、最新のアップロードのみが保持されます。 たとえば、ユーザー A がユーザー B の後にオブジェクトをアップロードした場合、ユーザー A のオブジェクトが保持されます。

  • バージョン管理が有効になっている場合: 同じ名前のオブジェクトをアップロードするたびに、一意のバージョン ID で識別される新しいバージョンが生成されます。 OSS は、アップロードの開始時刻に基づいてオブジェクトの最新バージョンを決定します。 たとえば、ユーザー A がユーザー B より前にアップロードを開始したが、ユーザー B のアップロードが最後に完了した場合、ユーザー B のオブジェクトが最新バージョンと見なされます。

アップロードパフォーマンスを最適化する方法

タイムスタンプや文字などの連続したプレフィックスを持つ多数のオブジェクトをアップロードすると、複数のオブジェクトインデックスが単一のパーティションに保存され、レイテンシが増加する可能性があります。 パフォーマンスを向上させるには、大量のオブジェクトをアップロードするときに、オブジェクト名にランダムなプレフィックスを使用することをお勧めします。 最適化手法については、「OSS パフォーマンスのベストプラクティス」をご参照ください。