デフォルトでは、object Storage Service (OSS) バケット内のオブジェクトのアクセス制御リスト (ACL) はプライベートであり、オブジェクトの所有者のみがオブジェクトに対するアクセス権限を持ちます。 ただし、オブジェクトの所有者は、オブジェクトの署名付きURLを作成することで、サードパーティのユーザーとプライベートオブジェクトを共有できます。 サードパーティのユーザーは、資格情報を使用して生成された署名付きURLを使用して、特定の期間内にオブジェクトをダウンロードまたはプレビューできます。
単一オブジェクトのURLを取得する
アクセス時にオブジェクトがプレビューされるようにするには、オブジェクトを格納するバケットにカスタムドメイン名をマップし、CNAMEレコードを追加する必要があります。 詳細については、「カスタムドメイン名をバケットのデフォルトドメイン名にマップする」をご参照ください。
プライベートオブジェクトのURLを取得する
オブジェクトのACLが非公開の場合、オブジェクトのURLに署名する必要があります。 プライベートオブジェクトのURLは、https:// BucketName.Endpoint /object? SignatureParameters
形式に従います。 次の方法を使用して、プライベートオブジェクトのURLを取得し、URLの有効期間を指定できます。
オブジェクトURLの有効期間は、アカウントタイプによって異なります。 たとえば、Alibaba Cloudアカウントを使用して、オブジェクトURLの有効期間を最大32,400秒 (9時間) に設定したり、RAMユーザーまたはSecurity Token Service (STS) から取得した一時的なアクセス資格情報を使用して、OSSコンソールでオブジェクトURLの有効期間を最大3,600秒 (1時間) に設定したりできます。 オブジェクトURLの有効期間を長く指定するには、ossutil、ossbrowser、またはOSS SDKを使用します。 詳細については、「プライベートオブジェクトのURLを有効期限なしに設定できますか? 」をご参照ください。
OSSコンソールの使用
OSSコンソールでプライベートオブジェクトのURLを取得できます。
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、プライベートオブジェクトが保存されているバケットの名前をクリックします。
左側のナビゲーションツリーで、
を選択します。オブジェクトのURLを取得します。
共有するオブジェクトの名前をクリックします。
プロパティ パネルで、次の表に示すパラメーターを設定します。 次に、ファイル URLのコピー をクリックします。
パラメーター
説明
有効期間 (秒)
プライベートオブジェクトのURLを取得するには、有効期間を指定する必要があります。
有効値: 60 ~ 32400
単位は秒です。
有効期間が長いURLを取得するには、ossbrowser、OSS SDK、ossutilなどのツールを使用します。
CNAME
イメージオブジェクトまたはwebページオブジェクトがプレビューされ、サードパーティのユーザーがオブジェクトにアクセスしたときにダウンロードされないようにするには、バケットにマッピングされたカスタムドメイン名を使用してオブジェクトのURLを生成します。
このパラメーターは、カスタムドメイン名がバケットにマップされている場合にのみ使用できます。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
HTTPSの使用
デフォルトでは、オブジェクトのURLはHTTPSを使用して生成されます。 HTTPを使用してオブジェクトURLを生成するには、[HTTPSの使用] をオフにします。
ossbrowserの使用
ossbrowserを使用すると、OSSコンソールで実行できるオブジェクト管理操作を実行できます。 ossbrowserの画面上の指示に従って、署名付きURLを取得できます。 詳細については、「ossbrowserの使用」をご参照ください。
OSS SDKの使用
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用して署名付きURLを生成し、署名付きURLを使用してオブジェクトをダウンロードする方法の例を示しています。 他のプログラミング言語のOSS SDKを使用して署名付きURLを生成し、署名付きURLを使用してオブジェクトをダウンロードする方法の詳細については、「概要」をご参照ください。
Java
オブジェクトのダウンロードに使用する署名付きURLを生成します。
com.aliyun.oss.*; impor t com.aliyun.oss.com mon.auth.*; com.aliyun.oss.mo del.GeneratePresignedUrlRequestをインポートします。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"; // オブジェクトのフルパスを指定します。 例: exampleobject.txt。 バケット名をフルパスに含めないでください。 文字列objectName = "exampleobject.txt"; // Create an OSSClient instance. OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); URL signedUrl = null; try { // 署名付きURLの有効期間を指定します。 単位:ミリ秒。 この例では、有効期間は1時間に設定されています。 日付の有効期限=新しい日付 (new Date().getTime() + 3600 * 1000L); // 署名付きURLを生成します。 GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET); // 署名付きURLの有効期間を設定します。 request.setExpiration(expiration); // HTTP GETリクエストを許可する署名付きURLを生成します。 signedUrl = ossClient.generatePresignedUrl (要求); // 署名されたURLを表示します。 System.out.println("signed url for getObject: " + signedUrl); } 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()); } } }
署名付きURLを使用してオブジェクトをダウンロードします。
org.apache.http.client.methods.CloseableHttpResponseをインポートします。org.apache.http.client.methods.HttpGetをインポートします。org.apache.http.impl.client.CloseableHttpClientをインポートします。org.apache.http.impl.client.HttpClientsをインポートします。java.io.* をインポートします。java.util.* をインポートします。public class Get1 { public static void main(String[] args) Throwable { // オブジェクトをダウンロードするローカルパスを指定します。 文字列pathName = "D :\\ example.jpg"; // ステップ1で生成された署名付きURLを入力します。 String signedUrl= "yourSignedUrl"; Map<String, String> headers = new HashMap<String, String>(); Map<String, String> userMetadata = new HashMap<String, String>(); // 署名付きURLを使用してオブジェクトをダウンロードします。 この例では、HttpClientsが使用されます。 getObjectWithHttp(signedUrl, pathName, headers, userMetadata); } public static void getObjectWithHttp(String signedUrl、String pathName、Map<String、String> ヘッダー、Map<String、String> userMetadata) はIOException {をスローします CloseableHttpClient httpClient = null; CloseableHttpResponse応答=null; try { HttpGet get=新しいHttpGet(signedUrl); // 署名付きURLの生成時にユーザーメタデータやストレージクラスに関連するヘッダーなどのヘッダーを設定する場合は、署名付きURLを使用してオブジェクトをダウンロードするときに、これらのヘッダーをサーバーに送信する必要があります。 署名のヘッダーがサーバーに送信されたヘッダーと一致しない場合、署名エラーが報告されます。 for(Map.Entryヘッダー: headers.entrySet()){ get.addHeader(header.getKey().toString(),header.getValue().toString()); } for(Map.Entry meta: userMetadata.entrySet()){ // userMetaが使用されている場合、x-oss-metaプレフィックスがuserMetaに追加されます。 他のメソッドを使用してオブジェクトダウンロード用の署名付きURLを生成すると、x-oss-meta- prefixもuserMetaに追加されます。 get.addHeader("x-oss-meta-" + meta.getKey().toString(), meta.getValue().toString()); } httpClient = HttpClients.createDefault(); 応答=httpClient.exeかわいい (取得); System.out.println("Download status code:" + response.getStatusLine().getStatusCode()); if(response.getStatusLine().getStatusCode() == 200){ System.out.println("オブジェクトはネットワークライブラリを使用してダウンロードされます。"); } System.out.println(response.toString()); saveFileToLocally(response.getEntity().getContent(), pathName); } catch (例外e){ e.printStackTrace(); } 最後に{ response.close(); httpClient.close(); } } public static void saveFileToLocally(InputStream inputStream, String pathName) throws IOException { DataInputStream in = null; OutputStream out = null; try { in = new DataInputStream(inputStream); out = new DataOutputStream(new FileOutputStream(pathName)); int bytes = 0; byte[] bufferOut = new byte[1024]; while (((bytes = in.read(bufferOut))) ! = -1) { out.write(bufferOut, 0, bytes); } } catch (例外e){ e.printStackTrace(); } 最後に{ in.close(); out.close(); } } }
PHP
オブジェクトのダウンロードに使用する署名付き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\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。OSS\Http\RequestCoreを使用します。OSS\Http\ResponseCoreを使用します。 // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 $provider = new EnvironmentVariableCredentialsProvider(); // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 $end point = "https://oss-cn-hangzhou.aliyuncs.com"; // バケットの名前を指定します。 例: examplebucket. $bucket= "examplebucket"; // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 $object = "exampleobject.txt"; // 署名付きURLの有効期間を3600に設定します。 単位は秒です。 $timeout = 3600; // オブジェクトのダウンロードに使用される署名付きURLを生成します。 $options = array( "response-content-disposition"=>"attachment" 、); try { $config=配列 ( "provider" => $provider、 "endpoint" => $end ポイント、 ); $ossClient = new OssClient($config); $signedUrl = $ossClient->signUrl($bucket、$object、$timeout、'GET' 、$options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage()) 。 "\n"); 戻ります。} print(__FUNCTION__) 。 ": signedUrl: " 。 $signedUrl。 "\n");
署名付き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\Http\RequestCoreを使用します。OSS\Http\ResponseCoreを使用します。// ステップ1で生成された署名付きURLを入力します。 $signedUrl = 'yourSignedUrl'; // オブジェクトをダウンロードするローカルパスを指定します。 $localfile = "D:// example.txt"; // 署名付きURLを使用してオブジェクトをダウンロードします。 $request = new RequestCore($signedUrl); // 署名付きURLにアクセスするために使用されるデフォルトのメソッドをGETに設定します。 $request->set_method('GET'); $request->add_header('Content-Type', ''); $request->send_request(); $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); if ($res->isOK()) { print(__FUNCTION__ . ": OK" 。 "\n"); file_put_contents($localfile,$request->get_response_body()); } else { print(__FUNCTION__ . ": FAILED" 。 "\n"); };
Node.js
オブジェクトのダウンロードに使用する署名付きURLを生成します。
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" 、}); // オブジェクトのダウンロードに使用される署名付きURLを生成します。 const url = client.signatureUrl("exampleobject.txt"); console.log(url);
署名付きURLを使用してオブジェクトをダウンロードします。
constaxios=require("axios"); const fs = require("fs"); // ステップ1で生成された署名付きURLを入力します。 const url = "yourSignedUrl"; // オブジェクトをダウンロードするローカルパスを指定します。 constファイル="D:// example.txt"; axios // 応答タイプをarraybufferに設定します。 . get(url, { responseType: "arraybuffer" }) . then((応答) => { fs.writeFile (ファイル, response.data, (err) => {) if(err){ console.log(err); } else { console.log("オブジェクトがダウンロードされました。"); } }); }) . catch((エラー) => { console.log (エラー); });
Python
オブジェクトのダウンロードに使用する署名付き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, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket') # オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。 バケット名をフルパスに含めないでください。 object_name = 'exampleobject.txt' # 署名付きURLの有効期間を3,600秒に設定します。 # slash_safeパラメーターをTrueに設定します。 このように、OSSはオブジェクトのフルパスのスラッシュ (/) をエスケープ文字として識別しません。 この場合、生成された署名付きURLを使用してオブジェクトをダウンロードできます。 url = bucket.sign_url('GET', object_name, 3600, slash_safe=True) print ('The signed URL:', url)
署名付きURLを使用してオブジェクトをダウンロードします。
# -*-コーディング: utf-8 -*- oss2のインポート インポートリクエスト # ステップ1で生成された署名付きURLを入力します。 url = 'yourSignedUrl' # 署名付きURLを使用してオブジェクトをダウンロードします。 この例では、要求モジュールが使用されます。 resp = requests.get(url) # オブジェクトをダウンロードするローカルパスを指定します。 コードとしてopen("D :\\ examplefile.txt", "wb") を持つ: code.write(resp.content)
Browser.js
オブジェクトのダウンロードに使用する署名付きURLを生成します。
const OSS = require("ali-oss"); const STS = require("ali-oss").STS; // const cors = require("cors"); const stsClient = new STS({ // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 accessKeyId: process.env.OSS_ACCESS_KEY_ID、 accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、}); // バケットの名前を指定します。 例: examplebucket. const bucket = "examplebucket"; // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 const region = "oss-cn-hangzhou"; // RAMロールのAlibaba Cloudリソース名 (ARN) を指定します。 const roleArn = "acs:ram::137918634953 ****:role/ossram"; const getSts = () => { stsClient . assumeRole (assumeRole) roleArn, `{ "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": [ "acs:oss:*:*:examplebucket/*" ] } ] }`, 3000 // セキュリティトークンの有効期間を指定します。 単位は秒です。 ) . then((r) => { console.log("send:", r.credentials); const { SecurityToken, AccessKeyId, AccessKeySecret } = r.credentials; const client = new OSS({ バケット、 region, accessKeyId: AccessKeyId、 accessKeySecret: AccessKeySecret、 stsToken: SecurityToken、 リフレッシュSTokenInterval: 9000、 }); // オブジェクトのダウンロードに使用される署名付きURLを生成します。 const url = client.asyncSignatureUrl("exampleobject.txt", { 有効期限: 3600、 メソッド: "GET" 、 }); console.log("url:" 、url); // client.get("exampleobject.txt", Buffer.from("body")).then((res) => { // console.log("res", res.url); // }); }); }; getSts();
署名付きURLを使用してオブジェクトをダウンロードします。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title> ドキュメント </title> </head> <body> <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script> <script> // ステップ1で生成された署名付きURLを入力します。 const url = "yourSignedUrl"; var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); // レスポンスタイプをblobに設定します。 xhr.responseType = "blob"; xhr.onload = function () { if (xhr.status === 200) { const blob = xhr.response; const reader = new FileReader(); reader.onloadend = function () { const fileData = reader.result; // ダウンロードしたオブジェクトの名前を指定します。 constファイル=新しいファイル ([fileData], "examplefile.txt"); const a = document.createElement("a"); a.href = URL.createObjectURL (ファイル); a.download = file.name; a.click(); }; reader.readAsArrayBuffer(blob); } else { console.log("リクエストが失敗しました。"); } }; xhr.send(); </script> </body> </html>
アンドロイド
オブジェクトのダウンロードに使用する署名付きURLを生成します。
// バケットの名前を指定します。 例: examplebucket. String bucketName = "examplebucket"; // ソースオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampleobject.txt。 String objectKey = "exampleobject.txt"; 文字列url = null; try { // オブジェクトのダウンロードに使用する署名付きURLを生成します。 GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectKey); // 署名付きURLの有効期間を30分に設定します。 request.setExpiration(30*60); request.setMethod(HttpMethod.GET); url = mOss.presignConstrainedObjectURL (リクエスト); Log.d("url" 、url); } catch (ClientException e) { e.printStackTrace(); }
署名付きURLを使用してオブジェクトをダウンロードします。
// 生成された署名付きURLを入力します。 文字列url = ""; OkHttpClient client = new OkHttpClient(); // 署名付きURLを使用してオブジェクトをダウンロードします。 Request getRequest = new Request.Builder() . url(url) . get() . build(); client.newCall(getRequest).enqueue(new Callback() { @オーバーライド public void onFailure (コールコール, IOException e) { e.printStackTrace(); } @オーバーライド public void onResponse (コールコール、レスポンスレスポンス) throws IOException { if (response.code() == 203 | | response.code() >= 300) { Log.d("ダウンロード" 、"失敗"); Log.d("download", response.body().string()); return; } // オブジェクトがダウンロードされます。 InputStream inputStream = response.body().byteStream(); byte[] buffer = new byte[2048]; int len; while ((len = inputStream.read(buffer)) ! = -1) { // ダウンロードしたデータを処理します。 たとえば、画像を表示したり、オブジェクトに書き込み操作を実行したりします。 } } });
行く
オブジェクトのダウンロードに使用する署名付きURLを生成します。
パッケージメイン 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) }
署名付きURLを使用してオブジェクトをダウンロードします。
パッケージメイン import (import (import) "fmt" "os" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 ) func main() { // Create an OSSClient instance. // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", ", " ") if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" // ローカルファイルのフルパスを指定します。 localDownloadedFilename := "D:// example.txt" bucket, err := client.Bucket(bucketName) if err! =nil { HandleError(err) } // ステップ1で生成された署名付きURLを入力します。 signedURL := "yourSignedUrl" // 生成された署名付きURLを使用してオブジェクトをダウンロードし、オブジェクトをローカルファイルとして保存します。 err = bucket.GetObjectToFileWithURL(signedURL, localDownloadedFilename) if err! =nil { HandleError(err) } } func HandleError (エラーエラー) { fmt.Println("Error:", err) os.Exit(-1) }
iOS
オブジェクトのダウンロードに使用する署名付きURLを生成します。
// バケットの名前を指定します。 NSString * bucketName = @ "examplebucket"; // オブジェクトの名前を指定します。 NSString * objectKey = @ "exampleobject.txt"; __ブロックNSString * urlString; // オブジェクトをダウンロードするための有効期間を指定した署名付きURLを生成します。 この例では、URLの有効期間は30分です。 OSSTask * task = [client presignConstrainURLWithBucketName:bucketName withObjectKey:objectKey httpMethod:@ "GET" withExpirationInterval:30*60 withParameters :@{}]; [task continueWithBlock:^ id _Nullable(OSSTask * _Nonnull task) { if (task.error) { NSLog(@ "presign error: % @" 、task.error); } else { urlString = task.result; NSLog(@ "url: % @", urlString); } nilを返します。}];
署名付きURLを使用してオブジェクトをダウンロードします。
// 署名付きURLを使用してオブジェクトをダウンロードします。 NSURL * url = [NSURL URLWithString:urlString]; NSURLRequest * request = [NSURLRequest requestWithURL:url]; NSURLSession * session = [NSURLSession sharedSession]; NSURLSessionTask * sessionTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (error) { NSLog(@ "ダウンロードエラー: % @" 、エラー); 戻る; } else if (((NSHTTPURLResponse *)response).statusCode == 203 | | ((NSHTTPURLResponse *) レスポンス) 。statusCode >= 300) { NSString * body = [[NSString alloc] initWithData: データエンコード: NSUTF8StringEncoding]; NSLog(@ "ダウンロードエラー: % @" 、本文); return; } NSLog(@ "ダウンロード成功"); }]; [sessionTask resume];
ossutilの使用
ossutilを使用して署名付きURLを生成できます。 詳細については、「sign (署名付きオブジェクトURLの生成) 」をご参照ください。
パブリック読み取りオブジェクトのURLの取得
オブジェクトのACLがパブリック読み取りの場合、匿名ユーザーはオブジェクトにアクセスできます。 オブジェクトのURLの形式はhttps:// BucketName.Endpoint/ObjectName
です。 上記のURLでは、ObjectNameはオブジェクト名サフィックスを含むオブジェクトのフルパスです。 各リージョンのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
たとえば、example.jpgという名前のオブジェクトは、中国 (杭州) リージョンのexamplebucketという名前のバケットのサンプルディレクトリに格納されます。 次のURLを使用してオブジェクトにアクセスできます。
インターネット経由でアクセスするためのURL:
https://examplebucket.oss-cn-hangzhou.aliyuncs.com/example/example.jpg
。内部ネットワーク経由でアクセスするためのURL (オブジェクトと同じリージョンのElastic Compute Serviceインスタンスから):
https://examplebucket.oss-cn-hangzhou-internal.aliyuncs.com/example/example.jpg
。
オブジェクトが格納されているバケットにカスタムドメイン名をマップする場合、バケット内のオブジェクトのURLはhttps:// YourDomainName/ObjectName
の形式になります。
たとえば、カスタムドメイン名example.com
を中国 (杭州) リージョンのexamplebucketという名前のバケットにマップし、そのバケットにexample.jpgオブジェクトが含まれている場合、オブジェクトのURLはhttps://example.com/example.jpg
です。
複数のオブジェクトのURLを取得する
OSSコンソールでは、一度に複数のオブジェクトのURLを取得できます。
URLを取得するオブジェクトを選択し、[URLリストのエクスポート] をクリックします。
[URLリストのエクスポート] パネルで、次の表に示すパラメーターを設定します。
パラメーター
説明
HTTPSの使用
デフォルトでは、オブジェクトのURLはHTTPSを使用して生成されます。 HTTPを使用してオブジェクトURLを生成するには、[HTTPSの使用] をオフにします。
有効期間
プライベートオブジェクトのURLを取得するには、有効期間を指定する必要があります。
有効値: 60 ~ 32400
単位は秒です。
有効期間が長いURLを取得するには、ossutilまたはossbrowserを使用することを推奨します。
CNAME
画像オブジェクトまたはwebページオブジェクトがプレビューされ、サードパーティのユーザーがアクセスしたときにダウンロードされないようにするには、バケットにマッピングされたカスタムドメイン名を使用してオブジェクトのURLを生成します。
このパラメーターは、カスタムドメイン名がバケットにマップされている場合にのみ使用できます。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
エンドポイントの高速化
データセンターから離れた場所にいるサードパーティが共有オブジェクトにアクセスする必要がある場合は、バケットのアクセラレーションエンドポイントを使用してオブジェクトのURLを生成することを推奨します。
このパラメーターは、バケットの転送アクセラレーションが有効になっている場合にのみ使用できます。 詳細については、「転送アクセラレーションの有効化」をご参照ください。
OK をクリックし、URLリストをローカルファイルとしてエクスポートします。
ossutilまたはOSS SDKを使用して一度に複数のオブジェクトのURLを取得する場合は、次の手順を実行します。
GetBucket (ListObjects) 操作を呼び出して、オブジェクトの名前を取得します。
オブジェクトのURLを取得するために、単一のオブジェクトのURLを取得するために使用されるメソッドを繰り返し呼び出します。 詳細については、「単一オブジェクトのURLの取得」をご参照ください。