本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
啟用和使用 S3 Transfer Acceleration
您可以使用 Amazon S3 Transfer Acceleration,在用戶端與 S3 一般用途儲存貯體之間的長距離內快速安全地傳輸檔案。您可以使用 S3 主控台、 AWS Command Line Interface (AWS CLI)、 API 或 AWS SDKs 啟用 Transfer Acceleration。
本節示範如何在儲存貯體上啟用 Amazon S3 Transfer Acceleration,以及使用已啟用儲存貯體的加速端點。
如需 Transfer Acceleratio 要求的更多資訊,請參閱「使用 Amazon S3 Transfer Acceleration 設定快速安全的檔案傳輸」。
啟用 S3 一般用途儲存貯體的傳輸加速
登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon S3 主控台。
-
在左側導覽窗格中,選擇一般用途儲存貯體。
-
在一般用途儲存貯體清單中,選擇您要啟用傳輸加速的儲存貯體名稱。
-
選擇 Properties (屬性)。
-
在轉換加速下,選擇編輯。
-
依序選擇 Enable (啟用) 和 Save changes (儲存變更)。
實現資料傳輸加速
-
在 Amazon S3 為儲存貯體啟用 Transfer Acceleration 後,請檢視儲存貯體的 Properties (屬性) 索引標籤。
-
在傳輸加速下,加速端點會顯示儲存貯體的傳輸加速端點。使用此端點以實現進出儲存貯體的資料傳輸加速。
若暫停傳輸加速,則加速端點將不會再運作。
以下是用於 Transfer Acceleration 的 AWS CLI 命令範例。如需設定 的指示 AWS CLI,請參閱《Amazon S3 API 參考》中的使用 開發 AWS CLI Amazon S3。
在儲存貯體上啟用 Transfer Acceleration
使用 AWS CLI put-bucket-accelerate-configuration命令在儲存貯體上啟用或停用 Transfer Acceleration。
下列範例會設定 Status=Enabled
在名為 的儲存貯體上啟用 Transfer Accelerationamzn-s3-demo-bucket
。若要暫停 Transfer Acceleration,請使用 Status=Suspended
。
$
aws s3api put-bucket-accelerate-configuration --bucket amzn-s3-demo-bucket
--accelerate-configuration Status=Enabled
使用 Transfer Acceleration
您可以將 s3
和 s3api
AWS CLI 命令提出的所有 Amazon S3 請求導向加速端點:s3-accelerate.amazonaws.com
。若要這樣做,請在 AWS Config 檔案的設定檔true
中use_accelerate_endpoint
將組態值設為 。必須在儲存貯體上啟用 Transfer Acceleration,才能使用加速端點。
所有請求都是使用虛擬樣式的儲存貯體定址所傳送:amzn-s3-demo-bucket
.s3-accelerate.amazonaws.com
。不會將任何 ListBuckets
、CreateBucket
和 DeleteBucket
請求傳送至加速端點,因為該端點不支援這些操作。
如需有關 use_accelerate_endpoint
的詳細資訊,請參閱 AWS CLI 命令參考中的 AWS CLI S3 組態。
下列範例會將預設描述檔中的 use_accelerate_endpoint
設為 true
。
$
aws configure set default.s3.use_accelerate_endpoint true
如果您想要將加速端點用於某些命令,而不是其他 AWS CLI 命令,您可以使用下列兩種方法之一:
-
將 --endpoint-url
參數設定為 ,以針對任何 s3
或 s3api
命令使用加速端點https://s3-accelerate.amazonaws.com
。
-
在 AWS Config 檔案中設定個別的設定檔。例如,您可以建立一個設定檔,將 use_accelerate_endpoint
設為 true
,再建立另一個設定檔不設定 use_accelerate_endpoint
。當您執行命令時,根據是否要使用加速端點來指定要使用的描述檔。
將物件上傳至已啟用 Transfer Acceleration 的儲存貯體
下列範例使用已設定為使用加速端點的預設設定檔,將檔案上傳至名為 且amzn-s3-demo-bucket
已啟用 Transfer Acceleration 的儲存貯體。
$
aws s3 cp file.txt
s3://amzn-s3-demo-bucket
/key-name
--region region
下列範例使用 --endpoint-url
參數指定加速端點,以將檔案上傳至已啟用 Transfer Acceleration 的儲存貯體。
$
aws configure set s3.addressing_style virtual
$
aws s3 cp file.txt
s3://amzn-s3-demo-bucket
/key-name
--region region
--endpoint-url https://s3-accelerate.amazonaws.com
以下是使用 AWS 開發套件使用 Transfer Acceleration 將物件上傳至 Amazon S3 的範例。有些 AWS SDK 支援的語言 (例如 Java和 .NET) 使用加速端點用戶端組態旗標,因此您不需要明確將 Transfer Acceleration 的端點設定為 bucket-name
.s3-accelerate.amazonaws.com
。
- Java
-
若要使用適用於 Java 的 AWS 開發套件,使用加速端點將物件上傳至 Amazon S3,您可以:
-
建立設定為使用加速端點的 S3Client。所有客戶存取的儲存貯體,一定要啟用 Transfer Acceleration。
-
在指定的儲存貯體上啟用 Transfer Acceleration。此步驟僅在您所指定的儲存貯體並沒有啟用 Transfer Acceleration 時為必需。
-
確認已為指定的儲存貯體啟用傳輸加速。
-
使用儲存貯體的加速端點,將新物件上傳至指定的儲存貯體。
如需有關使用 Transfer Acceleration 的詳細資訊,請參閱 Amazon S3 Transfer Acceleration 入門。
下列程式碼範例示範如何使用適用於 Java 的 AWS SDK 設定 Transfer Acceleration。
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketAccelerateStatus;
import software.amazon.awssdk.services.s3.model.GetBucketAccelerateConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketAccelerateConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.AccelerateConfiguration;
import software.amazon.awssdk.services.s3.model.S3Exception;
import software.amazon.awssdk.core.exception.SdkClientException;
public class TransferAcceleration {
public static void main(String[] args) {
Region clientRegion = Region.US_EAST_1;
String bucketName = "*** Provide bucket name ***";
String keyName = "*** Provide key name ***";
try {
// Create an Amazon S3 client that is configured to use the accelerate endpoint.
S3Client s3Client = S3Client.builder()
.region(clientRegion)
.credentialsProvider(ProfileCredentialsProvider.create())
.accelerate(true)
.build();
// Enable Transfer Acceleration for the specified bucket.
s3Client.putBucketAccelerateConfiguration(
PutBucketAccelerateConfigurationRequest.builder()
.bucket(bucketName)
.accelerateConfiguration(AccelerateConfiguration.builder()
.status(BucketAccelerateStatus.ENABLED)
.build())
.build());
// Verify that transfer acceleration is enabled for the bucket.
String accelerateStatus = s3Client.getBucketAccelerateConfiguration(
GetBucketAccelerateConfigurationRequest.builder()
.bucket(bucketName)
.build())
.status().toString();
System.out.println("Bucket accelerate status: " + accelerateStatus);
// Upload a new object using the accelerate endpoint.
s3Client.putObject(PutObjectRequest.builder()
.bucket(bucketName)
.key(keyName)
.build(),
RequestBody.fromString("Test object for transfer acceleration"));
System.out.println("Object \"" + keyName + "\" uploaded with transfer acceleration.");
} catch (S3Exception e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
}
}
- .NET
-
下列範例顯示如何使用 適用於 .NET 的 AWS SDK 在儲存貯體上啟用 Transfer Acceleration。如需設定和執行程式碼範例的資訊,請參閱《適用於 .NET 的 AWS SDK 開發人員指南》中的 適用於 .NET 的 AWS SDK入門。
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;
namespace Amazon.DocSamples.S3
{
class TransferAccelerationTest
{
private const string bucketName = "*** bucket name ***";
// Specify your bucket region (an example region is shown).
private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
private static IAmazonS3 s3Client;
public static void Main()
{
s3Client = new AmazonS3Client(bucketRegion);
EnableAccelerationAsync().Wait();
}
static async Task EnableAccelerationAsync()
{
try
{
var putRequest = new PutBucketAccelerateConfigurationRequest
{
BucketName = bucketName,
AccelerateConfiguration = new AccelerateConfiguration
{
Status = BucketAccelerateStatus.Enabled
}
};
await s3Client.PutBucketAccelerateConfigurationAsync(putRequest);
var getRequest = new GetBucketAccelerateConfigurationRequest
{
BucketName = bucketName
};
var response = await s3Client.GetBucketAccelerateConfigurationAsync(getRequest);
Console.WriteLine("Acceleration state = '{0}' ", response.Status);
}
catch (AmazonS3Exception amazonS3Exception)
{
Console.WriteLine(
"Error occurred. Message:'{0}' when setting transfer acceleration",
amazonS3Exception.Message);
}
}
}
}
將物件上傳至已啟用 Transfer Acceleration 的儲存貯體時,您可以在建立用戶端時指定使用加速端點:
var client = new AmazonS3Client(new AmazonS3Config
{
RegionEndpoint = TestRegionEndpoint,
UseAccelerateEndpoint = true
}
- JavaScript
-
如需使用 啟用 Transfer Acceleration 的範例 適用於 JavaScript 的 AWS SDK,請參閱 適用於 JavaScript 的 AWS SDK API 參考中的 PutBucketAccelerateConfiguration命令。
- Python (Boto)
-
如需使用適用於 Python 的 SDK 啟用 Transfer Acceleration 的範例,請參閱《AWS 適用於 Python (Boto3) 的 SDK API 參考》中的 put_bucket_accelerate_configuration。
- Other
-
如需使用 AWS SDKs的詳細資訊,請參閱範例程式碼和程式庫。
使用 REST API PutBucketAccelerateConfiguration
操作,以在現有儲存貯體上啟用加速設定。
如需詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的 PutBucketAccelerateConfiguration。