クライアント、特にトラフィックスロットリングの実行が困難なクライアントを使用してObject Storage Service (OSS) 内のオブジェクトにアクセスすると、大量の帯域幅が占有される可能性があります。 これは、OSSにアクセスする他のアプリケーションに影響します。 この問題を防ぐには、シングル接続帯域幅調整機能を使用して、オブジェクトのアップロードやダウンロードなどの操作の帯域幅を調整します。 これにより、OSSにアクセスする他のアプリケーション用に十分な帯域幅を確保できます。
使用上の注意
PutObject、AppendObject、PostObject、CopyObject、UploadPart、UploadPartCopy、GetObjectなどの操作を呼び出すときに、リクエストにx-oss-traffic-limitパラメーターを含めて帯域幅調整を設定できます。 有効な値: 819200〜838860800。 単位:bit/s。
クライアント要求に対する帯域幅調整の実行
クライアントから開始されるリクエストを抑制するには、SDKのみを使用できます。 次のコードは、一般的なプログラミング言語のOSS SDKを使用して、クライアントから開始されるアップロードまたはダウンロード要求を抑制する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用して、クライアントから開始されたアップロードまたはダウンロード要求を抑制する方法の詳細については、「概要」をご参照ください。
簡単なアップロードとダウンロードのための帯域幅調整の設定
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo del.GetObjectRequestをインポートします。com.aliyun.oss.mo del.PutObjectRequestをインポートします。java.io. ファイルをインポートします。java.io.FileInputStreamをインポートします。java.io.InputStreamをインポートします。public classデモ {
public static void main(String[] args) Throwable {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
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。
文字列objectName = "exampledir/exampleobject.txt";
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
// ローカルファイルのパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
文字列localFileName = "D :\\ localpath\\examplefile.txt";
// オブジェクトをダウンロードするフルパスを指定します。 同じ名前のファイルが既に存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 それ以外の場合、ダウンロードされたオブジェクトはパスに保存されます。
// ダウンロードしたオブジェクトのパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのパスに保存されます。
String downLoadFileName = "D :\\ localpath\\exampleobject.txt";
// 帯域幅制限を100 KB/sに設定します。
int limitSpeed = 100*1024*8;
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// オブジェクトのアップロードの帯域幅調整を設定します。
InputStream inputStream=新しいFileInputStream(localFileName);
PutObjectRequest=新しいPutObjectRequest(bucketName, objectName, inputStream);
PutObjectRequest.setTrafficLimit(limitSpeed);
ossClient.putObject(PutObjectRequest);
// オブジェクトダウンロードの帯域幅調整を設定します。
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
getObjectRequest.setTrafficLimit(limitSpeed);
ファイルlocalFile=新しいファイル (downLoadFileName);
ossClient.getObject(getObjectRequest, localFile);
} 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 = "hello world";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point, false);
// 帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに等しくなります。
$options = array(
OssClient::OSS_HEADERS => array(
OssClient::OSS_TRAFFIC_LIMIT => 819200、));
try {
// オブジェクトのアップロードの帯域幅調整を設定します。
$ossClient->putObject($bucket, $object, $content, $options);
// オブジェクトダウンロードの帯域幅調整を設定します。
$ossClient->getObject($bucket、$object、$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に設定します。
region: 'yourregion' 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// リクエストヘッダーを使用して制限速度を設定します。
const headers = {
// 最小帯域幅を100 KB/sに設定します。
'x-oss-traffic-limit': 8*1024*100
}
// アップロードするオブジェクトの帯域幅調整を設定します。
async関数put() {
// オブジェクトのパスを指定します。
const filePath = 'D :\\ localpath\\examplefile.txt ';
// オブジェクトのファイルストリームを作成します。
const fileStream = fs.createReadStream(filePath);
const result = await client.putStream('file-name', fileStream, {
// リクエストヘッダーを適切に設定します。
ヘッダー、
// デフォルトのタイムアウト期間を60000に設定します。 単位:ミリ秒。 オブジェクトのアップロード期間がタイムアウト期間を超えると、例外がスローされます。 オブジェクトのアップロードの帯域幅調整を設定するときは、タイムアウト期間を変更します。
timeout: 60000
});
console.log (結果);
}
put()
// ダウンロードするオブジェクトの帯域幅調整を設定します。
async関数get() {
const result = await client.get('file name ', {
ヘッダー、
// デフォルトのタイムアウト期間を60000に設定します。 単位:ミリ秒。 オブジェクトのダウンロード期間がタイムアウト期間を超えると、例外がスローされます。 オブジェクトダウンロードの帯域幅調整を設定するときは、タイムアウト期間を変更します。
timeout: 60000
})
console.log (結果)
}
get()
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからOSS_TRAFFIC_LIMITをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
object_name = 'exampledir/exampleobject.txt'
# アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 デフォルトでは、ローカルファイルのパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
local_file_name = 'D :\\ localpath\\examplefile.txt'
# オブジェクトをダウンロードするローカルパスを指定します。 同じ名前のファイルが既に存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 同じ名前のファイルが存在しない場合、ダウンロードしたオブジェクトはパスに保存されます。
# ダウンロードしたオブジェクトのパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのパスに保存されます。
down_file_name = 'D :\\ localpath\\exampleobject.txt'
# headersパラメーターを設定して、帯域幅制限を100 KB/s (819,200 bit/s) に設定します。
limit_speed = (100*1024*8)
headers = dict()
ヘッダー [OSS_TRAFFIC_LIMIT] = str(limit_speed);
# オブジェクトのアップロードの帯域幅調整を設定します。
result = bucket.put_object_from_file(object_name, local_file_name, headers=headers)
print('http response status:', result.status)
# オブジェクトダウンロードの帯域幅調整を設定します。
result = bucket.get_object_to_file(object_name, down_file_name, headers=headers)
System.Textを使用した
Aliyun.OSSを使用します。// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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 objectContent = "単なるクラウドではありません。";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
MemoryStream requestContent = new MemoryStream(binaryData);
// オブジェクトのアップロードの帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに相当します。
var putRequest = new PutObjectRequest(bucketName、objectName、requestContent)
{
TrafficLimit = 100*1024*8
};
client.PutObject(putRequest);
Console.WriteLine("Put object succeeded");
// オブジェクトダウンロードの帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに相当します。
var getRequest = new GetObjectRequest(bucketName, objectName)
{
TrafficLimit = 100*1024*8
};
var getResult = client.GetObject(getRequest);
Console.WriteLine("Get object successed");
}
キャッチ (例外ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}
の印刷 ('http response status:', result.status)
パッケージメイン
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。 例: examplebucket.
bucket, err := client.Bucket("examplebucket")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
// ローカルファイルのパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
fd, err := os.Open("D :\\ localpath\\examplefile.txt")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer fd. 閉じる ()
// アップロードの帯域幅制限を指定します。 The value of the parameter must be a number. デフォルトの単位: bit/s。 この例では、帯域幅制限は5メガバイト/秒に設定されています。
varトラフィックint64 = 41943040
// オブジェクトのアップロードの帯域幅調整を設定します。
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
err = bucket.PutObject("exampledir/exampleobject.txt", fd, oss.TrafficLimitHeader(traffic))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// オブジェクトダウンロードの帯域幅調整を設定します。
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 次に、ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\exampleobject.txt。
err = bucket.GetObjectToFile("exampledir/exampleobject.txt", "D :\\ localpath\\exampleobject.txt", oss.TrafficLimitHeader (トラフィック))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
#include <alibabacloud/oss/OssClient.h>
# include <fstream>
名前空間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);
/* オブジェクトをアップロードします。 */
std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("yourLocalFilename", std::ios::in | std::ios::binary);
PutObjectRequest putrequest(BucketName, ObjectName,content);
/* オブジェクトをアップロードする最大速度を100 KB/sに設定します。 */
putrequest.setTrafficLimit(819200);
auto putoutcome = client.PutObject(putrequest);
/* オブジェクトをローカルメモリにダウンロードします。 */
GetObjectRequest getrequest(BucketName, ObjectName);
/* オブジェクトをダウンロードする最大速度を100 KB/sに設定します。 */
getrequest.setTrafficLimit(819200);
auto getoutcome = client.GetObject(getrequest);
/* ネットワークリソースなどのリソースをリリースします。 */
ShutdownSdk();
0を返します。}
マルチパートアップロードの帯域幅調整の設定
com.aliyun.oss.mo delをインポートします。*;
java.io. ファイルをインポートします。java.io.FileInputStreamをインポートします。java.io.InputStreamをインポートします。java.util.ArrayListをインポートします。java.util.Listをインポートします。パブリッククラスDemoApi2 {
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。 バケット名をフルパスに含めないでください。
文字列objectName = "exampledir/exampleobject.txt";
// 帯域幅制限を100 KB/sに設定します。
int limitSpeed = 100*1024*8;
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// InitiateMultipartUploadRequestオブジェクトを作成します。
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);
// マルチパートアップロードタスクを初期化します。
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
// マルチパートアップロードタスクを一意に識別するアップロードIDを取得します。 アップロードIDを使用して、マルチパートアップロードタスクのキャンセルやクエリなどの関連操作を実行できます。
String uploadId = upresult.getUploadId();
// partETagsはPartETagsのセットです。 PartETagは、アップロードされた部品の部品番号とETagで構成されます。
List<PartETag> partETags = new ArrayList<PartETag>();
// 各パーツのサイズを指定します。これは、オブジェクトのパーツ数の計算に使用されます。 単位:バイト
final long partSize = 1*1024 * 1024L; // パーツサイズを1 MBに設定します。
// アップロードするローカルファイルのフルパスを指定します。 デフォルトでは、ローカルファイルのフルパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
final File sampleFile = newファイル ("D :\\ localpath\\examplefile.txt");
long fileLength = sampleFile.length();
int partCount = (int) (fileLength / partSize);
if (fileLength % partSize != 0) {
partCount++;
}
// すべての部品をアップロードします。
for (int i = 0; i <recordCount; i ++ ) {
long startPos = i * partSize;
long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
InputStream instream = new FileInputStream(sampleFile);
// アップロードされたパーツをスキップします。
instream.skip(startPos);
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(bucketName);
uploadPartRequest.setKey(objectName);
uploadPartRequest.setUploadId(uploadId);
uploadPartRequest.setInputStream(instream);
// 各パーツのサイズを指定します。 最後の部分を除く各部分は100 KB以上でなければなりません。
uploadPartRequest.setPartSize(curPartSize);
// 部品番号を指定します。 各部品は部品番号を有する。 数は1から10000の範囲です。 指定された数値が範囲を超えている場合、OSSはInvalidArgumentエラーコードを返します。
uploadPartRequest.setPartNumber( i + 1);
// 帯域幅の制限を指定します。
uploadPartRequest.setTrafficLimit(limitSpeed);
// 部品は必ずしも順番にアップロードされません。 さまざまなOSSクライアントからアップロードできます。 OSSは部品番号に基づいて部品をソートし、それらを結合して完全なオブジェクトにします。
UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
// パーツがアップロードされるたびに、PartETagを含む結果が返されます。 PartETagsはpartETagsに格納されます。
partETags.add(uploadPartResult.getPartETag());
}
// CompleteMultipartUploadRequestオブジェクトを作成します。
// CompleteMultipartUpload操作を呼び出すときは、すべての有効なPartETagsを指定する必要があります。 OSSがPartETagsを受信すると、OSSはすべてのパーツを1つずつ検証します。 すべての部品が検証された後、OSSはこれらの部品を完全なオブジェクトに結合します。
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);
// マルチパートアップロードタスクを完了します。
CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
System.out.println(completeMultipartUploadResult.getETag());
} 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\Core\OssUtilを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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";
// ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 デフォルトでは、ローカルファイルのフルパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
$uploadFile = "D :\\ localpath\\examplefile.txt";
/**
* ステップ1。 マルチパートアップロードタスクを開始し、アップロードIDを取得します。
* /
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// アップロードIDを取得します。 アップロードIDは、マルチパートアップロードタスクの一意の識別子です。 アップロードIDに基づいて、マルチパートアップロードタスクのキャンセルやクエリなどの関連操作を実行できます。
$uploadId = $ossClient->initiateMultipartUpload($bucket, $object);
} catch(OssException $e) {
printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n");
printf($e->getMessage()) 。 "\n");
戻ります。}
print(__FUNCTION__) 。 ": initiateMultipartUpload OK" 。 "\n");
/*
* ステップ2: パーツをアップロードします。
* /
$partSize = 10*1024*1024;
$uploadFileSize = filesize($uploadFile);
$pieces = $ossClient->generateMultiuploadParts($uploadFileSize、$partSize);
$responseUploadPart = array();
$uploadPosition = 0;
$isCheckMd5 = true;
foreach ($i => $pieceとして $pieces) {
$fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO];
$toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1;
$upOptions = array(
// ローカルファイルをアップロードします。
$ossClient::OSS_FILE_UPLOAD => $uploadFile,
// 部品番号を指定します。
$ossClient::OSS_PART_NUM => ($i + 1),
// マルチパートアップロードタスクの開始位置を指定します。
$ossClient::OSS_SEEK_TO => $fromPos,
// オブジェクトの長さを指定します。
$ossClient::OSS_LENGTH => $toPos - $fromPos + 1,
// MD5検証を有効にするかどうかを指定します。 trueの値は、MD5検証が有効になっていることを示します。
$ossClient::OSS_CHECK_MD5 => $isCheckMd5,
// 帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに等しくなります。
$options = array(
OssClient::OSS_HEADERS => array(
OssClient::OSS_TRAFFIC_LIMIT => 819200、
))
);
// Enable MD5 verification.
if ($isCheckMd5) {
$contentMd5 = OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos);
$upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5;
}
try {
// Upload the parts.
$responseUploadPart[] = $ossClient->uploadPart($bucket, $object, $uploadId, $upOptions);
} catch(OssException $e) {
printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part #{$ i} FAILED\n");
printf($e->getMessage()) 。 "\n");
return;
}
printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part #{$ i} OK\n");
}
// $uploadPartsパラメーターは、各パーツのETagパラメーターとPartNumberパラメーターで構成される配列です。
$uploadParts = array();
foreach ($responseUploadPart as $i => $eTag) {
$uploadParts[] = array(
'PartNumber' => ($i + 1),
'ETag' => $eTag,
);
}
/**
* ステップ3: マルチパートアップロードタスクを完了します。
* /
try {
// CompleteMultipartUpload操作には、$uploadPartsパラメーターのすべての有効な値が必要です。 OSSが $uploadPartsパラメーターの値を受け取ると、OSSはすべてのパーツを1つずつ検証します。 すべての部品が検証された後、OSSはこれらの部品を完全なオブジェクトに結合します。
$ossClient->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts);
} catch(OssException $e) {
printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n");
printf($e->getMessage()) 。 "\n");
return;
}
printf(__FUNCTION__ . ": completeMultipartUpload OK\n");
# -*-コーディング: utf-8 -*-
osのインポート
oss2インポートSizedFileAdapterから、determine_part_size
oss2.headersからOSS_TRAFFIC_LIMITをインポート
oss2.modelsからPartInfoをインポート
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めることはできません。 例: exampledir/exampleobject.txt。
key = 'exampledir/exampleobject.txt'
# アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
filename = 'D :\\ localpath\\examplefile.txt'
total_size = os.path.getsize (ファイル名)
# determine_part_sizeメソッドを使用して、部品サイズを決定します。
part_size = determine_part_size(total_size, preferred_size=100*1024)
# マルチパートアップロードタスクを開始します。
upload_id = bucket.init_multipart_upload(key).upload_id
parts = []
# headersパラメーターを設定して、帯域幅制限を100 KB/s (819,200 bit/s) に設定します。
limit_speed = (100*1024*8)
headers = dict()
ヘッダー [OSS_TRAFFIC_LIMIT] = str(limit_speed);
# パーツを1つずつアップロードします。
with open(filename, 'rb') as fileobj:
part_number = 1
offset = 0
while offset < total_size:
num_to_upload = min(part_size, total_size - offset)
# SizedFileAdapter(fileobj, size) メソッドを呼び出して、新しいオブジェクトを生成し、追加操作の開始位置を再計算します。
result = bucket.upload_part(key, upload_id, part_number,
SizedFileAdapter(fileobj, num_to_upload), headers=headers)
parts.append(PartInfo(part_number, result.etag))
offset += num_to_upload
part_number += 1
# マルチパートアップロードタスクを完了します。
# 次のコードは、マルチパートアップロードタスクを完了するときにヘッダーを設定する方法の例を示しています。headers = dict()
# オブジェクトのアクセス制御リスト (ACL) を指定します。 この例では、このパラメーターはOBJECT_ACL_PRIVATEに設定され、オブジェクトのACLがプライベートであることを示します。
# headers["x-oss-object-acl"] = oss2.OBJECT_ACL_PRIVATE
bucket.com plete_multipart_upload(key, upload_id, parts, headers=headers)
# bucket.com plete_multipart_upload(key, upload_id, parts)
# マルチパートアップロードタスクの結果を確認します。
with open(filename, 'rb') as fileobj:
assert bucket.get_object(key).read() == fileobj.read()
package main
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
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)
}
// バケットの名前を指定します。 例: examplebucket.
bucket, err := client.Bucket("examplebucket")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// アップロードの帯域幅制限を指定します。 The value of the parameter must be a number. デフォルトの単位: bit/s。 この例では、帯域幅制限は5メガバイト/秒に設定されています。
var traffic int64 = 41943040
// マルチパートアップロードを使用してラージオブジェクトをアップロードします。
// You can split an object into multiple parts based on the object size. この例では、オブジェクトは3つの部分に分割されます。
chunks, err := oss.SplitFileByPartNum("localFile", 3)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Open the object.
fd, err := os.Open("fileName")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer fd.Close()
// オブジェクトのマルチパートアップロードタスクを開始します。
imur, err := bucket.InitiateMultipartUpload("exampledir/exampleobject.txt")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// パーツをアップロードし、帯域幅調整を設定します。
var parts []oss.UploadPart
for _, chunk := range chunks {
fd.Seek(chunk.Offset, os.SEEK_SET)
part, err := bucket.UploadPart(imur, fd, chunk.Size, chunk.Number, oss.TrafficLimitHeader(traffic))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
parts = append(parts, part)
}
// アップロードを完了します。
_, err = bucket.CompleteMultipartUpload(imur, parts)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
オブジェクトURLを使用して帯域幅調整を実装する
public-readまたはpublic-read-writeオブジェクトの場合、帯域幅スロットリングを実装するには、オブジェクトURLの後に帯域幅スロットリングパラメーターx-oss-traffic-limit=<value>
を追加するだけです。 たとえば、https://examplebucket.oss-cn-hangzhou.aliyuncs.com/video.mp4?x-oss-traffic-limit=819200
では、video.mp4オブジェクトのダウンロード上限を100 KB/sと指定します。 次の図は、帯域幅調整の効果を示しています。
署名付きURLを使用して帯域幅調整を実行する
プライベートオブジェクトで帯域幅調整を実行するには、SDKを使用して署名付きURLを生成するときに、帯域幅調整パラメーターを署名に追加する必要があります。 次のコードは、一般的なプログラミング言語のOSS SDKを使用して、帯域幅調整パラメーターを署名付きURLに追加する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用して、帯域幅調整パラメーターを署名付きURLに追加する方法の詳細については、「概要」をご参照ください。
System.Textを使用した
com.aliyun.oss.*;
impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.mo del.GeneratePresignedUrlRequestをインポートします。com.aliyun.oss.mo del.GetObjectRequestをインポートします。java.io. ファイルをインポートします。java.io.FileInputStreamをインポートします。java.io.InputStreamをインポートします。impor t java.net.URL;
java.util.Dateをインポートします。public classデモ {
public static void main(String[] args) Throwable {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
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。
文字列objectName = "exampledir/exampleobject.txt";
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
// ローカルファイルのパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
文字列localFileName = "D :\\ localpath\\examplefile.txt";
// オブジェクトをダウンロードするフルパスを指定します。 同じ名前のファイルが既に存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 それ以外の場合、ダウンロードされたオブジェクトはパスに保存されます。
// ダウンロードしたオブジェクトのパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのパスに保存されます。
String downLoadFileName = "D :\\ localpath\\exampleobject.txt";
// 帯域幅制限を100 KB/sに設定します。
int limitSpeed = 100*1024*8;
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// オブジェクトアップロードの帯域幅調整パラメーターを含む署名付きURLを生成し、URLの有効期間を60秒に設定します。
Date date = new Date();
date.setTime(date.getTime() + 60*1000);
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.PUT);
request.setExpiration (日付);
request.setTrafficLimit(limitSpeed);
URL signedUrl = ossClient.generatePresignedUrl(request);
System.out.println("put object url" + signedUrl);
// オブジェクトのアップロードの帯域幅調整を設定します。
InputStream inputStream=新しいFileInputStream(localFileName);
ossClient.putObject(signedUrl, inputStream, -1, null, true);
// オブジェクトダウンロードの帯域幅調整パラメーターを含む署名付きURLを生成し、URLの有効期間を60秒に設定します。
date = new日付 ();
date.setTime(date.getTime() + 60*1000);
request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
request.setExpiration (日付);
request.setTrafficLimit(limitSpeed);
signedUrl = ossClient.generatePresignedUrl (要求);
System.out.println("get object url" + signedUrl);
// オブジェクトダウンロードの帯域幅調整を設定します。
GetObjectRequest getObjectRequest = new GetObjectRequest(signedUrl、null);
ossClient.getObject(getObjectRequest, new File(downLoadFileName));
} 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";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point, false);
// 帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに等しくなります。
$options = array(
OssClient::OSS_TRAFFIC_LIMIT => 819200、);
// シングル接続帯域幅スロットリングが設定されたオブジェクトアップロード用の署名付きURLを生成し、URLの有効期間を60秒に設定します。
$timeout = 60;
$signedUrl = $ossClient->signUrl($bucket、$object、$timeout、"PUT" 、$options);
プリント ($signedUrl);
// シングル接続帯域幅スロットリングが設定されたオブジェクトダウンロード用の署名付きURLを生成し、URLの有効期間を120秒に設定します。
$timeout = 120;
$signedUrl = $ossClient->signUrl($bucket、$object、$timeout、"GET" 、$options);
print($signedUrl);
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからOSS_TRAFFIC_LIMITをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
object_name = 'exampledir/exampleobject.txt'
# アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 デフォルトでは、ローカルファイルのパスを指定しない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
local_file_name = 'D :\\ localpath\\examplefile.txt'
# オブジェクトをダウンロードするローカルパスを指定します。 同じ名前のファイルが既に存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 同じ名前のファイルが存在しない場合、ダウンロードしたオブジェクトはパスに保存されます。
# ダウンロードしたオブジェクトのパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのパスに保存されます。
down_file_name = 'D :\\ localpath\\exampleobject.txt'
# paramsパラメーターを設定して、帯域幅制限を100 KB/s (819,200ビット /s) に設定します。
limit_speed = (100*1024*8)
params = dict()
params[OSS_TRAFFIC_LIMIT] = str(limit_speed);
# オブジェクトアップロードの帯域幅調整パラメーターを含む署名付きURLを生成し、URLの有効期間を60秒に設定します。
url = bucket.sign_url('PUT', object_name, 60, params=params)
print('put object url:', url)
# オブジェクトのアップロードの帯域幅調整を設定します。
result = bucket.put_object_with_url_from_file(url, local_file_name)
print('http response status:', result.status)
# オブジェクトダウンロードの帯域幅調整パラメーターを含む署名付きURLを生成し、URLの有効期間を60秒に設定します。
url = bucket.sign_url('GET', object_name, 60, params=params)
print('get object url:'、url)
# オブジェクトダウンロードの帯域幅調整を設定します。
result = bucket.get_object_with_url_to_file(url, down_file_name)
print('http response status:', result.status)
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。 例: examplebucket.
bucket, err := client.Bucket("examplebucket")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 署名付きURLを使用してオブジェクトをアップロードします。
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\exampleobject.txt。
fd, err := os.Open("D :\\ localpath\\exampleobject.txt")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer fd. 閉じる ()
// アップロードの帯域幅制限を指定します。 The value of the parameter must be a number. デフォルトの単位: bit/s。 この例では、帯域幅制限は5メガバイト/秒に設定されています。
varトラフィックint64 = 41943040
// オブジェクトのアップロードに使用される署名付きURLを取得します。
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
strURL, err := bucket.SignURL("exampledir/exampleobject.txt", oss.HTTPPut, 60, oss.TrafficLimitParam (トラフィック))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// ローカルファイルをアップロードします。
err = bucket.PutObjectWithURL(strURL, fd)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 署名付きURLを使用してオブジェクトをダウンロードします。
// オブジェクトのダウンロードに使用される署名付きURLを取得します。
strURL, err = bucket.SignURL("exampledir/exampleobject.txt", oss.HTTPGet, 60, oss.TrafficLimitParam (トラフィック))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// オブジェクトをダウンロードするフルパスを指定します。
err = bucket.GetObjectToFileWithURL(strURL, "D :\\ localpath\\exampleobject.txt")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
;
Aliyun.OSSを使用します。// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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 objectContent = "単なるクラウドではありません。";
var downloadFilename = "D :\\ localpath\\examplefile.txt";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
// 署名付きURLを生成してオブジェクトをアップロードします。
var generatePresignedUriRequest = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Put)
{
Expiration = DateTime.Now.AddHours(1),
};
// 帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに等しくなります。
generatePresignedUriRequest.AddQueryParam("x-oss-traffic-limit" 、"819200");
var signedUrl = client.GeneratePresignedUri(generatePresignedUriRequest);
// 署名付きURLを使用してオブジェクトをアップロードします。
var buffer = Encoding.UTF8.GetBytes(objectContent);
using (var ms = new MemoryStream(buffer))
{
client.PutObject(signedUrl, ms);
}
Console.WriteLine("Put object by signatrue successed. {0} ", signedUrl.ToString());
var metadata = client.GetObjectMetadata(bucketName, objectName);
var etag = metadata.ETag;
// 署名付きURLを生成してオブジェクトをダウンロードします。
// 帯域幅制限を100 KB/sに設定します。これは819,200ビット /sに等しくなります。
var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get);
req.AddQueryParam("x-oss-traffic-limit" 、"819200");
var uri = client.GeneratePresignedUri(req);
// 署名付きURLを使用してオブジェクトをダウンロードします。
OssObject ossObject = client.GetObject(uri);
using (var file = File.Open(downloadFilename, FileMode.OpenOrCreate))
{
using (Stream stream = ossObject.Content)
{
int length = 4 * 1024;
var buf = new byte[length];
do
{
length = stream.Read(buf, 0, length);
file.Write(buf, 0, length);
} while (length != 0);
}
}
Console.WriteLine("Get object by signatrue successed. {0} ", uri.ToString());
}
キャッチ (例外ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}
#include <alibabacloud/oss/OssClient.h>
# include <fstream>
名前空間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);
/* 署名付きURLの有効期間を1,200秒に設定します。 */
std::time_t expires = std::time(nullptr) + 1200;
/* オブジェクトのアップロードに使用される署名付きURLを生成します。 */
GeneratePresignedUrlRequest putrequest(BucketName, ObjectName, Http::Put);
putrequest.setExpires(expires);
/* オブジェクトをアップロードする最大速度を100 KB/sに設定します。 */
putrequest.setTrafficLimit(819200);
auto genOutcome = client.GeneratePresignedUrl(putrequest);
std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
* content << "test cpp sdk";
/* 署名されたアップロードURLを表示します。 */
std::cout << "署名されたアップロードURL:" << genOutcome.result() <<< std::endl;
/* 署名付きURLを使用してオブジェクトをアップロードします。 */
auto outcome = client.PutObjectByUrl(genOutcome.result(), content);
/* オブジェクトのダウンロードに使用される署名付きURLを生成します。 */
GeneratePresignedUrlRequest getrequest(BucketName, ObjectName, Http::Get);
getrequest.setExpires(expires);
/* オブジェクトをダウンロードする最大速度を100 KB/sに設定します。 */
getrequest.setTrafficLimit(819200);
genOutcome = client.GeneratePresignedUrl(getrequest);
/* 署名されたダウンロードURLを表示します。 */
std::cout << "署名されたダウンロードURL:" << genOutcome.result() <<< std::endl;
/* 署名付きURLを使用してオブジェクトをダウンロードします。 */
auto goutcome = client.GetObjectByUrl(genOutcome.result());
/* ネットワークリソースなどのリソースをリリースします。 */
ShutdownSdk();
0を返します。}