管理您的 Amazon S3 文件网关的带宽 - AWS Storage Gatewa

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

管理您的 Amazon S3 文件网关的带宽

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

您可以使用 AWS 软件开发套件 (SDK) 或 AWS Storage Gateway API(参见 AWS Storage Gateway API 参考UpdateBandwidthRateLimitSchedule中)来配置 bandwidth-rate-limit计划。 AWS Management Console使用带宽速率限制计划,您可以将限制配置为在一天或一周内自动更改。有关更多信息,请参阅 使用 Storage Gateway 控制台查看和编辑网关的 bandwidth-rate-limit日程安排

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

注意

带宽速率限制仅适用于 Storage Gateway 文件上传。其他网关操作不受影响。

带宽速率限制的工作原理是平衡所有上传文件的吞吐量,平均每秒钟的吞吐量。虽然在任何给定的微秒或毫秒内,上传都可能短暂超过带宽速率限制,但这通常不会导致在较长时间内出现较大的峰值。

Amazon FSx 文件网关类型目前不支持配置带宽速率限制和计划。

使用 Storage Gateway 控制台查看和编辑网关的 bandwidth-rate-limit日程安排

本节介绍如何查看和编辑网关的带宽速率限制计划。

查看和编辑带宽速率限制计划
  1. https://console.aws.amazon.com/storagegateway/家中打开 Storage Gateway 控制台。

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

  3. 对于操作,选择编辑带宽速率限制计划

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

  4. (可选)选择添加新的带宽速率限制以向计划添加新的可配置间隔。对于您添加的每个间隔,请输入以下信息:

    • 上传速率-输入上传速率限制,单位为兆比特每秒 (Mbps)。最小值为 100 Mbps。

    • 一周中的几天-选择每周中要应用间隔的一天或几天。您可以将间隔应用于工作日(周一至周五)、周末(周六和周日)、一周中的每一天或每周的某一天。要在所有日期和任何时间均匀且持续地应用带宽速率限制,请选择 “无计划”。

    • 开始时间-使用 HH: MM 格式和网关与 UTC 的时区偏移量输入带宽间隔的开始时间。

      注意

      您的 bandwidth-rate-limit间隔从您在此处指定的分钟开始处开始。

    • 结束时间-使用 HH: MM 格式和网关与 GMT 的时区偏移量输入带宽间隔的结束时间。

      重要

      间 bandwidth-rate-limit隔在此处指定的分钟结束时结束。要计划在小时结束时结束的间隔,请输入 59

      要计划不间断的连续备份间隔,在小时开始时转换,并且在各个间隔之间没有中断,请对第一个间隔的结束分钟输入 59。对后续间隔的开始分钟输入 00

  5. (可选)根据需要重复上一个步骤,直到 bandwidth-rate-limit日程安排完成。如果您需要从计划中删除间隔,请选择删除

    重要

    Bandwidth-rate-limit间隔不能重叠。间隔的开始时间必须出现在前一个间隔的结束时间之后和下一个间隔的开始时间之前。

  6. 完成后,选择保存更改

使用更新网关带宽速率限制 适用于 Java 的 AWS SDK

通过以编程方式更新带宽速率限制,您可以在一段时间内自动调整这些限制,例如,使用计划任务。以下示例展示了如何使用 适用于 Java 的 AWS SDK更新网关的带宽速率限制。如需使用示例代码,您应该熟悉 Java 控制台应用程序的运行方式。有关更多信息,请参阅《适用于 Java 的 AWS SDK 开发人员指南》中的入门

例 : 使用更新网关带宽速率限制 适用于 Java 的 AWS SDK

以下 Java 代码示例更新网关的带宽速率限制。要使用此示例代码,您必须提供服务终端节点、您的网关 Amazon 资源名称 (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 资源名称 (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 资源名称 (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)