管理 Amazon S3 檔案閘道的頻寬 - AWS Storage Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

管理 Amazon S3 檔案閘道的頻寬

您可以將閘道的上傳輸送量限制為 AWS ,以控制閘道使用的網路頻寬量。根據預設,啟用的閘道沒有速率限制。

您可以使用 AWS Management Console、 AWS 軟體開發套件 (SDK) 或 AWS Storage Gateway API 來設定bandwidth-rate-limit排程 (請參閱 AWS Storage Gateway API 參考中的 UpdateBandwidthRateLimitSchedule。)。您可以使用頻寬速率限制排程,將限制設定為在一天或一週內自動變更。如需詳細資訊,請參閱使用 Storage Gateway 主控台檢視和編輯閘道的bandwidth-rate-limit排程

您可以使用 Storage Gateway 主控台中監控索引標籤或 Amazon CloudWatch 中的 CloudBytesUploaded 指標來監控Storage Gateway的上傳輸送量。

注意

頻寬速率限制僅適用於 Storage Gateway 檔案上傳。其他閘道操作不受影響。

頻寬速率限制的運作方式是平衡每秒平均上傳的所有檔案輸送量。雖然上傳可能會短暫超過任何指定微秒或毫秒的頻寬速率限制,但這通常不會導致更長時間出現大量尖峰。

Amazon FSx 檔案閘道類型目前不支援設定頻寬速率限制和排程。

使用 Storage Gateway 主控台檢視和編輯閘道的bandwidth-rate-limit排程

本節說明如何檢視和編輯閘道的頻寬速率限制排程。

檢視和編輯頻寬速率限制排程
  1. 前往 https://console.aws.amazon.com/storagegateway/home 開啟 Storage Gateway 主控台。

  2. 在導覽窗格中,選擇閘道,然後選擇您要管理的閘道。

  3. 動作中,選擇編輯頻寬速率限制排程

    閘道目前的bandwidth-rate-limit排程會顯示在編輯頻寬速率限制排程頁面上。根據預設,新的閘道沒有定義的頻寬速率限制。

  4. (選用) 選擇新增頻寬速率限制,將新的可設定間隔新增至排程。針對您新增的每個間隔,輸入下列資訊:

    • 上傳速率 – 輸入上傳速率限制,以每秒百萬位元 (Mbps) 為單位。最小值為 100 Mbps。

    • 星期幾 – 選取您希望套用間隔的星期幾或星期幾。您可以在工作日 (週一至週五)、週末 (週六和週日)、每週每天或每週特定一天套用間隔。若要始終統一且持續地套用頻寬速率限制,請選擇無排程

    • 開始時間 – 使用 HH:MM 格式和閘道 UTC 的時區位移,輸入頻寬間隔的開始時間。

      注意

      頻寬速率限制間隔會從您在此處指定的分鐘開始時開始。

    • 結束時間 – 使用 HH:MM 格式和閘道與 GMT 的時區偏移,輸入頻寬間隔的結束時間。

      重要

      頻寬速率限制間隔在此處指定的分鐘結束時結束。若要排定在小時結束時結束的間隔,請輸入 59

      若要排程不間斷的連續間隔,在小時開始時轉換且間隔之間沒有中斷,請輸入 59 作為第一個間隔的結束分鐘。針對後續間隔的開始分鐘,輸入 00

  5. (選用) 視需要重複上一個步驟,直到完成bandwidth-rate-limit排程為止。如果您需要從排程中刪除間隔,請選擇 移除

    重要

    頻寬速率限制間隔不能重疊。間隔的開始時間必須在前一個間隔的結束時間之後,以及在下列間隔的開始時間之前發生。

  6. 完成後,選擇儲存變更

使用 更新閘道頻寬速率限制 適用於 Java 的 AWS SDK

透過以程式設計方式更新頻寬速率限制,您可以在一段時間內自動調整這些限制,例如使用排程任務。下列範例示範如何使用 適用於 Java 的 AWS SDK更新閘道的頻寬速率限制。若要使用範例程式碼,您應該熟悉如何執行 Java 主控台應用程式。如需詳細資訊,請參閱《適用於 Java 的 AWS SDK 開發人員指南》中的入門

範例 :使用 更新閘道頻寬速率限制 適用於 Java 的 AWS SDK

下列 Java 程式碼範例會更新閘道的頻寬速率限制。若要使用此範例程式碼,您必須提供服務端點、閘道 Amazon Resource Name (ARN) 和上傳限制。如需可與 Storage Gateway 搭配使用的 AWS 服務端點清單,請參閱 AWS 一般參考 中的 AWS Storage Gateway 端點與配額

import java.io.IOException; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.PropertiesCredentials; import com.amazonaws.services.storagegateway.AWSStorageGatewayClient; import com.amazonaws.services.storagegateway.model. UpdateBandwidthRateLimitScheduleRequest; import com.amazonaws.services.storagegateway.model. UpdateBandwidthRateLimitScheduleReturn; import java.util.Arrays; import java.util.Collections; import java.util.List; public class UpdateBandwidthExample { public static AWSStorageGatewayClient sgClient; // The gatewayARN public static String gatewayARN = "*** provide gateway ARN ***"; // The endpoint static String serviceURL = "https://storagegateway.us-east-1.amazonaws.com"; // Rates static long uploadRate = 100 * 1024 * 1024; // Bits per second, minimum 100 Megabits/second public static void main(String[] args) throws IOException { // Create a Storage Gateway client sgClient = new AWSStorageGatewayClient(new PropertiesCredentials( UpdateBandwidthExample.class.getResourceAsStream("AwsCredentials.properties"))); sgClient.setEndpoint(serviceURL); UpdateBandwidth(gatewayARN, uploadRate, null); // download rate not supported by S3 File Gateways } private static void UpdateBandwidth(String gatewayArn, long uploadRate, long downloadRate) { try { BandwidthRateLimit bandwidthRateLimit = new BandwidthRateLimit(downloadRate, uploadRate); BandwidthRateLimitInterval noScheduleInterval = new BandwidthRateLimitInterval() .withBandwidthRateLimit(bandwidthRateLimit) .withDaysOfWeek(Arrays.asList(1, 2, 3, 4, 5, 6, 0)) .withStartHourOfDay(0) .withStartMinuteOfHour(0) .withEndHourOfDay(23) .withEndMinuteOfHour(59); UpdateBandwidthRateLimitScheduleRequest updateBandwidthRateLimitScheduleRequest = new UpdateBandwidthRateLimitScheduleRequest() .withGatewayARN(gatewayArn) .with BandwidthRateLimitIntervals(Collections.singletonList(noScheduleInterval)); UpdateBandwidthRateLimitScheduleReturn updateBandwidthRateLimitScheuduleResponse = sgClient.UpdateBandwidthRateLimitSchedule(updateBandwidthRateLimitScheduleRequest); String returnGatewayARN = updateBandwidthRateLimitScheuduleResponse.getGatewayARN(); System.out.println("Updated the bandwidth rate limits of " + returnGatewayARN); System.out.println("Upload bandwidth limit = " + uploadRate + " bits per second"); } catch (AmazonClientException ex) { System.err.println("Error updating gateway bandwith.\n" + ex.toString()); } } }

使用 更新閘道頻寬速率限制 適用於 .NET 的 AWS SDK

透過以程式設計方式更新頻寬速率限制,您可以在一段時間內自動調整這些限制,例如使用排程任務。下列範例示範如何使用適用於 .NET AWS 的軟體開發套件 (SDK) 來更新閘道的頻寬速率限制。若要使用範例程式碼,您應該熟悉如何執行 .NET 主控台應用程式。如需詳細資訊,請參閱《適用於 .NET 的 AWS SDK 開發人員指南》中的入門

範例 :使用 更新閘道頻寬速率限制 適用於 .NET 的 AWS SDK

下列 C# 程式碼範例會更新閘道的頻寬速率限制。若要使用此範例程式碼,您必須提供服務端點、閘道 Amazon Resource Name (ARN) 和上傳限制。如需可與 Storage Gateway 搭配使用的 AWS 服務端點清單,請參閱 AWS 一般參考 中的 AWS Storage Gateway 端點與配額

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Amazon.StorageGateway; using Amazon.StorageGateway.Model; namespace AWSStorageGateway { class UpdateBandwidthExample { static AmazonStorageGatewayClient sgClient; static AmazonStorageGatewayConfig sgConfig; // The gatewayARN public static String gatewayARN = "*** provide gateway ARN ***"; // The endpoint static String serviceURL = "https://storagegateway.us-east-1.amazonaws.com"; // Rates static long uploadRate = 100 * 1024 * 1024; // Bits per second, minimum 100 Megabits/second public static void Main(string[] args) { // Create a Storage Gateway client sgConfig = new AmazonStorageGatewayConfig(); sgConfig.ServiceURL = serviceURL; sgClient = new AmazonStorageGatewayClient(sgConfig); UpdateBandwidth(gatewayARN, uploadRate, null); Console.WriteLine("\nTo continue, press Enter."); Console.Read(); } public static void UpdateBandwidth(string gatewayARN, long uploadRate, long downloadRate) { try { BandwidthRateLimit bandwidthRateLimit = new BandwidthRateLimit(downloadRate, uploadRate); BandwidthRateLimitInterval noScheduleInterval = new BandwidthRateLimitInterval() .withBandwidthRateLimit(bandwidthRateLimit) .withDaysOfWeek(Arrays.asList(1, 2, 3, 4, 5, 6, 0)) .withStartHourOfDay(0) .withStartMinuteOfHour(0) .withEndHourOfDay(23) .withEndMinuteOfHour(59); List <BandwidthRateLimitInterval> bandwidthRateLimitIntervals = new List<BandwidthRateLimitInterval>(); bandwidthRateLimitIntervals.Add(noScheduleInterval); UpdateBandwidthRateLimitScheduleRequest updateBandwidthRateLimitScheduleRequest = new UpdateBandwidthRateLimitScheduleRequest() .withGatewayARN(gatewayARN) .with BandwidthRateLimitIntervals(bandwidthRateLimitIntervals); UpdateBandwidthRateLimitScheduleReturn updateBandwidthRateLimitScheuduleResponse = sgClient.UpdateBandwidthRateLimitSchedule(updateBandwidthRateLimitScheduleRequest); String returnGatewayARN = updateBandwidthRateLimitScheuduleResponse.GatewayARN; Console.WriteLine("Updated the bandwidth rate limits of " + returnGatewayARN); Console.WriteLine("Upload bandwidth limit = " + uploadRate + " bits per second"); } catch (AmazonStorageGatewayException ex) { Console.WriteLine("Error updating gateway bandwith.\n" + ex.ToString()); } } } }

使用 更新閘道頻寬速率限制 AWS Tools for Windows PowerShell

透過以程式設計方式更新頻寬速率限制,您可以在一段時間內自動調整這些限制,例如使用排程任務。下列範例示範如何使用 AWS Tools for Windows PowerShell更新閘道的頻寬速率限制。若要使用範例程式碼,您應該熟悉如何執行 PowerShell 指令碼。如需詳細資訊,請參閱 AWS Tools for PowerShell 使用者指南中的入門

範例 :使用 更新閘道頻寬速率限制 AWS Tools for Windows PowerShell

下列 PowerShell 指令碼範例會更新閘道的頻寬速率限制。若要使用此範例指令碼,您必須提供閘道 Amazon Resource Name (ARN) 和上傳限制。

<# .DESCRIPTION Update Gateway bandwidth limits schedule .NOTES PREREQUISITES: 1) AWS Tools for PowerShell from https://aws.amazon.com/powershell/ 2) Credentials and region stored in session using Initialize-AWSDefault. For more info, see https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html .EXAMPLE powershell.exe .\SG_UpdateBandwidth.ps1 #> $UploadBandwidthRate = 100 * 1024 * 1024 $gatewayARN = "*** provide gateway ARN ***" $bandwidthRateLimitInterval = New-Object Amazon.StorageGateway.Model.BandwidthRateLimitInterval $bandwidthRateLimitInterval.StartHourOfDay = 0 $bandwidthRateLimitInterval.StartMinuteOfHour = 0 $bandwidthRateLimitInterval.EndHourOfDay = 23 $bandwidthRateLimitInterval.EndMinuteOfHour = 59 $bandwidthRateLimitInterval.DaysOfWeek = 0,1,2,3,4,5,6 $bandwidthRateLimitInterval.AverageUploadRateLimitInBitsPerSec = $UploadBandwidthRate #Update Bandwidth Rate Limits Update-SGBandwidthRateLimitSchedule -GatewayARN $gatewayARN ` -BandwidthRateLimitInterval @($bandwidthRateLimitInterval) $schedule = Get-SGBandwidthRateLimitSchedule -GatewayARN $gatewayARN Write-Output("`nGateway: " + $gatewayARN); Write-Output("`nNew bandwidth throttle schedule: " + $schedule.BandwidthRateLimitIntervals.AverageUploadRateLimitInBitsPerSec)