このトピックでは、オブジェクト所有者のAccessKeyペアを公開せずに、一時的なアクセス資格情報または署名付きURLをサードパーティユーザーに提供して、オブジェクトのダウンロードを許可する方法について説明します。
一時的なアクセス資格情報を使用して、サードパーティのユーザーにOSSからオブジェクトをダウンロードする権限を付与する
STSを使用して、OSSへの一時アクセスを許可できます。 STSは、一時的なアクセストークンを提供するwebサービスです。 STSを使用して、管理されているサードパーティのアプリケーションまたはRAMユーザーに、カスタムの有効期間とカスタムのアクセス許可を持つ一時的なアクセス資格情報を付与できます。 STSの詳細については、「STSの概要」をご参照ください。
STSには次の利点があります。
一時的なアクセストークンを生成し、そのアクセストークンをサードパーティのアプリケーションに送信するだけで済みます。 サードパーティのアプリケーションにAccessKeyペアを提供する必要はありません。 トークンのアクセス権限と有効期間を指定できます。
トークンは、有効期間後に自動的に期限切れになります。 したがって、トークンのアクセス権限を手動で取り消す必要はありません。
AssumeRole操作を呼び出すか、さまざまなプログラミング言語のSecurity Token Service (STS) SDKを使用して、一時的なアクセス資格情報を取得できます。 詳細については、「STS SDKの概要」をご参照ください。 一時的なアクセス資格情報は、一時的なAccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。 一時的なアクセス資格情報の有効期間は秒単位です。 一時的なアクセス資格情報の最小有効期間は900秒です。 一時的なアクセス資格情報の最大有効期間は、現在のロールに指定されている最大セッション期間です。 詳細については、「RAMロールの最大セッション期間の指定」をご参照ください。
OSS SDKの使用
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用してSTSから取得した一時的なアクセス資格情報をサードパーティのユーザーに提供することにより、オブジェクトのダウンロードを許可する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してSTSから取得した一時的なアクセス資格情報をユーザーに提供することにより、サードパーティユーザーにオブジェクトのダウンロードを許可する方法の詳細については、「概要」をご参照ください。
com.aliyun.oss.*;
impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.mo del.GetObjectRequestをインポートします。java.io. ファイルをインポートします。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、およびOSS_SESSION_TOKEN環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例: examplebucket.
String bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。 例: exampleobject.txt。 バケット名をフルパスに含めないでください。
文字列objectName = "exampleobject.txt";
文字列pathName = "D :\\ examplefile.txt";
// STSから一時的なアクセス資格情報を取得した後、そのアクセス資格情報を使用してOSSClientインスタンスを作成できます。
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// オブジェクトをローカルファイルとしてローカルコンピュータにダウンロードします。 パス内の既存のファイルがダウンロードされたオブジェクトと同じ名前を持つ場合、既存のファイルはダウンロードされたオブジェクトによって上書きされます。 それ以外の場合、ダウンロードされたオブジェクトはパスに保存されます。
// ダウンロードしたオブジェクトのローカルパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのパスに保存されます。
ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File(pathName));
} 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、およびOSS_SESSION_TOKEN環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
$securityToken = getenv("OSS_SESSION_TOKEN");
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 例: examplebucket.
$bucket = "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
$object = "exampledir/exampleobject.txt";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
// STSから取得した一時的なアクセス資格情報を使用して、オブジェクトをダウンロードします。
$content = $ossClient->getObject($bucket, $object);
var_dump($content);
} catch (OssException $e) {
print $e->getMessage();
}
const axios = require("axios");
const OSS = require("ali-oss");
// 一時的なアクセス資格情報を使用して、クライアントインスタンスを初期化します。 インスタンスは、OSSリソースへの一時アクセスを許可するために使用されます。
const getToken = async () => {
const token = await axios.get("http:// localhost:9999/sts");
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: "oss-cn-hangzhou" 、
// STSを使用して一時的なアクセス資格情報を生成します。 一時的なアクセス資格情報は、一時的なAccessKeyペアとセキュリティトークンで構成されます。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。
accessKeyId: token.data.AccessKeyId、
accessKeySecret: token.data.AccessKeySecret、
stsToken: token.data.SecurityToken、
// バケットの名前を指定します。 例: examplebucket.
bucket: "examplebucket" 、
refreshSTSToken: async () => {
const refreshToken = await axios.get("http:// 127.0.0.1:9999/sts");
return {
accessKeyId: refreshToken.data.AccessKeyId、
accessKeySecret: refreshToken.data.AccessKeySecret、
stsToken: refreshToken.data.SecurityToken、
};
},
});
クライアントを返します。};
// オブジェクトを取得します。
getToken().then((クライアント) => {
// STSから取得した一時的なアクセス資格情報を使用して、オブジェクトをダウンロードします。
const url = client.signatureUrl("exampleobject.txt");
console.log(url);
});
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET、およびOSS_SESSION_TOKEN環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# ダウンロードするオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
object_name = 'exampleobject.txt'
# バケットからオブジェクトをダウンロードします。
read_obj = bucket.get_object(object_name)
プリント (read_obj.read())
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func main() {
// 環境変数から一時的なアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET、およびOSS_SESSION_TOKEN環境変数が設定されていることを確認してください。
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.
bucketName := "examplebucket"
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
objectName := "exampledir/exampleobject.txt"
// ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
filepath := "D :\\ localpath\\examplefile.txt"
bucket,err := client.Bucket(bucketName)
// STSから取得した一時的なアクセス資格情報を使用して、サードパーティのユーザーにオブジェクトをダウンロードする権限を付与します。
err = bucket.GetObjectToFile(objectName,filepath)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println (「ダウンロード成功」)
} Aliyun.OSSを使用した
;
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET、およびOSS_SESSION_TOKEN環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
var securityToken = Environment.GetEnvironmentVariable("OSS_SESSION_TOKEN");
// バケットの名前を指定します。 例: examplebucket.
var bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
var objectName = "exampledir/exampleobject.txt";
// ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
var downloadFilename = "D :\\ localpath\\examplefile.txt";
// OSSClientインスタンスを作成します。
var ossStsClient = new OssClient (エンドポイント、accessKeyId、accessKeySecret、securityToken);
トライ
{
// オブジェクトをストリームにダウンロードします。 OssObjectには、オブジェクトが格納されているバケット、オブジェクト名、オブジェクトメタデータ、入力ストリームなどのオブジェクト情報が含まれます。
var obj = client.GetObject(bucketName, objectName);
using (var requestStream = obj.Content)
{
byte[] buf = new byte[1024];
var fs = File.Open(downloadFilename, FileMode.OpenOrCreate);
var len = 0;
// 入力ストリームを使用して、オブジェクトコンテンツを読み取り、ローカルファイルまたはメモリにダウンロードします。
(len = requestStream.Read(buf, 0, 1024)) ! =0)
{
fs.Write(buf, 0, len);
}
rs.close();
}
Console.WriteLine("Get object successed");
}
キャッチ (例外ex)
{
Console.WriteLine("オブジェクトの取得に失敗しました。 {0}"、例えばメッセージ);
}
署名付きURLを使用してサードパーティユーザーにOSSからオブジェクトをダウンロードする権限を付与する
STSの一時アクセス資格情報と署名付きURLに有効期間を指定する必要があります。 一時的なアクセス資格情報を使用して、オブジェクトのアップロードやダウンロードなどの操作を実行するために使用される署名付きURLを生成する場合、最小有効期間が優先されます。 たとえば、一時的なアクセス資格情報の有効期間を1,200秒に設定し、資格情報を使用して生成された署名付きURLの有効期間を3,600秒に設定できます。 この場合、STSの一時アクセス資格情報の有効期限が切れた後は、署名付きURLを使用してオブジェクトをアップロードすることはできません。
署名付きURLを生成し、一時的なアクセスのためにサードパーティのユーザーにURLを提供できます。 署名付きURLを生成するときに、URLの有効期間を指定して、サードパーティユーザーがOSSリソースにアクセスできる期間を制限できます。
URLに署名情報を追加し、サードパーティのユーザーに許可されたアクセスのURLを提供できます。 詳細については、「URLへの署名の追加」をご参照ください。
次のサンプルコードを使用して生成された署名付きURLには、プラス記号 (+
) が含まれる場合があります。 この場合、URLのプラス記号 (+
) を % 2B
に置き換えます。 そうでない場合、署名付きURLを使用してオブジェクトにアクセスすることはできません。
OSS コンソールの使用
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーで、[オブジェクト管理] > [オブジェクト] を選択します。
オブジェクトのURLを取得します。
単一オブジェクトのURLを取得する
サードパーティのユーザーがダウンロードできるようにするオブジェクトの名前をクリックします。
[詳細の表示] パネルで、パラメーターを設定します。 下表に、各パラメーターを説明します。 次に、[オブジェクトURLのコピー] をクリックします。
パラメーター
説明
有効期間 (秒)
プライベートオブジェクトのURLを取得するには、有効期間を指定する必要があります。
有効値: 60 ~ 32400
単位は秒です。
有効期間が長いURLを取得するには、ossutilまたはossbrowserを使用することを推奨します。
カスタムドメイン名
イメージオブジェクトまたはwebページオブジェクトがプレビューされ、サードパーティのユーザーがオブジェクトにアクセスしたときにダウンロードされないようにするには、バケットにマッピングされたカスタムドメイン名を使用してオブジェクトのURLを生成します。
このパラメーターは、カスタムドメイン名がバケットにマップされている場合にのみ使用できます。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
HTTPSの使用
デフォルトでは、オブジェクトのURLはHTTPSを使用して生成されます。 HTTPを使用してオブジェクトのURLを生成するには、HTTPSをオフにします。
一度に複数のオブジェクトのURLを取得する
サードパーティのユーザーにダウンロードを許可するオブジェクトを選択します。 [URLリストのエクスポート] をクリックします。
[URLリストのエクスポート] パネルで、パラメーターを設定します。 下表に、各パラメーターを説明します。
パラメーター
説明
エンコード形式
エクスポートされたオブジェクトのURLに対してURLエンコードを実行するかどうかを指定します。 URLにプラス記号 (+) などの特殊文字が含まれている場合、URLエンコードを使用してURLにアクセスできないようにすることができます。
HTTPSの使用
デフォルトでは、オブジェクトのURLはHTTPSを使用して生成されます。 HTTPを使用してオブジェクトURLを生成するには、[HTTPSの使用] をオフにします。
有効期間 (秒)
プライベートオブジェクトのURLを取得するには、有効期間を指定する必要があります。
有効値: 60 ~ 32400
単位は秒です。
有効期間が長いURLを取得するには、ossutilまたはossbrowserを使用することを推奨します。
カスタムドメイン名
画像オブジェクトまたはwebページオブジェクトがプレビューされ、サードパーティのユーザーがアクセスしたときにダウンロードされないようにするには、バケットにマッピングされたカスタムドメイン名を使用してオブジェクトのURLを生成します。
このパラメーターは、カスタムドメイン名がバケットにマップされている場合にのみ使用できます。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
Accelerate Endpoint
データセンターから離れた場所にいるサードパーティのユーザーが共有オブジェクトにアクセスする必要がある場合は、バケットのアクセラレーションエンドポイントを使用してオブジェクトのURLを生成することをお勧めします。
このパラメーターは、バケットの転送アクセラレーションが有効になっている場合にのみ使用できます。 詳細については、「転送アクセラレーションの有効化」をご参照ください。
[OK] をクリックし、URLリストをローカルファイルとしてエクスポートします。
URLリストファイルをサードパーティのユーザーと共有してダウンロードします。
OSS SDKの使用
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用して、署名付きURLを持つオブジェクトをダウンロードすることをサードパーティユーザーに許可する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用して、署名付きURLを持つオブジェクトをダウンロードする権限をサードパーティユーザーに付与する方法の詳細については、「概要」をご参照ください。
<?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\Http\RequestCoreを使用します。OSS\Http\ResponseCoreを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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";
// バケットの名前を指定します。
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。
$object = "exampleobject.txt";
// 署名付きURLの有効期間を3,600秒に設定します。
$timeout = 3600;
オブジェクトをプレビューするために署名付きURLが生成され、オブジェクトが格納されているバケットにマップされたカスタムドメイン名がアクセスに使用されます。
$options=配列 (
"response-content-disposition"=>"inline",);
// オブジェクトのダウンロードに使用される署名付きURLを生成します。
/*$options=配列 (
"response-content-disposition"=>"attachment" 、);* /
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
$signedUrl = $ossClient->signUrl($bucket、$object、$timeout、'GET' 、$options);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage()) 。 "\n");
戻ります。}
print(__FUNCTION__) 。 ": signedUrl: " 。 $signedUrl。 "\n");
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: "oss-cn-hangzhou" 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。 例: examplebucket.
bucket: "examplebucket" 、});
// exampleobject.txtのContent-Dispositionヘッダーをattachmentに設定します。 この方法では、署名付きURLを使用してブラウザでオブジェクトにアクセスすると、オブジェクトが自動的にダウンロードされ、ダウンロードしたオブジェクトの名前を指定できます。
// 署名付きURLを使用してブラウザでオブジェクトにアクセスするときにオブジェクトをプレビューするには、Content-Dispositionヘッダーをインラインに設定し、バケットにマップされているカスタムドメイン名を使用してオブジェクトにアクセスします。
const filename = "ossdemo.txt"; // ダウンロードしたオブジェクトの名前を指定します。
const response = {
"content-disposition": 'attachment; filename =${ encodeURicoment (filename)}'、};
// ダウンロードするオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
const url = client.signatureUrl("exampleobject.txt", {
// 有効期間を3600に設定します。 単位は秒です。
有効期限: 3600、
応答、});
console.log(url);
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket')
# オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。
object_name = 'exampledir/exampleobject.txt'
# ヘッダーを指定します。
headers = dict()
# ブラウザを使用してオブジェクトにアクセスし、ダウンロードしたオブジェクトの名前を指定したときに自動ダウンロードを実装するには、構成ファイルのContent-Dispositionヘッダーを添付に設定します。
# headers['content-disposition'] = 'attachment'
# ブラウザを使用してオブジェクトにアクセスしたときにオブジェクトをプレビューするには、設定ファイルのContent-Dispositionヘッダーをインラインに設定し、バケットにマップされているカスタムドメイン名を使用してオブジェクトにアクセスします。
ヘッダー ['content-disposition'] = 'inline'
# ダウンロードしたオブジェクトの名前を指定します。
query_params = {'response-content-disposition': 'attachment; filename=example.txt '}
# オブジェクトのダウンロードに使用される署名付きURLを生成します。 この例では、URLの有効期間は60秒です。
# デフォルトでは、署名付きURLが生成されると、OSSはオブジェクトのフルパスのスラッシュ (/) をエスケープ文字として識別します。 したがって、署名付きURLを使用してオブジェクトをダウンロードすることはできません。
# slash_safeパラメーターをTrueに設定します。 このように、OSSはオブジェクトのフルパスのスラッシュ (/) をエスケープ文字として識別しません。 次に、生成された署名付きURLを使用してオブジェクトをダウンロードできます。
url = bucket.sign_url('GET', object_name, 60, headers=headers, slash_safe=True, params=query_params)
print('Signed URL:', url)
# 署名付きURLを使用して、オブジェクトをローカルコンピューターにダウンロードします。
# ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
# デフォルトでは、examplefile.txtなどのローカルファイル名を指定し、ローカルパスを指定しない場合、ダウンロードしたオブジェクトはサンプルプログラムが属するプロジェクトのローカルパスに保存されます。
result = bucket.get_object_with_url_to_file(url, 'D :\\ localpath\\examplefile.txt ')
プリント (result.read())
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
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.
bucketName := "examplebucket"
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。
objectName := "exampledir/exampleobject.txt"
// ローカルコンピューターの指定されたパスにオブジェクトをダウンロードします。 指定されたパスに同じ名前のファイルがすでに存在する場合、ダウンロードされたオブジェクトはファイルを上書きします。 それ以外の場合、ダウンロードしたファイルはパスに保存されます。
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// オブジェクトをダウンロードするための有効期間を指定した署名付きURLを生成します。 この例では、URLの有効期間は60秒です。
signedURL, err := bucket.SignURL(objectName, oss.HTTPGet, 60)
if err! =nil {
HandleError(err)
}
fmt.Printf("Sign Url:% s\n", signedURL)
} Aliyun.OSSを使用した
;
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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";
// オブジェクトをダウンロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 指定されたローカルファイルが存在する場合、ダウンロードするオブジェクトがファイルを置き換えます。 指定したローカルファイルが存在しない場合、ダウンロードしたファイルはパスに保存されます。
var downloadFilename = "D :\\ localpath\\examplefile.txt";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
var metadata = client.GetObjectMetadata(bucketName, objectName);
var etag = metadata.ETag;
// Generate the signed URL.
var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
{
// 署名付きURLの有効期間を設定します。 デフォルト値は 3600 です。 単位は秒です。
Expiration = DateTime.Now.AddHours(1),
};
var uri = client.GeneratePresignedUri(req);
}
キャッチ (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
#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 GetobjectUrlName = "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の有効期間を指定します。 */
std::time_t=std::time(nullptr) + 1200;
/* 署名されたURLを生成します。 */
auto genOutcome = client.GeneratePresignedUrl(BucketName, GetobjectUrlName, t, Http::Get);
if (genOutcome.isSuccess()) {
std::cout << "GeneratePresignedUrl success, Gen url:" << genOutcome.result().c_str() <<< std::endl;
}
else {
/* 例外を処理します。 */
std::cout << "GeneratePresignedUrl fail" <<
",code:" << genOutcome.error().Code() <<
",message:" << genOutcome.error().Message() <<
",requestId:" << genOutcome.error().RequestId() << std::endl;
ShutdownSdk();
return -1;
}
/* 署名付きURLを使用してオブジェクトをダウンロードします。 */
auto outcome = client.GetObjectByUrl(genOutcome.result());
if (!outcome.isSuccess()) {
/* 例外を処理します。 */
std::cout << "GetObjectByUrl fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
ShutdownSdk();
return -1;
}
/* ネットワークリソースなどのリソースをリリースします。 */
ShutdownSdk();
0を返します。}