

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

# 管理 Amazon S3 檔案閘道的頻寬
<a name="MaintenanceUpdateBandwidth-common"></a>

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

您可以使用 AWS 管理主控台、 AWS 軟體開發套件 (SDK) 或 AWS Storage Gateway API 來設定bandwidth-rate-limit排程 （請參閱 *AWS Storage Gateway API 參考*中的 [UpdateBandwidthRateLimitSchedule](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateBandwidthRateLimitSchedule.html)。)。您可以使用頻寬速率限制排程，將限制設定為在一天或一週內自動變更。如需詳細資訊，請參閱[使用 Storage Gateway 主控台檢視和編輯閘道的bandwidth-rate-limit排程](#SchedulingBandwidthThrottling)。

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

**注意**  
頻寬速率限制僅適用於 Storage Gateway 檔案上傳。其他閘道操作不受影響。  
頻寬速率限制的運作方式是平衡每秒平均上傳的所有檔案輸送量。雖然上傳可能會短暫超過任何指定微秒或毫秒的頻寬速率限制，但這通常不會導致更長時間出現大量尖峰。  
Amazon FSx 檔案閘道類型目前不支援設定頻寬速率限制和排程。

**Topics**
+ [使用 Storage Gateway 主控台檢視和編輯閘道的bandwidth-rate-limit排程](#SchedulingBandwidthThrottling)
+ [使用 更新閘道頻寬速率限制 適用於 Java 的 AWS SDK](#MaintenanceUpdateBandwidthJava-common)
+ [使用 更新閘道頻寬速率限制 適用於 .NET 的 AWS SDK](#MaintenanceUpdateBandwidthDotNet-common)
+ [使用 更新閘道頻寬速率限制 AWS Tools for Windows PowerShell](#MaintenanceUpdateBandwidthPowerShell-common)

## 使用 Storage Gateway 主控台檢視和編輯閘道的bandwidth-rate-limit排程
<a name="SchedulingBandwidthThrottling"></a>

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

**檢視和編輯頻寬速率限制排程**

1. 前往 [https://console.aws.amazon.com/storagegateway/home](https://console.aws.amazon.com/storagegateway/) 開啟 Storage Gateway 主控台。

1. 在導覽窗格中，選擇**閘道**，然後選擇您要管理的閘道。

1. 在**動作**中，選擇**編輯頻寬速率限制排程**。

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

1. （選用） 選擇**新增頻寬速率限制**，將新的可設定間隔新增至排程。針對您新增的每個間隔，輸入下列資訊：
   + **上傳速率** – 輸入上傳速率限制，以每秒百萬位元 (Mbps) 為單位。最小值為 100 Mbps。
   + **星期幾** – 選取您希望套用間隔的星期幾或星期幾。您可以在工作日 （週一至週五）、週末 （週六和週日）、每週每天或每週特定一天套用間隔。若要在所有日期和所有時間均勻且持續地套用頻寬速率限制，請選擇**無排程**。
   + **開始時間** – 使用 HH：MM 格式和閘道 UTC 的時區位移，輸入頻寬間隔的開始時間。
**注意**  
頻寬速率限制間隔會從您在此處指定的分鐘開始時開始。
   + **結束時間** – 使用 HH：MM 格式和閘道與 GMT 的時區位移，輸入頻寬間隔的結束時間。
**重要**  
頻寬速率限制間隔在此處指定的分鐘結束時結束。若要排定在小時結束時結束的間隔，請輸入 **59**。  
 若要排程不間斷的連續間隔，在小時開始時轉換且間隔之間沒有中斷，請輸入 **59** 作為第一個間隔的結束分鐘。針對後續間隔的開始分鐘，輸入 **00**。

1. （選用） 視需要重複上一個步驟，直到完成bandwidth-rate-limit排程為止。如果您需要從排程中刪除間隔，請選擇 **移除**。
**重要**  
 頻寬速率限制間隔不能重疊。間隔的開始時間必須在前一個間隔的結束時間之後，以及在下列間隔的開始時間之前發生。

1. 完成後，選擇**儲存變更**。

## 使用 更新閘道頻寬速率限制 適用於 Java 的 AWS SDK
<a name="MaintenanceUpdateBandwidthJava-common"></a>

透過以程式設計方式更新頻寬速率限制，您可以在一段時間內自動調整這些限制，例如使用排程任務。下列範例示範如何使用 適用於 Java 的 AWS SDK更新閘道的頻寬速率限制。若要使用範例程式碼，您應該熟悉如何執行 Java 主控台應用程式。如需詳細資訊，請參閱《適用於 Java 的 AWS SDK 開發人員指南》**中的[入門](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java-dg-setup.html)。

**Example ：使用 更新閘道頻寬速率限制 適用於 Java 的 AWS SDK**  
下列 Java 程式碼範例會更新閘道的頻寬速率限制。若要使用此範例程式碼，您必須提供服務端點、閘道 Amazon Resource Name (ARN) 和上傳限制。如需可與 Storage Gateway 搭配使用的 AWS 服務端點清單，請參閱 *AWS 一般參考* 中的 [AWS Storage Gateway 端點與配額](https://docs.aws.amazon.com/general/latest/gr/sg.html)。  

```
    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
<a name="MaintenanceUpdateBandwidthDotNet-common"></a>

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

**Example ：使用 更新閘道頻寬速率限制 適用於 .NET 的 AWS SDK**  
下列 C\$1 程式碼範例會更新閘道的頻寬速率限制。若要使用此範例程式碼，您必須提供服務端點、閘道 Amazon Resource Name (ARN) 和上傳限制。如需可與 Storage Gateway 搭配使用的 AWS 服務端點清單，請參閱 *AWS 一般參考* 中的 [AWS Storage Gateway 端點與配額](https://docs.aws.amazon.com/general/latest/gr/sg.html)。  

```
    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
<a name="MaintenanceUpdateBandwidthPowerShell-common"></a>

透過以程式設計方式更新頻寬速率限制，您可以在一段時間內自動調整這些限制，例如使用排程任務。下列範例示範如何使用 AWS Tools for Windows PowerShell更新閘道的頻寬速率限制。若要使用範例程式碼，您應該熟悉如何執行 PowerShell 指令碼。如需詳細資訊，請參閱 *AWS Tools for PowerShell 使用者指南*中的[入門](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-started.html)。

**Example ：使用 更新閘道頻寬速率限制 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)
```