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

Object Storage Service:オブジェクトメタデータの管理

最終更新日:Feb 23, 2024

Object Storage Service (OSS) に保存されているオブジェクトは、キー、データ、およびオブジェクトメタデータで構成されます。 オブジェクトメタデータは、オブジェクト属性を記述する。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 標準のHTTPヘッダーを使用して、キャッシュや強制ダウンロードなど、オブジェクトのHTTPリクエストポリシーを指定できます。 オブジェクトのユーザーメタデータを設定して、オブジェクトの目的または属性を識別できます。

標準HTTPヘッダー

OSSは、バケットにアップロードされた各オブジェクトの標準HTTPヘッダーを保持します。 次の表に、標準のHTTPヘッダーを示します。

標準HTTPヘッダー

説明

コンテンツタイプ

オブジェクトのコンテンツタイプ。 ブラウザは、オブジェクトのコンテンツタイプに基づいて、オブジェクトを読み取るために使用される形式とエンコードタイプを決定します。 このヘッダーが指定されていない場合、OSSはオブジェクト名の拡張子に基づいて値を割り当てます。 オブジェクト名に拡張子がない場合、デフォルト値のapplication/octet-streamがオブジェクトのコンテンツタイプとして使用されます。 オブジェクトのコンテンツタイプを指定する方法の詳細については、「content-typeヘッダーを構成する方法」を参照してください。

コンテンツエンコーディング

オブジェクトのエンコードに使用されるメソッド。 このヘッダーは、オブジェクトのエンコードタイプに基づいて指定する必要があります。 そうしないと、クライアントとして機能するブラウザがオブジェクトのエンコーディングタイプの解析に失敗するか、オブジェクトのダウンロードに失敗する可能性があります。 オブジェクトがエンコードされていない場合は、このヘッダーを空のままにします。 有効な値:

  • identity (デフォルト): OSSはオブジェクトを圧縮またはエンコードしません。

  • gzip: OSSは、LempelとZivが1977で作成したLZ77圧縮アルゴリズムと32ビットの巡回冗長検査 (CRC) を使用してオブジェクトをエンコードします。

  • compress: OSSはLempel-Ziv-Welch (LZW) 圧縮アルゴリズムを使用してオブジェクトをエンコードします。

  • deflate: OSSは、zlibライブラリとdeflateアルゴリズムを使用してオブジェクトをエンコードします。

  • br: OSSはBrotliアルゴリズムを使用してオブジェクトをエンコードします。

コンテンツエンコードの詳細については、「RFC 2616」をご参照ください。

重要

オブジェクトにアクセスするときに、HTML、JavaScript、XML、JSONオブジェクトなどの静的webページオブジェクトをGZIPオブジェクトに圧縮する場合は、このヘッダーを空のままにして、Accept-Encoding: gzipヘッダーをリクエストに追加する必要があります。

コンテンツ言語

オブジェクトコンテンツの言語。 たとえば、オブジェクトのコンテンツが簡体字中国語で記述されている場合、このヘッダーをzh-CNに設定できます。

コンテンツ処理

オブジェクトの表示に使用されるメソッド。 有効な値:

  • Content-Disposition:inline: コンテンツプレビュー用にブラウザにオブジェクトが表示されます。

  • Content-Disposition:attachment: オブジェクトは、元のオブジェクト名でブラウザの指定されたダウンロードパスにダウンロードされます。

  • Content-Disposition:attachment; filename="yourFileName": オブジェクトは、カスタムオブジェクト名でブラウザの指定されたダウンロードパスにダウンロードされます。

    yourFileNameは、ダウンロードしたオブジェクトのカスタム名 (example.jpgなど) を指定します。

ブラウザの指定されたダウンロードパスにオブジェクトをダウンロードする前に、次の項目に注意してください。

説明
  • オブジェクトの名前にアスタリスク (*) やスラッシュ (/) などの特殊文字が含まれている場合、ダウンロードしたオブジェクトの名前をエスケープできます。 たとえば、example *.jpgをローカルコンピューターにダウンロードした場合、example *.jpgexample_.jpgとしてエスケープされます。

  • オブジェクト名に漢字が含まれているオブジェクトをダウンロードしても、ファイル名に文字化けしたローカルファイルが作成されないようにするには、オブジェクト名に漢字をURLエンコードする必要があります。 例えば、ことを保障するためtest.txtOSSのオブジェクトは、元のオブジェクト名を持つローカルファイルとしてダウンロードされます。test.txtContent-Dispositionヘッダーをattachment;filename=%E6%B5%8B%E8%AF%95.txt;filename *=UTF-8 ''%E6%B5%8B%E8%AF%95.txtから派生します。"attachment;filename=" + URLEncoder.encode("テスト" 、"UTF-8")+ ".txt;filename *=UTF-8" "+ URLEncoder.encode(" テスト "、" UTF-8 ")+".txt ").

オブジェクトURLを使用してオブジェクトにアクセスするときに、オブジェクトを添付ファイルとしてプレビューまたはダウンロードするかどうかは、オブジェクトが保存されているバケットの作成時間、OSSのアクティブ化時間、およびドメイン名の種類によって決まります。 詳細については、「画像オブジェクトが添付ファイルとしてダウンロードされても、URLを使用して画像オブジェクトにアクセスするとプレビューできない場合の対処方法」をご参照ください。

キャッシュ制御

オブジェクトのキャッシュ動作。The caching behavior of the object. 有効な値:

  • no-cache: キャッシュされたコンテンツを直接使用することはできません。 オブジェクトコンテンツが更新されているかどうかを確認するには、キャッシュコンテンツをサーバーで検証する必要があります。 オブジェクトコンテンツが更新されると、キャッシュされたコンテンツは期限切れになり、オブジェクトはサーバーから再びダウンロードされます。 オブジェクトコンテンツが更新されない場合、キャッシュは期限切れにならず、オブジェクトはキャッシュから直接利用可能になります。

  • no-store: オブジェクトのすべてのコンテンツはキャッシュされません。

  • public: オブジェクトのすべてのコンテンツがキャッシュされます。

  • private: オブジェクトのすべてのコンテンツはクライアントにのみキャッシュされます。

  • max-age=<seconds>: キャッシュされたコンテンツの有効期間。 単位は秒です。 このオプションは、HTTP 1.1でのみ使用できます。

有効期限

UTCのキャッシュの有効期限。 例: 2022-10-12T00:00:00.000Z Cache-Controlヘッダーがmax-age=<seconds> に設定されている場合、max-age=<seconds> がExpiresの値よりも優先されます。

Last-Modified

オブジェクトが最後に変更された時刻。 Last-Modifiedヘッダーは、キャッシュ制御、同期、およびデータ管理のためにOSSによって自動的に更新されます。 このヘッダーの値はUTCにあり、手動で変更することはできません。 詳細については、「OSSオブジェクトのLastModified属性に影響する操作」をご参照ください。

コンテンツ長

オブジェクトのサイズ。 単位:byte。

ユーザーメタデータ

オブジェクトをアップロードするときに、ユーザーメタデータを追加して、オブジェクトの目的や属性を識別できます。

  • オブジェクトに複数のユーザーメタデータヘッダーを設定できます。 ただし、オブジェクトのユーザーメタデータの合計サイズは8 KBを超えることはできません。

  • ユーザーメタデータは、キーと値のペアのセットです。 ユーザーメタデータヘッダーの名前は、x-oss-meta- で始まる必要があります。 たとえば、x-oss-meta-last-modified:20210506は、ローカルファイルが2021年5月6日に最後に変更されたことを示します。

  • GetObject操作またはHeadObject操作を呼び出すと、オブジェクトのユーザーメタデータがHTTPヘッダーとして返されます。

手順

OSSコンソールの使用

OSSコンソールを使用して、一度に最大100個のオブジェクトのオブジェクトメタデータを設定できます。

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

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

  3. 左側のナビゲーションツリーで、ファイル > オブジェクト を選択します。

  4. 標準HTTPヘッダーとユーザーメタデータを設定します。

    • 一度に複数のオブジェクトのHTTPヘッダーを設定する

      メタデータを設定するオブジェクトを選択し、ファイルメタデータの設定 をクリックします。

    • 単一オブジェクトのHTTPヘッダーの設定

      オブジェクトリストでオブジェクトを見つけ、more > ファイルメタデータの設定を選択します。

  5. OK をクリックします。

ossbrowserの使用

ossbrowserを使用して、OSSコンソールで実行できるのと同じオブジェクトレベルの操作を実行できます。 ossbrowserの画面上の指示に従って、オブジェクトメタデータを設定できます。 ossbrowserの使用方法の詳細については、「ossbrowserの使用」をご参照ください。

OSS SDKの使用

次のサンプルコードは、一般的なプログラミング言語でOSS SDKを使用してオブジェクトメタデータを設定する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してオブジェクトメタデータを設定する方法の詳細については、「概要」をご参照ください。

Aliyun.OSSを使用した
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。impor t com.aliyun.oss.com mon.utils.BinaryUtil;
impor t com.aliyun.oss.com mon.utils.DateUtil;
com.aliyun.oss.mo del.ObjectMetadataをインポートします。java.io.ByteArrayInputStreamをインポートします。public classデモ {
    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();
        // Specify the bucket name. 例: examplebucket. 
        String bucketName = "examplebucket";
        // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: testfolder/exampleobject.txt。 
        文字列objectName = "testfolder/exampleobject.txt";
        String content = "Hello OSS";

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // アップロードされたオブジェクトのメタデータを追加します。 
            ObjectMetadata meta = new ObjectMetadata();

            String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
            // Enable MD5 verification. MD5検証が有効になると、OSSはアップロードされたオブジェクトのMD5ハッシュを計算し、このMD5ハッシュをリクエストで指定されたものと比較します。 2つの値が異なる場合、エラーが報告される。 
            meta.setContentMD5(md5);
            // アップロードするコンテンツの種類を指定します。 ブラウザは、オブジェクトのコンテンツタイプに基づいて、オブジェクトを読み取るために使用される形式とエンコードタイプを決定します。 コンテンツタイプが指定されていない場合、オブジェクト名拡張子に基づいてコンテンツタイプが生成されます。 利用可能な拡張がない場合、デフォルト値application/octet-streamがコンテンツタイプとして使用されます。 
            meta.setContentType("text/plain");
            // コンテンツのダウンロード時にオブジェクトの名前を指定します。 
            meta.setContentDisposition("attachment; filename=\"DownloadFilename\"");
            // アップロードするオブジェクトの長さを指定します。 実際のオブジェクトの長さが指定された長さより大きい場合、オブジェクトは切り捨てられます。 指定された長さのコンテンツのみがアップロードされます。 実際のオブジェクトの長さが指定された長さより小さい場合、オブジェクトのすべてのコンテンツがアップロードされます。 
            meta.setContentLength(content.length());
            // コンテンツのダウンロード時のwebページのキャッシュ動作を指定します。 
            meta.setCacheControl("Download Action");
            // キャッシュの有効期限をUTCで指定します。 
            meta.setExpirationTime(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            // コンテンツのダウンロード時のコンテンツエンコーディング形式を指定します。 
            meta.setContentEncoding("gzip");
            // HTTPヘッダーを設定します。 
            meta.setHeader("yourHeader", "yourHeaderValue");

            // Upload the object. 
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()), meta);
        } catch (Exception e) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "しかし、何らかの理由でエラー応答で拒否されました。");
            System.out.println("エラーメッセージ:" + oe.getErrorMessage());
            System.out.println("エラーコード:" + oe.getErrorCode());
            System.out.println("リクエストID:" + oe.getRequestId());
            System.out.println("ホストID:" + oe.getHostId());
        } catch (ClientException e) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + 「ネットワークにアクセスできないなど」;
            System.out.println("エラーメッセージ:" + ce.getMessage());
        } 最後に{
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
} 
<?php
if (is_file(__DIR__) 。 '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__) 。 '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。  
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
$end point = "yourEndpoint";
// バケット名を指定します。 例: examplebucket. 
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
$object = "exampledir/exampleobject.txt";
$content = file_get_contents(__FILE__);
$options=配列 (
    OssClient::OSS_HEADERS => array(
        'Expires' => '2012-10-01 08:00:00',
        'Content-Disposition' => 'attachment; filename="xxxxxx"',
        'x-oss-meta-self-define-title' => 'user define meta info',
    ));
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    // オブジェクトのアップロード時にオブジェクトメタデータを設定します。 
    $ossClient->putObject($bucket、$object、$content、$options);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage()) 。 "\n");
    戻ります。}
print(__FUNCTION__) 。 ": OK" 。 "\n");
            
const OSS = require('ali-OSS ');

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  リージョン: 'yourRegion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'examplebucket'
});

async関数put() {
  try {
    meta = { year: 2016, people: 'mary' };
    let result = await client.put('object-name', path.normalize('D :\\ localpath\\examplefile.txt '), meta);
  console.log (結果);
  } catch (e) {
    console.log(e);
  }
}

put();
# -*- coding: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。 
object_name = 'exampledir/exampleobject.txt'
# アップロードする文字列を指定します。 
content = '{"age": 1}'
# HTTPヘッダーを設定します。 たとえば、Content-Typeヘッダーを 'application/json; charset=utf-8 'に設定します。 
bucket.put_object(object_name, content, headers={'Content-Type': 'application/json; charset=utf-8 '}) 
;
Aliyun.OSS.Common; を使用
Aliyun.OSS.Utilを使用します。// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 
var objectName = "exampleobject.txt";
// アップロードするローカルオブジェクトのフルパスを指定します。 デフォルトでは、ローカルオブジェクトのフルパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルオブジェクトがアップロードされます。 
var localFilename = "D :\\ localpath\\examplefile.txt";
// OSSClientインスタンスを作成します。 
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
    using (var fs = File.Open(localFilename, FileMode.Open))
    {
        // オブジェクトのメタデータを作成します。 オブジェクトのHTTPヘッダーを設定できます。 
        var metadata = new ObjectMetadata()
        {
            // オブジェクトのコンテンツタイプを指定します。 
            ContentType = "text/html",
            // キャッシュの有効期限をUTCで指定します。 
            ExpirationTime = DateTime.Parse("2025-10-12T00:00:00.000Z"),
        };
        // アップロードするオブジェクトコンテンツの長さを指定します。 実際のオブジェクトの長さが指定された長さより大きい場合、オブジェクトは切り捨てられます。 指定された長さのコンテンツのみがアップロードされます。 実際のオブジェクトの長さが指定された長さより小さい場合、オブジェクトのすべてのコンテンツがアップロードされます。 
        metadata.ContentLength = fs.Length;
        // オブジェクトのダウンロード時のwebページのキャッシュ動作を指定します。 
        metadata.CacheControl = "No-Cache";
        // mykey1をmyval1に設定します。 
        metadata.UserMetadata.Add("mykey1", "myval1");
        // mykey2をmyval2に設定します。 
        metadata.UserMetadata.Add("mykey2", "myval2");
        var saveAsFilename = "Filetest123.txt";
        var contentDisposition = string.Format("attachment;filename*=utf-8''{0}", HttpUtils.EncodeUri(saveAsFilename, "utf-8"));
        // 必要なコンテンツをオブジェクトとして保存するときに、デフォルトのオブジェクト名を指定します。 
        metadata.ContentDisposition = contentDisposition;
        // オブジェクトをアップロードし、オブジェクトメタデータを設定します。 
        client.PutObject(bucketName, objectName, fs, metadata);
        Console.WriteLine("Put object succeeded");
        // オブジェクトのメタデータを照会します。 
        var oldMeta = client.GetObjectMetadata(bucketName, objectName);
        // 新しいオブジェクトメタデータを設定します。 
        var newMeta = new ObjectMetadata()
        {
            ContentType = "application/octet-stream",
            ExpirationTime = DateTime.Parse("2035-11-11T00:00:00.000Z"),
            // オブジェクトのダウンロード時のオブジェクトのコンテンツエンコーディング形式を指定します。 
            ContentEncoding = null,
            CacheControl = ""
        };
        // ユーザーメタデータを設定します。 
        newMeta.UserMetadata.Add("author", "oss");
        newMeta.UserMetadata.Add("flag", "my-flag");
        newMeta.UserMetadata.Add("mykey2", "myval2-modified-value");
        // ModifyObjectMetaメソッドを使用して、オブジェクトメタデータを変更します。 
        client.ModifyObjectMeta(bucketName, objectName, newMeta);
    }
}
キャッチ (例外ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
} 
// オブジェクトメタデータを同期クエリするリクエストを作成します。 
// バケットの名前とオブジェクトの完全パスを指定します。 この例では、バケット名はexamplebucketで、オブジェクトの完全パスはexampledir/exampleobject.txtです。 オブジェクトのフルパスにバケット名を含めないでください。 
HeadObjectRequest head = new HeadObjectRequest("examplebucket", "exampledir/exampleobject.txt");

// オブジェクトメタデータを照会します。 
OSSAsyncTask task = oss.asyncHeadObject(head, new OSSCompletedCallback<HeadObjectRequest, HeadObjectResult>() {
    @オーバーライド
    public void onSuccess(HeadObjectRequestリクエスト, HeadObjectResult結果) {
    
    // オブジェクトの長さを取得します。 
        Log.d("headObject", "object Size: " + result.getMetadata().getContentLength()); 
    // オブジェクトの型を照会します。 
        Log.d("headObject", "object Content Type: " + result.getMetadata().getContentType()); 
    }

    @オーバーライド
    public void onFailure(HeadObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // リクエスト例外を処理します。 
        if (clientExcepion != null) {
            // ネットワーク例外などのクライアント例外を処理します。 
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // サービス例外を処理します。 
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

// task.waitUntilFinished(); // オブジェクトメタデータが照会されるまで待ちます。
パッケージメイン

import (import (import)
    "fmt"
    "os"
    "time",
    "strings"
    「github.com/aliyun/aliyun-oss-go-sdk/oss」
)

func main() {
    // 環境変数からアクセス資格情報を取得します。 コードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) 
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Specify the bucket name. 例: examplebucket. 
    bucket, err := client.Bucket("examplebucket")
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // オブジェクトメタデータを設定します。 有効期限を1月10日23:00:00に設定し、GMTで2049し、アクセス制御リスト (ACL) をpublic-readに、MyPropをユーザーメタデータとしてMyPropValに設定します。 
    expires := time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
    options := []oss.Option{
        oss.Expires(expires),
        oss.ObjectACL(oss.ACLPublicRead),
        oss.Meta("MyProp", "MyPropVal"),
    }

    // データストリームを使用してオブジェクトをアップロードします。 
    // オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めることはできません。 例: exampledir/exampleobject.txt。 
    err = bucket.PutObject("exampledir/exampleobject.txt" 、strings.NewReader("MyObjectValue") 、オプション...)
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // オブジェクトのメタデータを照会します。 
    props, err := bucket.GetObjectDetailedMeta("exampledir/exampleobject.txt")
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("オブジェクトメタ:", props)
} 
OSSHeadObjectRequest * request = [OSSHeadObjectRequest new];
// バケット名を指定します。 例: examplebucket. 
request.bucketName = @ "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
request.objectKey = @ "exampledir/exampleobject.txt";

OSSTask * headTask = [client headObject:request];

[headTask continueWithBlock:^ id(OSSTask * task) {
    if (!task.error) {
        NSLog(@ "ヘッドオブジェクトの成功!");
        OSSHeadObjectResult * result = task.result;
        NSLog(@ "ヘッダーフィールド: % @" 、result.httpResponseHeaderFields);
        for (NSString * key in result.objectMeta) {
            NSLog(@ "ObjectMeta: % @ - % @", key, [result.objectMeta objectForKey:key]);
        }
    } else {
        NSLog(@ "head object failed, error: % @" ,task.error);
    }
    nilを返します。}]; 
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{

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

    /* ネットワークリソースなどのリソースを初期化します。 */
    InitializeSdk();
  
    ClientConfiguration conf;
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClientクライアント (Endpoint, credentialsProvider, conf);

    /* HTTPヘッダーを設定します。 */
    auto meta = ObjectMetaData();
    meta.setContentType("text/plain");
    meta.setCacheControl("max-age=3");
    /* オブジェクトのユーザーメタデータを設定します。 */
    meta.UserMetaData()["meta"] = "meta-value";

    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    * content << "Aliyun Object Storage Serviceをご利用いただきありがとうございます!";
    auto outcome = client.PutObject(BucketName, ObjectName, content, meta);

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

    /* ネットワークリソースなどのリソースをリリースします。 */
    ShutdownSdk();
    0を返します。} 
#include "oss_api.h"
# 「aos_http_io.h」を含める
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 * /
const char * endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket. * /
const char * bucket_name = "examplebucket";
/* オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。 * /
const char * object_name = "exampledir/exampleobject.txt";
const char * object_content= "hello world";
void init_options(oss_request_options_t * オプション)
{
    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"));
    /* 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);
    /* Create and initialize options. このパラメーターには、エンドポイント、access_key_id、access_key_secret、is_cname、curlなどのグローバル構成情報を指定します。 */
    oss_request_options_t *oss_client_options;
    /* メモリプール内のメモリリソースをオプションに割り当てます。 */
    oss_client_options = oss_request_options_create(pool);
    /* oss_client_optionsを初期化します。 */
    init_options(oss_client_options);
    /* パラメーターを初期化します。 */
    aos_string_t bucket;
    aos_string_t object;
    aos_table_t *headers;
    aos_list_t buffer;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_buf_t *content = NULL;
    char *content_length_str = NULL;
    char *object_type = NULL;
    char *object_author = NULL;
    int64_t content_length = 0;
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    headers = aos_table_make(pool, 2);
    /* ユーザーメタデータを設定します。 */
    apr_table_set(headers, "Expires", "Fri, 28 Feb 2032 05:38:42 GMT"); 
    apr_table_set(headers, "x-oss-meta-author", "oss");
    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 with md5 succeeded\n");
    } else {
        printf("put object from buffer with md5 failed\n");
    }
    /* オブジェクトのメタデータを照会します。 */
    resp_status = oss_get_object_meta(oss_client_options, &bucket, &object, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        content_length_str = (char*)apr_table_get(resp_headers, OSS_CONTENT_LENGTH);
        if (content_length_str != NULL) {
            content_length = atol(content_length_str);
        }
        object_author = (char*)apr_table_get(resp_headers, OSS_AUTHORIZATION);
        object_type = (char*)apr_table_get(resp_headers, OSS_OBJECT_TYPE);
        printf("get object meta succeeded, object author:%s, object type:%s, content_length:%ld\n", object_author, object_type, content_length);
    } else {
        printf("req:%s, get object meta failed\n", resp_status->req_id);
    }
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(pool);
    /* 割り当てられたグローバルリソースを解放します。 */
    aos_http_io_deinitialize();
    0を返します。} 
'aliyun/oss' が必要です
client = Aliyun::OSS::Client.new (
  # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
  エンドポイント: '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 (
  'my-object-1 '、
  : file => 'local-file' 、
  : metas => {'year' => '2016', 'people' => 'mary'})

# 追加アップロード時にオブジェクトメタデータを設定します。 
bucket.append_object (
  'my-object-2 '、0、
  : file => 'local-file' 、
  : metas => {'year' => '2016', 'people' => 'mary'})

# 再開可能なアップロード中にオブジェクトメタデータを設定します。 
bucket.resumable_upload (
  「私のオブジェクト」、
  「ローカルファイル」、
  : metas => {'year' => '2016', 'people' => 'mary'}) 

ossutilの使用

ossutilを使用して、オブジェクトメタデータを設定できます。 詳細については、「set-meta (オブジェクトメタデータの管理) 」をご参照ください。

OSS APIの使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳細は、「PutObject」をご参照ください。