

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 Amazon S3 文件网关的带宽
<a name="MaintenanceUpdateBandwidth-common"></a>

您可以将网关的上传吞吐量限制为 AWS ，以控制网关使用的网络带宽量。默认情况下，已激活的网关没有任何速率限制。

您可以使用 AWS 软件开发套件 (SDK) 或 AWS Storage Gateway API（参见 *AWS Storage Gateway API 参考[UpdateBandwidthRateLimitSchedule](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateBandwidthRateLimitSchedule.html)*中）来配置 bandwidth-rate-limit计划。 AWS 管理控制台使用带宽速率限制计划时，可以将限制配置为在一天或一周内自动进行更改。有关更多信息，请参阅 [使用 Storage Gateway 控制台查看和编辑网关 bandwidth-rate-limit的时间表](#SchedulingBandwidthThrottling)。

您可以使用 Storage Gateway 控制台的 “**监控” 选项卡或 Amazon 中的`CloudBytesUploaded`指标来监控**网关的上传吞吐量 CloudWatch。

**注意**  
带宽速率限制仅适用于 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/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 在左侧导航窗格中，选择**网关**，然后选择要管理的网关。

1. 对于**操作**，选择**编辑带宽速率限制计划**。

   网关的当前 bandwidth-rate-limit计划显示在**编辑带宽速率限制计划**页面上。默认情况下，新网关没有已定义的带宽速率限制。

1. （可选）选择**添加新带宽速率限制**以向计划添加新的可配置间隔。对于添加的每个间隔，请输入以下信息：
   + **上传速率**：以兆位/秒（Mbps）为单位输入上传速率限制。最小值为 100 Mbps。
   + **周天数**：选择每周中您希望该时间间隔生效的那一天或几天。您可以将间隔应用于工作日（星期一至星期五）、周末（星期六和星期日）、一周中的每一天或每周的特定一天。要在所有日期和所有时间，始终如一、持续地应用带宽速率限制，请选择**无计划**。
   + **开始时间**：输入带宽间隔的开始时间，使用 HH:MM 格式，并加上您的网关所在时区相对于 UTC 的偏移量。
**注意**  
您的 bandwidth-rate-limit间隔从您在此处指定的分钟开始处开始。
   + **结束时间**：输入带宽间隔的结束时间，使用 HH:MM 格式，并加上您的网关所在时区相对于 GMT 的偏移量。
**重要**  
间 bandwidth-rate-limit隔在此处指定的分钟结束时结束。要计划在小时结束时结束的间隔，请输入 **59**。  
 要计划不间断的连续备份间隔，在小时开始时转换，并且在各个间隔之间没有中断，请对第一个间隔的结束分钟输入 **59**。对后续间隔的开始分钟输入 **00**。

1. （可选）根据需要重复上一个步骤，直到 bandwidth-rate-limit日程安排完成。如果您需要从计划中删除间隔，请选择**删除**。
**重要**  
 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 资源名称（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\# 代码示例更新网关的带宽速率限制。要使用此示例代码，您必须提供服务端点、网关的 Amazon 资源名称（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 资源名称（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)
```