

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

# 管理 Amazon S3 文件网关
<a name="managing-gateway-file"></a>

本节中的主题说明如何管理 Amazon S3 文件网关资源。网关管理包括授予网关访问文件共享和 Amazon S3 存储桶的权限、编辑网关和文件共享的信息和设置、删除文件共享、刷新缓存对象以及了解网关和文件共享的运行状态指示器。

**主题**
+ [编辑基本网关信息](edit-gateway-information.md)-了解如何使用 Storage Gateway 控制台编辑现有网关的基本信息，包括网关名称、时区和 CloudWatch 日志组。
+ [授予访问权限和权限](add-file-share.md)-了解如何使用 IAM 角色为您的网关提供 Amazon S3 存储桶和 Amazon VPC 终端节点的访问权限、防止某些安全问题以及如何跨 AWS 账户将文件共享连接到存储桶。
+ [删除文件共享](remove-file-share.md)：了解如何使用 Storage Gateway 控制台来删除文件共享。
+ [编辑网关 SMB 设置](edit-smb-access-settings.md)：了解如何编辑网关级 SMB 设置，以便控制网关上 SMB 文件共享的安全策略、Active Directory 身份验证、来宾访问、本地组权限以及文件共享可见性。
+ [编辑 SMB 文件共享设置](edit-smbfileshare-settings.md)：了解如何编辑设置，以便为 SMB 文件共享配置名称、日志记录、缓存刷新、存储类别、文件导出等。
+ [限制 SMB 文件共享访问](edit-file-share-access-smb.md)：了解如何添加允许或拒绝的用户或组，以便限制对 SMB 文件共享的访问权限。
+ [编辑 NFS 文件共享设置](edit-storage-class.md)：了解如何编辑设置，以便为 NFS 文件共享配置名称、日志记录、缓存刷新、存储类别、文件导出等。
+ [编辑 NFS 文件共享元数据默认值](edit-metadata-defaults.md)：了解如何编辑默认元数据值，包括对 NFS 文件共享上的文件和文件夹的 Unix 权限。
+ [限制 NFS 文件共享访问](edit-nfs-client.md)：了解如何限制对 NFS 文件共享的访问，仅允许来自特定 IP 地址或 IP 范围的客户端访问。
+ [刷新 Amazon S3 存储桶对象缓存](refresh-cache.md)：了解如何刷新文件共享的 S3 存储桶对象缓存以及如何配置计划来自动刷新缓存。
+ [使用 S3 对象锁定](s3-object-lock.md)：了解 Amazon S3 文件网关如何与 S3 对象锁定功能结合使用。
+ [文件共享状态](understand-file-share.md)：了解如何查看和解读文件共享状态。
+ [网关状态](understand-gateway-status.md)：了解如何查看和解读网关状态。
+ [管理 Amazon S3 文件网关的带宽](MaintenanceUpdateBandwidth-common.md)-了解如何将网关的上传吞吐量限制 AWS 为以控制网关使用的网络带宽量。

# 编辑 S3 文件网关的基本信息
<a name="edit-gateway-information"></a>

您可以使用 Storage Gateway 控制台编辑现有网关的基本信息，包括网关名称、时区和 CloudWatch 日志组。

**编辑现有网关的基本信息**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**网关**，然后选择要为其编辑基本信息的网关。

1. 从**操作**下拉菜单中，选择**编辑网关信息**。

1. 对于 **Gateway name (网关名称)**，输入网关的名称。可以搜索此名称，以便在 Storage Gateway 控制台中的列表页面上找到您的网关。
**注意**  
网关名称必须介于 2 到 255 个字符之间，并且不能包含斜杠（`\` 或 `/`）。  
更改网关名称将断开为监控网关而设置的所有 CloudWatch 警报的连接。要重新连接警报，请在 CloudWatch控制台中**GatewayName**更新每个警报的。

1. 对于**网关时区**，选择要在其中部署网关的地区的本地时区。

1. **在 “选择如何设置日志组**” 中，选择如何设置 Amazon L CloudWatch ogs 以监控网关的运行状况。可从以下选项中进行选择：
   + **创建新日志组**：设置新的日志组来监控您的网关。
   + **使用现有的日志组**：从相应的下拉列表中选择现有日志组。
   + **停用日志记录**-请勿使用 Amazon CloudWatch Logs 来监控您的网关。

1. 完成修改要更改的设置时，选择**保存更改**。

# 为文件共享和存储桶授予访问权限和权限
<a name="add-file-share"></a>

激活并运行您的 S3 文件网关后，您可以添加其他文件共享并授予对 Amazon S3 存储桶的访问权限，包括与您的网关 AWS 账户 不同的存储桶和文件共享。以下各节说明如何使用 IAM 角色为网关提供 Amazon S3 存储桶和 VPC 端点的访问权限、防止出现某些安全问题以及如何跨 AWS 账户将文件共享连接到存储桶。

有关如何创建新文件共享的信息，请参阅[创建文件共享](GettingStartedCreateFileShare.md)。

本节包含以下主题，这些主题提供有关如何为文件共享和 Amazon S3 存储桶授予访问权限和权限的额外信息：

**主题**
+ [授予对 Amazon S3 存储桶的访问权限](grant-access-s3.md)：了解如何为文件网关授予访问权限，以便将文件上传到 Amazon S3 存储桶，以及对其用于连接存储桶的任何接入点或 Amazon Virtual Private Cloud（Amazon VPC）端点执行操作。
+ [防止跨服务混淆代理](cross-service-confused-deputy-prevention.md)：了解如何防止常见的安全性问题，即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。
+ [使用文件共享进行跨账户访问](cross-account-access.md)：了解如何为 Amazon Web Services 账户和该账户的用户授予访问权限，以便访问属于另一个 Amazon Web Services 账户的资源。

# 授予对 Amazon S3 存储桶的访问权限
<a name="grant-access-s3"></a>

创建文件共享时，文件网关需要具备相关权限，以便将文件上传到 Amazon S3 存储桶，以及对其用于连接存储桶的任何接入点或虚拟私有云（VPC）端点执行操作。要授予此访问权限，您的文件网关将扮演一个 AWS Identity and Access Management (IAM) 角色，该角色与授予此访问权限的 IAM 策略相关联。

该角色需要此 IAM 策略以及与之有关的安全令牌服务 (STS) 信任关系。此策略确定了该角色可以执行的操作。此外，您的 S3 存储桶和任何关联的接入点或 VPC 端点都必须具有允许 IAM 角色进行访问的访问策略。

您可以自行创建角色和访问策略，也可以让文件网关为您创建。如果文件网关为您创建了策略，则该策略会包含 S3 操作列表。有关角色和权限的信息，请参阅《IAM 用户指南》**中的[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

下面是一个信任策略示例，该策略允许文件网关代入 IAM 角色。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "storagegateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

**重要**  
Storage Gateway 可以代入使用 `iam:PassRole` 策略操作传递的现有服务角色，但不支持使用 `iam:PassedToService` 上下文密钥将操作限制到特定服务的 IAM 策略。  
有关更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的以下主题：  
[IAM：将 IAM 角色传递给特定 AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam-passrole-service.html)
[向用户授予将角色传递给 AWS 服务的权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
[IAM 的可用密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_PassedToService)

如果您不希望文件网关代表您创建策略，您可以创建自己的策略并将其附加到文件共享。有关此操作的详细信息，请参阅 [创建文件共享](GettingStartedCreateFileShare.md)。

借助以下示例策略，文件网关可以执行策略中列出的所有 Amazon S3 操作。语句的第一部分允许对名为 `amzn-s3-demo-bucket` 的 S3 存储桶执行列出的所有操作。第二部分允许对 `amzn-s3-demo-bucket` 中的所有对象执行列出的操作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:GetAccelerateConfiguration",
                "s3:GetBucketLocation",
                "s3:GetBucketVersioning",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Effect": "Allow"
        }
    ]
}
```

------

以下示例策略与上一个策略类似，但该策略让您的文件网关可以执行通过接入点访问存储桶所需的操作。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/TestAccessPointName/*",
            "Effect": "Allow"
        }
    ]
}
```

------

**注意**  
如果您需要通过 VPC 端点将文件共享连接到 S3 存储桶，请参阅《AWS PrivateLink 用户指南》**中的 [Amazon S3 的端点策略](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#vpc-endpoints-policies-s3)。

**注意**  
对于加密存储桶，文件共享必须使用目标 S3 存储桶账户中的密钥。

**注意**  
***如果您的文件网关使用 SSE-KMS 或 DSSE-KMS 进行加密，请确保与文件共享关联的 IAM 角色包括 *kms: encrypt、kms: decrypt、kms:* *\$1、kms: 和* kms: 权限。ReEncrypt GenerateDataKey DescribeKey***有关更多信息，请参阅[为 Storage Gateway 使用基于身份的策略（IAM 策略）](https://docs.aws.amazon.com/filegateway/latest/files3/using-identity-based-policies.html)。

# 防止跨服务混淆代理
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理问题是一个安全性问题，即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。在中 AWS，跨服务模仿可能会导致混乱的副手问题。一个服务（*呼叫服务*）调用另一项服务（*所谓的服务*）时，可能会发生跨服务模拟。可以操纵调用服务，使用其权限以在其他情况下该服务不应有访问权限的方式对另一个客户的资源进行操作。为防止这种情况， AWS 提供可帮助您保护所有服务的数据的工具，而这些服务中的服务主体有权限访问账户中的资源。

我们建议在资源策略中使用[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)和[https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)全局条件上下文密钥来限制为资源 AWS Storage Gateway 提供其他服务的权限。如果使用两个全局条件上下文键，在同一策略语句中使用时，`aws:SourceAccount` 值和 `aws:SourceArn` 值中的账户必须使用相同的账户 ID。

`aws:SourceArn` 的值必须是与您的文件共享关联的 Storage Gateway 的 ARN。

防范混淆代理问题最有效的方法是使用 `aws:SourceArn` 全局条件上下文键和资源的完整 ARN。如果不知道资源的完整 ARN，或者正在指定多个资源，请针对 ARN 未知部分使用带有通配符（`*`）的 `aws:SourceArn` 全局上下文条件键。例如 `arn:aws:servicename::123456789012:*`。

以下示例说明如何使用 Storage Gateway 中的 `aws:SourceArn` 和 `aws:SourceAccount` 全局条件上下文键来防范混淆代理问题。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
       "Sid": "ConfusedDeputyPreventionExamplePolicy",
       "Effect": "Allow",
       "Principal": {
         "Service": "storagegateway.amazonaws.com"
       },
       "Action": "sts:AssumeRole",
       "Condition": {
         "StringEquals": {
           "aws:SourceAccount": "444455556666"
         },
         "ArnLike": {
          "aws:SourceArn": "arn:aws:storagegateway:us-east-1:444455556666:gateway/sgw-123456DA"
        }
      }
    }
  ]  
}
```

------

# 使用文件共享进行跨账户访问
<a name="cross-account-access"></a>

*跨账户访问*就是为 Amazon Web Services 账户和该账户的用户授予访问权限，以便访问属于另一个 Amazon Web Services 账户的资源。有了文件网关，您可以使用一个 Amazon Web Services 账户中的文件共享来访问属于另一个 Amazon Web Services 账户的 Amazon S3 存储桶中的对象。

**使用一个 Amazon Web Services 账户拥有的文件共享来访问另一个 Amazon Web Services 账户中的 S3 存储桶**

1. 确保 S3 存储桶拥有者已授权您的 Amazon Web Services 账户访问您需要访问的 S3 存储桶以及该存储桶中的对象。有关如何授予此访问权限的信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[示例 2：存储桶所有者授予跨账户存储桶权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)。有关所需权限的列表，请参阅[授予对 Amazon S3 存储桶的访问权限](grant-access-s3.md)。

1. 确保您的文件共享用来访问 S3 存储桶的 IAM 角色包含 `s3:GetObjectAcl` 和 `s3:PutObjectAcl` 等操作的权限。此外，确保 IAM 角色包括允许您的账户代入该 IAM 角色的信任策略。有关信任策略的示例，请参阅[授予对 Amazon S3 存储桶的访问权限](grant-access-s3.md)。

   如果您的文件共享使用现有角色来访问 S3 存储桶，您应包含 `s3:GetObjectAc`l 和 `s3:PutObjectAcl` 操作的权限。IAM 角色还需要一个允许您的帐户带入此角色的信任策略。有关信任策略的示例，请参阅[授予对 Amazon S3 存储桶的访问权限](grant-access-s3.md)。

1. [在家中创建**文件共享或编辑文件共享设置时，选择 S3 存储桶所有者可以访问的 Gat** eway 文件。https://console.aws.amazon.com/storagegateway/](https://console.aws.amazon.com/storagegateway/)

在为跨账户访问权限创建或更新文件共享并在本地挂载该文件共享后，我们强烈建议您测试设置。为此，您可以列出目录内容或者编写测试文件并确保这些文件在 S3 存储桶中显示为对象。

**重要**  
确保设置正确的策略以授予跨账户访问文件共享所使用的账户。如果您未这样做，则通过本地应用程序对文件所做的更新不能传播到您正在使用的 Amazon S3 存储桶。

## 资源
<a name="related-topics-fileshare"></a>

有关访问策略和访问控制列表的更多信息，请参阅以下内容：

《Amazon Simple Storage Service 用户指南》**中的[使用可用访问策略选项的准则](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-alternatives-guidelines.html)

《Amazon Simple Storage Service 用户指南》**中的[访问控制列表（ACL）概述](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)

# 删除文件共享
<a name="remove-file-share"></a>

如果您不再需要某个文件共享，可以从 Storage Gateway 控制台将其删除。删除文件共享时，网关会从文件共享映射到的 Amazon S3 存储桶分离。但是，S3 存储桶及其内容不会被删除。

在删除文件共享时，如果网关正在向 S3 存储桶上传数据，则删除过程需要等到所有数据上传完之后才会完成。在数据完全上传之前，文件共享将具有 DELETING 状态。

如果您不想等到数据都上传完毕后再删除文件共享，则请参阅本主题稍后的**强制删除文件共享**步骤。

**删除文件共享**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**文件共享**，然后选择一个或多个要删除的文件共享。

1. 对于 **Actions**，选择 **Delete file share**。此时会显示确认对话框。

1. 确认要删除指定的文件共享，然后在确认框中键入单词 *delete* 并选择**删除**。

在某些情况下，您可能不想等到写入网络文件系统 (NFS) 文件共享上文件的所有数据都上传完毕后再删除文件共享。例如，您可能希望有意地丢弃那些已经写入但尚未上传的数据，或者支持文件共享的 Amazon S3 存储桶可能已删除，这意味着无法再上传指定的数据。

在这些情况下，您可以使用 AWS 管理控制台 或 `DeleteFileShare` API 操作强制删除文件共享。此操作会停止数据上传过程。执行此操作后，文件共享将进入 FORCE\$1DELETING 状态。要使用 Storage Gateway 控制台强制删除文件共享，请参阅以下过程。<a name="force-delete"></a>

**强制删除文件共享**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 从**文件共享**列表页面中，选择您在上述过程中标记为删除的文件共享以查看其详细信息。几秒钟后，**详细信息**选项卡上会显示一条删除通知消息。

1. 在**详细信息**选项卡上显示的消息中，验证要强制删除的文件共享的 ID，选中确认框，然后选择**立即强制删除**。
**注意**  
您无法撤消强制删除操作。  
当您强制删除文件共享时，分段上传中已部分传输的文件可能会保留在 Amazon S3 中，这样会产生存储费用。建议配置 Amazon S3 存储桶生命周期规则，以便自动删除这些文件分段。有关更多信息，请参阅[最佳实践：管理分段上传](https://docs.aws.amazon.com/filegateway/latest/files3/best-practices-managing-multi-part-uploads.html)。

您也可以使用 [DeleteFileShare](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteFileShare.html)API 操作强制删除文件共享。使用 API 删除文件共享需要 `storagegateway:DeleteFileShare` IAM 策略权限。

# 编辑网关的 SMB 设置
<a name="edit-smb-access-settings"></a>

借助网关级 SMB 设置，您可为网关上的 SMB 文件共享配置安全策略、Active Directory 身份验证、来宾访问、本地组权限以及文件共享可见性。

**编辑网关级 SMB 设置**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**网关**，然后选择要编辑其 S​​MB 设置的网关。

1. 从**操作**下拉菜单中，选择**编辑 SMB 设置**，然后选择要编辑的设置。

本节包含以下主题，这些主题介绍与配置网关的每个 SMB 设置相关的额外信息和程序。

**主题**
+ [设置网关安全级别](security-strategy.md)：了解如何设置安全级别以指定连接要求，例如服务器消息块（SMB）签名和加密，以及是否允许来自 SMB 版本 1 客户端的连接。
+ [配置 Active Directory 身份验证](enable-ad-settings.md)-了解如何配置企业活动目录或 AWS 托管 Microsoft AD，以便用户通过身份验证访问您的 SMB 文件共享。
+ [向来宾提供访问权限](guest-access.md)：了解如何将网关配置为允许任何提供正确来宾账户用户名和密码的用户进行来宾访问。
+ [配置本地组](local-group-settings.md)：了解如何配置本地组以向 Active Directory 用户授予特殊文件共享权限。
+ [设置文件共享可见性](file-share-visibility.md)：了解在向用户列出共享时如何指定网关上的共享是否可见。

# 设置网关的安全级别
<a name="security-strategy"></a>

通过使用 S3 文件网关，您可以指定网关的安全级别。通过指定此安全级别，您可以设置网关是否需要服务器消息块（SMB）签名或 SMB 加密，或者您是否要允许使用 SMB 版本 1。

**配置安全级别**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**网关**，然后选择要编辑其 S​​MB 设置的网关。

1. 从**操作**下拉菜单中，选择**编辑 SMB 设置**，然后选择 **SMB 安全设置**。

1. 对于 **Security level (安全级别)**，请选择下列选项之一：
**注意**  
有关使用 API 配置此设置的信息，请参阅 AWS AP *AWS Storage Gateway I 参考*中的[更新SMBSecurity策略](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateSMBSecurityStrategy.html)。  
较高的安全策略级别可能会影响网关的性能。
   + **强制 AES256 加密**-如果选择此选项，则 S3 文件网关仅允许来自使用 256 位 AES 加密算法的 SMBv3客户端的连接。不允许 128 位算法。对于处理敏感数据的环境，建议使用此选项。该选项适用于 Microsoft Windows 上的所有当前 SMB 客户端。
   + **强制加密**-如果选择此选项，则 S3 文件网关仅允许来自已开启加密的 SMBv3 客户端的连接。允许 256 位和 128 位算法。对于处理敏感数据的环境，建议使用此选项。该选项适用于 Microsoft Windows 上的所有当前 SMB 客户端。
   + **强制签名**-如果选择此选项，则 S3 文件网关仅允许来自 SMBv2 或已开启签名的 SMBv3 客户端的连接。此选项适用于 Microsoft Windows 上的所有当前 SMB 客户端。
   + **客户端协商**：如果选择此选项，则将根据客户端协商的内容建立请求。当您希望更大程度地提高环境中的各个客户端之间的兼容性时，建议使用此选项。
**注意**  
对于 2019 年 6 月 20 日之前激活的网关，默认安全级别为 **Client negotiated (客户端协商)**。  
对于 2019 年 6 月 20 日及以后激活的网关，默认安全级别为 **Enforce encryption (强制加密)**。

1. 选择**保存**。

# 使用 Active Directory 对用户进行身份验证
<a name="enable-ad-settings"></a>

要使用您的企业活动目录或 AWS Managed Microsoft AD 让用户通过身份验证访问您的 SMB 文件共享，请使用您的 Microsoft AD 域凭据编辑网关的 SMB 设置。这样做可以使网关加入 Active Directory 域并允许该域的成员访问 SMB 文件共享。

**注意**  
使用 Directory Service，您可以在中创建托管的 Active Directory 域服务 AWS 云。  
要 AWS Managed Microsoft AD 与 Amazon EC2 网关一起使用，您必须在与相同的 VPC 中创建 Amazon EC2 实例 AWS Managed Microsoft AD，将 \$1workspaceMembers 安全组添加到 Amazon EC2 实例，然后使用中的管理员证书加入 AD 域。 AWS Managed Microsoft AD  
有关的更多信息 AWS Managed Microsoft AD，请参阅《[https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)。  
有关 Amazon EC2 的更多信息，请参阅 [https://docs.aws.amazon.com/ec2/](https://docs.aws.amazon.com/ec2/)。

您也可以在 SMB 文件共享上激活访问控制列表 (ACLs)。有关如何激活的信息 ACLs，请参阅[使用 Windows ACLs 限制 SMB 文件共享访问权限](smb-acl.md)。

**开启 Active Directory 身份验证**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**网关**，然后选择要编辑其 S​​MB 设置的网关。

1. 从**操作**下拉菜单中，选择**编辑 SMB 设置**，然后选择**Active Directory 设置**。

1. 在**域名**中，输入您希望网关加入的 Active Directory 域的名称。
**注意**  
当网关从未加入域时，**Active Directory status (Active Directory 状态)** 显示 **Detached (已分离)**。  
您的 Active Directory 服务账户必须具有必要的权限。有关更多信息，请参阅 [Active Directory 服务账户权限要求](https://docs.aws.amazon.com/filegateway/latest/files3/ad-serviceaccount-permissions.html)。  
加入域会在默认计算机容器（不是 OU）中创建一个 Active Directory 计算机账户，并使用网关的**网关 ID** 作为账户名（例如，SGW-1234ADE）。此账户的名称无法自定义。  
如果您的 Active Directory 环境要求您预先创建账户以简化加入域的流程，则需要提前创建此账户。  
如果您的 Active Directory 环境为新的计算机对象指定了 OU，则在加入域时必须指定该 OU。  
如果您的网关无法加入 Active Directory 目录，请尝试使用 [JoinDomain](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_JoinDomain.html)API 操作使用该目录的 IP 地址加入。

1. 在**域用户**和**域密码**中，输入网关用于加入域的 Active Directory 服务账户的凭证。

1. （可选）对于**组织单元（OU）**，输入您的 Active Directory 用于新计算机对象的指定 OU。

1. （可选）对于**域控制器 (DC)**，输入您的网关将 DCs 通过其连接到 Active Directory 的一个或多个控制器的名称。您可以以逗号分隔 DCs 列表的形式输入多个列表。您可以将此字段留空以允许 DNS 自动选择 DC。

1. 选择**保存更改**。

**将文件共享访问权限限制到特定 AD 用户和组**

1. 在 Storage Gateway 控制台中，选择要限制访问的文件共享。

1. 从**操作**下拉菜单中，选择**编辑文件共享访问设置**。

1. 在**用户和组文件共享访问**部分，选择您的设置。

   对于**允许的用户和组**，选择**添加允许的用户**或**添加允许的组**，然后输入要允许文件共享访问的 AD 用户或组。重复此过程以允许所需数量的用户和组。

   对于**拒绝的用户和组**，选择**添加拒绝的用户**或**添加拒绝的组**，然后输入要拒绝文件共享访问的 AD 用户或组。重复此过程以根据需要拒绝所需数量的用户和组。
**注意**  
仅当已选择 **Active Directory** 时，**用户和组文件共享访问**部分才会出现。  
组必须以 `@` 字符为前缀。可接受的格式包括：`DOMAIN\User1`、`user1`、`@group1` 和 `@DOMAIN\group1`。  
如果您配置了**允许和拒绝的用户和组**列表，则 Windows ACLs 将不会授予覆盖这些列表的任何访问权限。  
之前会评估 “**允许的用户和组” 和 “拒绝**的用户和组” 列表 ACLs，并控制哪些用户可以装载或访问文件共享。如果任何用户或组被添加到**允许**列表中，则该列表被视为处于激活状态，只有这些用户才能挂载文件共享。  
用户挂载文件共享 ACLs 后，请提供更精细的保护，控制用户可以访问哪些特定文件或文件夹。有关更多信息，请参阅[在新的 SMB 文件共享 ACLs 上激活 Windows](https://docs.aws.amazon.com/filegateway/latest/files3/smb-acl.html#enable-acl-new-fileshare)。

1. 完成添加条目后，选择**保存**。



# 向来宾提供对文件共享的访问权限
<a name="guest-access"></a>

您可以将 S3 文件网关配置为允许任何能够提供正确来宾账户用户名和密码的用户进行来宾访问。如果您希望这是用户访问您的文件网关的唯一方法，则无需将网关加入到 Microsoft Active Directory 域。您也可以使用这种来宾访问方法在作为 Active Directory 域成员的 S3 文件网关中创建文件共享。

将文件共享配置为使用**来宾访问**身份验证方法时，来宾访问用户名为 `smbguest`。在使用来宾访问创建文件共享之前，您需要为 `smbguest` 用户更改默认密码。

您可以按照以下程序更改来宾用户 `smbguest` 的密码。

**更改来宾访问密码**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 从控制台页面左侧的导航窗格中选择**网关**，然后选择要为其提供来宾访问的网关的**名称**。

1. 从**操作**下拉菜单中，选择**编辑 SMB 设置**，然后选择**来宾访问设置**。

1. 在**来宾密码**中，输入要设置的来宾访问密码，然后选择**保存更改**。

# 为网关配置本地组
<a name="local-group-settings"></a>

借助本地组设置，您可以向 Active Directory 用户或组授予对网关上的 SMB 文件共享的特殊权限。

您可以使用本地组设置来分配网关管理员权限。网关管理员可以使用 Microsoft 管理控制台中的共享文件夹管理单元强制关闭处于打开及锁定状态的文件。

**注意**  
您必须至少添加一个网关管理员用户或组，然后才能将网关加入到 Active Directory 域。

**分配网关管理员**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**网关**，然后选择要编辑其 S​​MB 设置的网关。

1. 从**操作**下拉菜单中，选择**编辑 SMB 设置**，然后选择**本地组设置**。

1. 在**本地组设置**部分，选择您的设置。此部分仅显示使用 Active Directory 的文件共享。

   对于**网关管理员**，请添加要授予本地网关管理员权限的 Active Directory 用户和组。每行添加一个用户或组，包括域名。例如 **corp\$1Domain Admins**。要创建额外行，请选择**添加新的网关管理员**。
**注意**  
编辑网关管理员会断开连接并重新连接所有 SMB 文件共享。

1. 选择**保存更改**，然后选择**继续**以确认收到出现的警告消息。

# 设置文件共享可见性
<a name="file-share-visibility"></a>

文件共享可见性控制向用户列出共享（例如以网络视图或浏览列表显示）时网关上的共享是否可见。如果网关上的文件共享可见，则在客户端知道网关 IP 地址或 DNS 名称时，可以使用文件浏览器轻松发现共享。如果文件共享不可见，则除了网关 IP 或 DNS 名称之外，客户端还需要知道文件共享名称才能发现共享。

**注意**  
此设置不是保护部署中文件共享访问权限的有效方法。为了安全起见，建议配置权限来限制对特定用户和组的访问。有关说明，请参阅[限制用户和组对 SMB 文件共享的访问](https://docs.aws.amazon.com/filegateway/latest/files3/edit-file-share-access-smb.html)。

**设置文件共享可见性**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**网关**，然后选择要编辑其 S​​MB 设置的网关。

1. 从**操作**下拉菜单中，选择**编辑 SMB 设置**，然后选择**文件共享可见性设置**。

1. 对于**可见性状态**，如果您希望在网关向用户列出共享时显示此网关上的共享，请选中该复选框。如果您不希望在网关向用户列出共享时显示此网关上的共享，请取消选中该复选框。

# 编辑 SMB 文件共享的设置
<a name="edit-smbfileshare-settings"></a>

您可以编辑现有 SMB 文件共享的以下设置：
+ **文件共享名称**：为文件共享选择一个名称
+ **审核日志**：打开或关闭审核日志
+ **现有日志组列表**：为审核日志选择现有的日志组
+ **非网关文件缓存刷新时间**：指定刷新文件共享缓存的时间间隔
**注意**  
在经常创建或删除大量 Amazon S3 对象的情况下，将此值设置为短于 30 分钟会对网关性能产生负面影响。
+ **上传事件稳定时间**：指定在客户端最后一次向文件写入数据之后，系统应等待多少秒，再生成 `ObjectUploaded` 通知
+ **新对象的存储类别**：选择要为在 Amazon S3 存储桶中创建的新对象使用的存储类别：
+ **猜测 MIME 类型**：选择是否要让 Storage Gateway 根据文件扩展名来猜测已上传对象的 MIME 类型
+ **S3 存储桶所有者可以访问网关文件-选择是否允许**拥有链接到文件共享的 Amazon S3 存储桶的 AWS 账户访问网关上的文件
+ **启用申请方付款**：选择是否要求从文件共享中读取或请求数据的账户而不是存储桶所有者支付访问费用
+ **导出为**：选择文件是以读写还是只读状态导出
+ **文件和目录访问权限由控制**-选择是使用 Windows ACLs 还是 POSIX 权限来控制文件和目录访问权限
+ **操作锁定（oplock）**：选择是否允许文件共享使用操作锁定来优化文件缓冲策略
+ **强制区分大小写**：选择是客户端还是网关控制文件和目录名的大小写
**注意**  
如果文件共享当前已激活强制区分大小写，则停用它可能会导致名称相同但大小写不同的文件（例如 file.txt、File.txt）无法访问。不区分大小写的客户端只能访问一个版本。
+ **文件和目录基于访问的枚举**：选择是在目录枚举期间使共享上的文件和文件夹对所有用户可见，还是仅对具有读取访问权限的用户可见

**注意**  
您无法编辑现有文件共享以指向新的存储桶或接入点，也无法修改 VPC 端点设置。只有在创建新文件共享时，才能配置这些设置。

**编辑文件共享设置**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择 **File shares**，然后选择要更新的文件共享。

1. 对于**操作**，选择**编辑文件共享设置**。

1. 编辑要更改的任何设置。

1. 选择**保存**。

# 限制用户和组对 SMB 文件共享的访问
<a name="edit-file-share-access-smb"></a>

建议添加允许或拒绝的用户或组，以便限制对文件共享的访问权限。否则，所有经过身份验证的用户都可访问文件共享。

**编辑 SMB 访问设置**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**文件共享**，然后选择要编辑的 SMB 文件共享。

1. 对于**操作**，选择**编辑文件共享访问设置**。

1. 在**用户和组文件共享访问**部分，选择您的设置。

   对于**允许的用户和组**，选择**添加允许的用户**或**添加允许的组**，然后输入要允许文件共享访问的 AD 用户或组。重复此过程以允许所需数量的用户和组。不在**允许的用户和组**列表中的任何用户都将被拒绝访问。

   对于**拒绝的用户和组**，选择**添加拒绝的用户**或**添加拒绝的组**，然后输入要拒绝文件共享访问的 AD 用户或组。重复此过程以根据需要拒绝所需数量的用户和组。如果**允许的用户和组**列表为空，则为除**拒绝的用户和组**列表中的用户之外的所有用户授予访问权限。
**注意**  
仅输入 AD 用户或组名称。域名由网关加入的特定 AD 中的网关成员身份隐式确定。  
如果您未指定任何允许或拒绝的用户或组，任何经过身份验证的 AD 用户都可以导出文件共享。

# 更改现有文件共享的服务器端加密方法
<a name="edit-file-share-encryption"></a>

以下程序说明了如何使用 Storage Gateway 控制台更改现有 NFS 或 SMB 文件共享的服务器端加密方法。要使用 Storage Gateway API 执行此操作，请参阅 *AWS Storage Gateway API 参考*中的[更新NFSFileSMBFile共享](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateNFSFileShare.html)[或更新共享](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateSMBFileShare.html)。

**注意**  
更新加密方法后，新方法会应用于存储在 Amazon S3 存储桶中的现有对象。  
如果您将文件网关配置为使用 SSE-KMS 进行加密，则必须手动向与文件共享关联的 IAM 角色添加 `kms:Encrypt`、`kms:Decrypt`、`kms:ReEncrypt*`、`kms:GenerateDataKey` 和 `kms:DescribeKey` 权限。有关更多信息，请参阅[为 Storage Gateway 使用基于身份的策略（IAM 策略）](https://docs.aws.amazon.com/filegateway/latest/files3/using-identity-based-policies.html)。

**更改 NFS 或 SMB 文件共享的服务器端加密方法**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**文件共享**，然后选择要为其更改加密方法的文件共享。

1. 对于**操作**，选择**编辑文件共享加密**。

1. 对于**加密**，选择要对 Amazon S3 中的静态文件使用的加密类型：
   + 要使用由 Amazon S3 托管的服务器端加密（SSE-S3），请选择 **S3 托管密钥（SSE-S3）**。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用 Amazon S3 托管密钥的服务器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)。
   + 要使用由 AWS 密钥管理服务 (SSE-KMS) 管理的服务器端加密，请选择 KMS **管理的密钥 (SSE-K** MS)。对于**主 KMS 密钥**，请选择现有的 AWS KMS 密钥，或者选择**创建新的 KMS 密钥**以在密 AWS 钥管理服务 (AWS KMS) 控制台中创建新的 KMS 密钥。

     有关的更多信息 AWS KMS，请参阅[什么是 AWS 密钥管理服务？](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 在《*AWS Key Management Service 开发人员指南》*中。
   + 要使用由 AWS 密钥管理服务 (DSSE-KMS) 管理的双层服务器端加密，请选择使用密钥进行**双层服务器端加密** (DSSE-KMS)。 AWS Key Management Service 对于**主 KMS 密钥**，请选择现有的 AWS KMS 密钥，或者选择**创建新的 KMS 密钥**以在密 AWS 钥管理服务 (AWS KMS) 控制台中创建新的 KMS 密钥。

     有关 DSSE-KMS 的更多信息，请参阅 A *mazon 简单存储*服务用户指南[AWS KMS 中的使用带密钥的双层服务器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingDSSEncryption.html)。
**注意**  
使用 DSSE-KMS 和 AWS KMS 密钥需要支付额外费用。有关更多信息，请参阅[AWS KMS 定价](https://aws.amazon.com/kms/pricing/)。  
要指定别名未列出的 AWS KMS 密 AWS KMS 钥或使用来自其他 AWS 账户的密钥，必须使用 AWS Command Line Interface。不支持非对称 KMS 密钥。有关更多信息，请参阅 *AWS Storage Gateway API 参考*中的[创建SMBFile共享](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateSMBFileShare.html)。

1. 完成后，选择**保存更改**。

# 编辑 NFS 文件共享的设置
<a name="edit-storage-class"></a>

创建 NFS 文件共享后，请按以下步骤编辑现有 NFS 文件共享的设置。

**注意**  
您无法编辑现有文件共享以指向新的存储桶或接入点，也无法修改 VPC 端点设置。只有在创建新文件共享时，才能配置这些设置。

**编辑文件共享设置**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择 **File shares**，然后选择要更新的文件共享。

1. 对于**操作**，选择**编辑文件共享设置**。

1. 对于**文件共享名称**，输入文件共享的名称。

1. 对于**审核日志**，请选择以下选项之一：
   + 要为此文件共享创建新日志组，请选择**创建新的日志组**。
   + 要将此文件共享的运行状况和资源通知发送到现有日志组，请选择**使用现有日志组**，然后从列表中选择所需的组。
   + 要关闭此文件共享的日志记录，请选择**停用日志记录**。

   有关审核日志的更多信息，请参阅[了解 S3 文件网关审核日志](https://docs.aws.amazon.com/filegateway/latest/files3/monitoring-file-gateway.html#audit-logs)。

1. 对于**非网关文件缓存刷新时间**，请选择**设置刷新间隔**，然后使用存活时间（TTL）设置以**分钟**或**天**为单位刷新文件共享缓存的时间。TTL 指的是自上次刷新以来的时间长度。在 TTL 间隔过后，访问目录会使文件网关从 Amazon S3 存储桶刷新该目录的内容。
**注意**  
在经常创建或删除大量 Amazon S3 对象的情况下，将此值设置为短于 30 分钟会对网关性能产生负面影响。

1. 对于**上传事件稳定时间**，选择**设置稳定时间**，然后输入以秒为单位的稳定时间。**稳定时间**控制最近的客户端写入操作与生成 `ObjectUploaded` 日志通知之间的最小延迟。由于客户端可以在短时间内对文件进行多次小规模写入，因此，建议将此参数设置为尽可能长的时间，以避免快速、连续地为同一文件生成多个通知。有关更多信息，请参阅[获取文件上传通知](https://docs.aws.amazon.com/filegateway/latest/files3/monitoring-file-gateway.html#get-file-upload-notification)。

1. **对于新对象的存储类别**，请从下拉列表中选择一个存储类别。有关存储类别的更多信息，请参阅[使用文件网关的存储类别](https://docs.aws.amazon.com/filegateway/latest/files3/storage-classes.html#ia-file-gateway)。

1. 在**对象元数据**下，执行以下操作：

   1. 如果要允许 Storage Gateway 根据已上传对象的文件扩展名来猜测其介质类型，请选择**猜测 MIME 类型**。

   1. 如果您希望拥有 **S3 存储桶的 AWS 账户拥有网关创建的文件的完全所有权，包括读取、写入、编辑和删除权限，请选择 S3 存储桶所有者**可以访问的网关文件。

1. 如果您希望文件请求者而不是存储桶拥有者支付数据请求和从 S3 存储桶下载的费用，请选择**启用申请方付款**。

1. 

1. 对于**访问级别**，请选择以下选项之一：
   + **根 squash (默认)**：远程超级用户（root 用户）的访问权限将映射到 UID（65534）和 GID（65534）。
   + **所有 squash**：所有用户访问映射到用户 ID（UID）（65534）和组 ID（GID）（65534）。
   + **无根 squash**：远程超级用户（根）以根用户身份接收访问权限。

1. 对于**导出为**，选择以下选项之一：
   + 要允许客户端读取和写入文件共享上的文件，请选择**读/写**。
   + 要允许客户端读取文件但不能写入文件共享，请选择**只读**。
**注意**  
对于在 Microsoft Windows 客户端上挂载的文件共享，如果您选择**只读**，则可能会看到有关某个意外错误阻止您创建文件夹的消息。您可以忽略此消息。

1. 编辑完设置后，选择**保存更改**。

# 编辑 NFS 文件共享的元数据默认值
<a name="edit-metadata-defaults"></a>

如果您没有为存储桶中的文件或目录设置元数据值，则 S3 文件网关将设置默认元数据值。这些值包括文件和文件夹的 Unix 权限。您可以在 Storage Gateway 控制台中编辑元数据默认值。

当 S3 文件网关在 Amazon S3 中存储文件和文件夹时，Unix 文件权限将存储在对象元数据中。当 S3 文件网关发现 S3 文件网关未存储的对象时，系统会为这些对象分配默认 Unix 文件权限。您可以在下表中找到默认 Unix 权限。


| 元数据 | 说明 | 
| --- | --- | 
| 目录权限 |  “nnnn”形式的 Unix 目录模式。例如，“0666”表示文件共享中所有目录的访问模式。默认值是 0777。  | 
| 文件权限 |  Unix 文件模式采用“nnnn”形式。例如，“0666”表示文件共享中的文件模式。默认值是 0666。  | 
| 用户 ID |  文件共享中文件的默认所有者 ID。默认值是 65534。  | 
| 组 ID | 文件共享的默认组 ID。默认值是 65534。 | 

**编辑元数据默认值**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择 **File shares**，然后选择要更新的文件共享。

1. 对于 **Action**，选择 **Edit file metadata defaults**。

1. 在 **Edit file metadata defaults** 对话框中，提供元数据信息并选择 **Save**。

# 限制 NFS 文件共享的客户端访问
<a name="edit-nfs-client"></a>

建议编辑 NFS 客户端访问设置，定义一个允许连接到 NFS 文件共享的 NFS 客户端 IP 地址列表或 CIDR 数据块范围。如果您选择不限制访问，则您网络上的任何客户端均可挂载到您的文件共享。

**限制 NFS 文件共享的客户端访问**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 从控制台页面左侧的导航窗格中选择**文件共享**，然后选择要编辑的 NFS 文件共享的**文件共享 ID**。

1. 从**操作**下拉菜单中，选择**编辑文件共享访问设置**。

   **访问对象**部分显示当前允许连接到 NFS 文件共享的 IP 地址和 CIDR 数据块的列表。如果当前未限制访问，您将在**允许的客户端**下看到一个 0.0.0.0/0 CIDR 块的条目，表示允许所有可能 IPv4 的地址进行连接。

1. 在**允许的客户端**下面 0.0.0.0/0 CIDR 数据块的右侧，选择**删除**。

1. 选择**添加客户端**，然后以 CIDR 表示法为要允许的客户端提供 IP 地址或地址范围。

1. 根据需要重复之前的步骤来添加更多 IP 地址或范围。如果出现错误或需要撤销访问权限，则可以选择要从列表中删除的 IP 地址或范围右侧的**删除**。

1. 完成后，选择**保存更改**。

# 刷新 Amazon S3 存储桶对象缓存
<a name="refresh-cache"></a>

在 NFS 或 SMB 客户端执行文件系统操作时，您的网关会在与文件共享关联的 Amazon S3 对象缓存中维护一个对象清单。您的网关使用此缓存清单来减小 Amazon S3 请求的延迟和频率。此操作不会将文件导入 S3 文件网关缓存存储。仅更新缓存的清单，以反映 Amazon S3 对象缓存中对象清单的变化。

要刷新文件共享的 S3 存储桶对象缓存，请从以下列表中选择最适合您的使用案例的方法，然后完成以下相应步骤。

**注意**  
无论您使用哪种方法，首次列出目录时都会对其进行初始化，从而使网关从 Amazon S3 中列出目录的元数据内容。初始化目录所需的时间与目录中的条目数成正比。

**Topics**
+ [使用 Storage Gateway 控制台配置自动缓存刷新计划](#auto-refresh-console-procedure)
+ [使用 AWS Lambda Amazon CloudWatch 规则配置自动缓存刷新计划](#auto-refresh-lambda-procedure)
+ [使用 Storage Gateway 控制台执行手动缓存刷新](#manual-refresh-console-procedure)
+ [使用 Storage Gateway API 执行手动缓存刷新](#manual-refresh-api-procedure)

## 使用 Storage Gateway 控制台配置自动缓存刷新计划
<a name="auto-refresh-console-procedure"></a>

以下过程根据您指定的生存时间（TTL）值配置自动缓存刷新计划。在配置基于 TTL 的缓存刷新计划之前，请考虑以下事项：
+ TTL 是指自从上次对给定目录进行缓存刷新以来所经过的时间长度。
+ 仅当在指定的 TTL 期限到期后访问给定目录时，才会进行基于 TTL 的缓存刷新。
+ 刷新是非递归的。仅在访问特定目录时才会刷新。
+ 只有对那些自 TTL 过期以来尚未同步的目录进行刷新才会产生 Amazon S3 API 费用。
  + 只有当 NFS 或 SMB 活动访问目录时，才会同步目录。
  + 同步操作的频率不会高于您指定的 TTL 周期。
+ 仅当您经常在网关和 Amazon S3 存储桶之间的工作流之外直接更新 Amazon S3 存储桶的内容时，才建议配置基于 TTL 的缓存刷新。
+ 当网关刷新目录内容时，访问已过期目录的 NFS 和 SMB 操作 TTLs 将被阻止。
**注意**  
由于缓存刷新会阻止目录访问操作，因此建议在不影响用户体验的情况下为您的部署配置尽可能长的 TTL 周期。

**使用 Storage Gateway 控制台配置自动缓存刷新计划**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**文件共享**。

1. 选择要为其配置刷新计划的文件共享。

1. 对于**操作**，选择**编辑文件共享设置**。

1. 对于**以下时间之后从 S3 自动刷新缓存**，请选中该复选框，并使用生存时间（TTL）以天、小时和分钟为单位设置文件共享缓存的刷新时间。TTL 是自上次刷新以来的时间长度，在此时间之后，对目录的访问将导致文件网关首先从 Amazon S3 存储桶刷新该目录的内容。

1. 选择**保存更改**。

## 使用 AWS Lambda Amazon CloudWatch 规则配置自动缓存刷新计划
<a name="auto-refresh-lambda-procedure"></a>

**使用 AWS Lambda Amazon CloudWatch 规则配置自动缓存刷新计划**

1. 标识 S3 文件网关使用的 S3 存储桶。

1. 确认*事件*部分为空。稍后会自动填充此部分。

1. 创建 IAM 角色，并允许建立 Lambda `lambda.amazonaws.com` 的信任关系。

1. 使用以下策略。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "StorageGatewayPermissions",
               "Effect": "Allow",
               "Action": "storagegateway:RefreshCache",
               "Resource": "*"
           },
           {
               "Sid": "CloudWatchLogsPermissions",
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:CreateLogGroup",
                   "logs:PutLogEvents"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 从 Lambda 控制台创建 Lambda 函数。

1. 使用以下函数执行您的 Lambda 任务。

   ```
   import json
   import boto3
   client = boto3.client('storagegateway')
   def lambda_handler(event, context):
       print(event)
       response = client.refresh_cache(
           FileShareARN='arn:aws:storagegateway:ap-southeast-2:672406474878:share/share-E51FBS9C'
       )
       print(response)
       return 'Your FileShare cache has been refreshed'
   ```

1. 对于**执行角色**，选择您创建的 IAM 角色。

1. 可选：为 Amazon S3 添加触发器并选择事件**ObjectCreated**或**ObjectRemoved**。
**注意**  
`RefreshCache` 需要先完成一个进程，然后再开始另一个进程。当您在存储桶中创建或删除许多对象时，性能可能会降低。因此，我们不建议使用 S3 触发器。相反，请使用下文所述的 Amazon CloudWatch 规则。

1. 在 CloudWatch 控制台上创建 CloudWatch 规则并添加时间表。通常，建议使用 30 分钟的固定间隔**。但是，您可以对大型 S3 存储桶使用 1-2 个小时的间隔。

1. 为 CloudWatch 事件添加新的触发器，然后选择您刚刚创建的规则。

1. 保存 Lambda 配置。选择**测试**。

1. 选择 **S3 PUT** 并根据您的要求自定义测试。

1. 测试应该会成功。如果未成功，请根据您的要求修改 JSON 并重新测试。

1. 打开 Amazon S3 控制台，并确认您创建的事件和 Lambda 函数 ARN 存在。

1. 使用 Amazon S3 控制台或 AWS CLI将对象上传到 S3 存储桶。

    CloudWatch 控制台生成类似于以下内容的 CloudWatch 输出。

   ```
   {
       u'Records': [
           {u'eventVersion': u'2.0', u'eventTime': u'2018-09-10T01:03:59.217Z', u'requestParameters': {u'sourceIPAddress': u'MY-IP-ADDRESS'}, 
           u's3': {u'configurationId': u'95a51e1c-999f-485a-b994-9f830f84769f', u'object': {u'sequencer': u'00549CC2BF34D47AED', u'key': u'new/filename.jpeg'}, 
           u'bucket': {u'arn': u'arn:aws:s3:::amzn-s3-demo-bucket', u'name': u'MY-GATEWAY-NAME', u'ownerIdentity': {u'principalId': u'A3OKNBZ72HVPP9'}}, u's3SchemaVersion': u'1.0'}, 
           u'responseElements': {u'x-amz-id-2': u'76tiugjhvjfyriugiug87t890nefevbck0iA3rPU9I/s4NY9uXwtRL75tCyxasgsdgfsq+IhvAg5M=', u'x-amz-request-id': u'651C2D4101D31593'}, 
           u'awsRegion': u'MY-REGION', u'eventName': u'ObjectCreated:PUT', u'userIdentity': {u'principalId': u'AWS:AROAI5LQR5JHFHDFHDFHJ:MY-USERNAME'}, u'eventSource': u'aws:s3'}
       ]
   }
   ```

   Lambda 调用将提供类似于以下内容的输出。

   ```
   {
       u'FileShareARN': u'arn:aws:storagegateway:REGION:ACCOUNT-ID:share/MY-SHARE-ID', 
           'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '6663236a-b495-11e8-946a-bf44f413b71f', 
               'HTTPHeaders': {'x-amzn-requestid': '6663236a-b495-11e8-946a-bf44f413b71f', 'date': 'Mon, 10 Sep 2018 01:03:59 GMT', 
                   'content-length': '90', 'content-type': 'application/x-amz-json-1.1'
           }
       }
   }
   ```

   您在客户端上挂载的 NFS 共享会反映此更新。
**注意**  
对于在包含数百万个对象的大型存储桶中更新大型对象创建或删除的缓存，更新可能需要几个小时。

1. 使用 Amazon S3 控制台或 AWS CLI手动删除对象。

1. 查看您的客户端上挂载的 NFS 共享。确认您的对象已消失（因为您的缓存已刷新）。

1. 查看您的 CloudWatch 日志，查看事件中删除的日志`ObjectRemoved:Delete`。

   ```
   {
       u'account': u'MY-ACCOUNT-ID', u'region': u'MY-REGION', u'detail': {}, u'detail-type': u'Scheduled Event', u'source': u'aws.events', 
       u'version': u'0', u'time': u'2018-09-10T03:42:06Z', u'id':  u'6468ef77-4db8-0200-82f0-04e16a8c2bdb', 
       u'resources': [u'arn:aws:events:REGION:MY-ACCOUNT-ID:rule/FGw-RefreshCache-CW']
   }
   ```
**注意**  
对于 cron 作业或计划任务，您的 CloudWatch 日志事件为`u'detail-type': u'Scheduled Event'`。

## 使用 Storage Gateway 控制台执行手动缓存刷新
<a name="manual-refresh-console-procedure"></a>

**使用 Storage Gateway 控制台执行手动缓存刷新**

1. 在[https://console.aws.amazon.com/storagegateway/家](https://console.aws.amazon.com/storagegateway/)中打开 Storage Gateway 控制台。

1. 选择**文件共享**，然后选择要为其执行刷新的文件共享。

1. 对于 **Actions**，选择 **Refresh cache**。

   刷新过程所需的时间取决于在网关上缓存的对象数以及在 S3 存储桶中添加或删除的对象数。

## 使用 Storage Gateway API 执行手动缓存刷新
<a name="manual-refresh-api-procedure"></a>

按照以下程序，使用 Storage Gateway API 来执行手动缓存刷新。在执行基于 API 的缓存刷新之前，请注意以下事项：
+ 您可以指定递归刷新或非递归刷新。
+ 递归刷新的资源密集度更高，成本也更高。
+ 只有对您在请求中作为参数传递的目录以及这些目录的后代（如果指定了递归刷新）进行刷新才会产生 Amazon S3 API 费用。
+ 当网关处于使用状态时，刷新与其他操作同时执行。
  + 在刷新期间通常不会阻止 NFS 和 SMB 操作，除非操作正在访问的目录处于刷新状态。
  + 网关无法确定当前缓存内容是否过时，并且无论新鲜度如何，都使用其当前内容进行 NFS 和 SMB 操作。
  + 由于缓存刷新会利用网关虚拟硬件资源，因此在刷新过程中，网关性能可能会受到负面影响。
+ 仅当您在网关和 Amazon S3 存储桶之间的工作流之外直接更新 Amazon S3 存储桶的内容时，才建议执行基于 API 的缓存刷新。
**注意**  
如果您知道在网关工作流之外更新 Amazon S3 内容是在哪个特定目录进行，建议您在基于 API 的刷新请求中指定这些目录，以便降低 Amazon S3 API 成本和网关性能影响。

**使用 Storage Gateway API 执行手动缓存刷新**
+ 发送 HTTP POST 请求，通过 Storage Gateway API 调用带有所需参数的 `RefreshCache` 操作。有关更多信息，请参阅 *AWS Storage Gateway API 参考[RefreshCache](https://docs.aws.amazon.com/storagegateway/latest/APIReference/API_RefreshCache.html)*中的。
**注意**  
发送 `RefreshCache` 请求只会启动缓存刷新操作。在缓存刷新完成时，这并不一定表示文件刷新完成。要确定在检查网关文件共享上的新文件之前已完成文件刷新操作，请使用 `refresh-complete` 通知。为此，您可以订阅通过Amazon CloudWatch 活动接收通知。有关更多信息，请参阅 [获取有关文件操作的通知](monitoring-file-gateway.md#get-notification)。

# 在 Amazon S3 文件网关中使用 S3 对象锁定
<a name="s3-object-lock"></a>

Amazon S3 文件网关支持访问已开启 Amazon S3 对象锁定的 S3 存储桶。借助 Amazon S3 对象锁定，您可以使用“一次写入多次读取（WORM）”模式来存储对象。在使用 Amazon S3 对象锁定时，您可以防止删除或覆盖 S3 存储桶中的对象。Amazon S3 对象锁定与对象版本控制一起使用以保护您的数据。

如果开启 Amazon S3 对象锁定，您仍然可以修改对象。例如，可以通过 S3 文件网关上的文件共享写入、删除或重命名对象。以这种方式修改对象时，S3 文件网关将放置新版本的对象，而不会影响以前的版本（即，锁定的对象）。

例如，如果您使用 S3 文件网关 NFS 或 SMB 接口删除文件并锁定了相应的 S3 对象，则网关会放置 S3 删除标记以作为下一个对象版本，并保留原始对象版本。同样，如果 S3 文件网关修改锁定的对象的内容或元数据，系统会上传包含更改的新对象版本，但原来的锁定对象版本保持不变。

有关 Amazon S3 对象锁定的更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[使用 S3 对象锁定以锁定对象](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)。

# 了解文件共享状态
<a name="understand-file-share"></a>

您可以通过查看文件共享的状态来快速了解其运行状况。如果状态显示文件共享运行正常，则无需您采取任何操作。如果状态显示存在问题，您可以进行调查以确定是否需要采取措施。

您可以在 Storage Gateway 控制台的**状态**栏中查看文件共享的状态。运行正常的文件共享状态显示为“可用”。大多数情况下，都应处于此状态。

下表列出了文件共享状态、其含义以及是否需要采取措施。


| Status | 含义 | 
| --- | --- | 
| AVAILABLE |  文件共享已正确配置且可供使用。这是文件共享正常运行的标准状态。  | 
| CREATING |  文件共享尚未完全创建，尚不可用。CREATING (正在创建) 状态是过渡型状态。无需采取行动。如果文件共享停留在此状态，则可能是因为网关 VM 失去了与之的连接 AWS。  | 
| UPDATING |  文件共享配置当前正在更新。“正在更新”状态为过渡状态。无需采取行动。如果文件共享停留在此状态，则可能是因为网关 VM 失去了与之的连接 AWS。  | 
| DELETING |  正在删除文件共享。只有将所有数据上传到，才会删除文件共享 AWS。DELETING 状态是过渡型状态，无需执行任何操作。  | 
| FORCE\$1DELETING |  正在强制删除文件共享。文件共享会立即删除，数据不会上传到 AWS。FORCE\$1DELETING 状态是过渡性质的，无需执行任何操作。  | 
| UNAVAILABLE |  文件共享处于不佳状态。需要执行操作。一些可能的原因包括角色策略错误或映射到不存在的 Amazon S3 存储桶。在解决导致状态不佳的问题后，文件共享将恢复到“可用”状态。  | 

# 了解网关状态
<a name="understand-gateway-status"></a>

 AWS Storage Gateway 部署中的每个网关都有一个关联状态，可以一目了然地告诉你网关的运行状况。大多数情况下，该状态表示网关运行正常，无需您采取任何措施。在某些情况下，状态指示有问题，可能需要您执行相关操作，也可能不需要。

您可以在 Storage Gateway 控制台的**网关**页面上查看部署中每个网关的状态。网关状态显示在网关名称旁边的**状态**栏中。运行正常的网关状态为 `RUNNING`。

下表列出了每个网关状态的说明，以及您是否应该根据该状态采取相应措施。网关在使用期间应始终或大部分时间保持 `RUNNING` 状态。


| Status | 含义 | 
| --- | --- | 
| RUNNING |  网关配置正确，可供使用。  | 
| OFFLINE |  网关可能由于以下一个或多个原因处于 `OFFLINE` 状态： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/filegateway/latest/files3/understand-gateway-status.html)  | 

# 管理 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\$1 代码示例更新网关的带宽速率限制。要使用此示例代码，您必须提供服务端点、网关的 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)
```