

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

# 在 Snowball Edge 上使用与 Amazon S3 兼容的存储空间和 Snow 设备集群
<a name="ClusterOverview"></a>

集群是一组三个或更多 Snowball Edge 设备，用作单个逻辑单位并用于本地存储和计算目的。与单独的 Snowball Edge 设备相比，集群为本地存储和计算提供了两种主要好处：
+ **提高了持久性**：存储在 Snowball Edge 设备集群中的 S3 数据可通过单个设备实现更高的数据持久性。此外，尽管可能会出现影响集群的硬件中断，集群上的数据仍会保持安全且可行。由 3 至 4 台设备组成的集群可承受失去 1 台设备，由 5 至 16 台设备组成的集群最多可承受失去 2 台设备，否则数据将面临威胁。您可以替换运行状况不佳的节点，以便维护存储在集群中的数据的持久性和安全性。
+ **增加存储空间** - 借助 Snowball Edge Storage Optimized 设备，您可以创建单个 16 节点集群，该群集具有高达 2.6 PB 的 S3 兼容可用存储容量。借助 Snowball Edge Compute Optimized 设备，您可以创建单个 16 节点集群，该群集具有高达 501 TB 的 S3 兼容可用存储容量。

Snowball Edge 设备的集群由无领导节点构成。任何节点都可以向整个集群写入数据和从中读取数据，并且所有节点都能够执行集群的 behind-the-scenes管理。

在规划对 Snowball Edge 集群的使用时，请记住以下注意事项：
+ 我们建议您为集群中的所有设备提供一个冗余电源，以便减少集群的潜在性能和稳定性问题。
+ 与独立的本地存储和计算作业一样，如果不将其他设备作为单独导入作业的一部分进行排序，则集群中存储的数据无法导入 Amazon S3 中。如果您预定其他设备作为导入作业，则可以将数据从集群传输到导入作业设备。
+ 要从 Amazon S3 中将数据获取到集群上，请使用 Amazon S3 API 在集群上创建 Amazon S3 存储桶，用于存储从 S3 取回的对象。此外，您还可以使用 AWS DataSync 在 Snowball Edge 设备上的 Snowball Edge 上的 AWS 存储服务与兼容 Amazon S3 的存储之间传输对象。有关更多信息，请参阅[配置 Snowball Edge 上与 S3 兼容的存储的传输](https://docs.aws.amazon.com/datasync/latest/userguide/s3-compatible-storage-snow.html)。
+ 您可以创建一个任务，从 AWS Snow 系列管理控制台 AWS CLI、或其中一个订购设备集群 AWS SDKs。有关更多信息，请参阅 [Snowball Edge 入门](getting-started.md)。
+ 集群中的每台设备都有一个节点 ID。*节点 ID* 是集群中每台设备的唯一标识符，就像独立设备的作业 ID 一样。你可以 IDs 从 AWS Snow 系列管理控制台、、和 Snowball Edge 客户端获取节点。 AWS CLI AWS SDKsSnowball Edge 客户端命令`describe-device`并`describe-cluster`返回 IDs 包含有关设备或集群的其他信息的节点。
+ 集群的生命周期受在预置集群时向集群设备授予的安全证书的限制。默认情况下，Snowball Edge 设备在需要寄回之前最多可使用 360 天。在这段时间结束时，设备停止响应 read/write 请求。如果您需要将一台或多台设备保存超过 360 天，请与联系 AWS 支持。
+ 当 AWS 收到退回的属于集群的设备时，我们会对该设备进行彻底的擦除。此擦除过程遵循美国国家标准与技术研究院（NIST）800-88 标准。<a name="cluster-table"></a>


**Snowball Edge 集群容错能力和存储容量上兼容亚马逊 S3 的存储**  

| 集群大小 | 容错能力 | Snowball Edge Compute Optimited（使用 AMD EPYC Gen2 进行了计算优化）设备的存储容量（以 T NVMe B 为单位） | Snowball Edge Storage Optimized 210 TB 设备的存储容量（以 TB 为单位） | 
| --- | --- | --- | --- | 
|  3  |  最多丢失 1 个节点  |  38  |  438  | 
|  4  |  最多丢失 1 个节点  |  57  |  657  | 
|  5  |  最多丢失 2 个节点  |  57  |  657  | 
|  6  |  最多丢失 2 个节点  |  76  |  904  | 
|  7  |  最多丢失 2 个节点  |  95  |  1096  | 
|  8  |  最多丢失 2 个节点  |  114  |  1315  | 
|  9  |  最多丢失 2 个节点  |  133  |  1534  | 
|  10  |  最多丢失 2 个节点  |  152  |  1754  | 
|  11  |  最多丢失 2 个节点  |  165  |  1970  | 
|  12  |  最多丢失 2 个节点  |  171  |  1973  | 
|  13  |  最多丢失 2 个节点  |  190  |  2192  | 
|  14  |  最多丢失 2 个节点  |  209  |  2411  | 
|  15  |  最多丢失 2 个节点  |  225  |  2625  | 
|  16  |  最多丢失 2 个节点  |  228  |  2631  | 

解锁集群后，您就可以在该集群上存储和访问数据了。您可以使用与 Amazon S3 兼容的端点从集群读取以及向其写入数据。

要从集群读取数据或向集群写入数据，您的 read/write 设备集群中必须有不超过允许的不可用节点数量的法定人数。

## Snowball Edge 集群 Quorum
<a name="clusterquorums"></a>

*法定人数*表示集群中必须相互通信才能维持法定人数的 Snowball Edge 设备的最小数量。 read/write 

当集群中的所有设备都运行状况良好时，您具有集群的*读/写 quorum*。如果其中的一个或两个设备处于脱机状态，则您减小集群的运行容量。但您仍可以对集群进行读写操作。在集群中除一两台设备之外的所有设备都在运行时，集群仍有 read/write 法定人数。在集群的运行容量受到影响之前可离线的节点数量可在 [this table](#cluster-table) 中找到。

如果集群丢失的设备数超过[this table](#cluster-table)中所示的设备数，则可能无法达到 quorom。无法达到 quorom 之后，集群将进入脱机状态，并且集群中的数据不可用。您可以修复此问题，否则数据可能永久丢失，具体取决于事件的严重性。如果这是一个临时外部电源事件，并且您可以重新为 Snowball Edge 通电并解锁集群中的所有节点，则您的数据将再次可用。

**重要**  
如果无法达到运行状况良好的节点所需的最小 quorum，请联系 AWS 支持。

您可以使用 `describe-cluster` 命令来查看每个节点的锁定状态和网络连接状态。确保集群中的设备运行正常并保持连接是您在创建使用集群存储时承担的管理责任。有关更多信息，请参阅[获取设备状态](https://docs.aws.amazon.com/snowball/latest/developer-guide/using-client-commands.html#client-status)。

如果您确定一个或多个节点运行状况不佳，则可以替换集群中的节点以保持 quorom，并使数据保持健康和稳定。有关更多信息，请参阅 [替换集群中的节点](replacement.md)。

# 重新连接不可用集群节点
<a name="reconnectingclusternodefortpoint"></a>

*节点*或集群内的设备可能因出现断电或网损等问题而导致临时不可用，而不会损坏节点上的数据。在发生这种情况时，它会影响集群的状态。使用 `snowballEdge describe-cluster` 命令在 Snowball Edge 客户端中报告节点的网络可到达性和锁定状态。

建议您物理放置集群，以便能够访问所有节点的前部、后部和顶部。这样，您就可以访问背面的电源线和网络电缆 IDs、节点顶部的运输标签以及设备正面的 LCD 屏幕，查看 IP 地址和其他管理信息。

当您检测到节点不可用时，建议您尝试下列过程之一，具体取决于导致节点不可用的场景。

**重新连接不可用的节点**

1. 确保节点已打开电源。

1. 确保节点已连接到集群的其他部分连接的同一内部网络。

1. 如果您需要启动节点，请等待最多 20 分钟待其完成。

1. 运行 `snowballEdge unlock-cluster` 命令或 `snowballEdge associate-device` 命令。有关示例，请参阅[解锁 Snowball Edge 设备](https://docs.aws.amazon.com/snowball/latest/developer-guide/using-client-commands.html#setting-up-client)。

**重新连接已丢失网络连接但未断电的不可用节点**

1. 确保节点已连接到集群的其他部分所在的同一内部网络。

1. 运行 `snowballEdge describe-device` 命令以查看何时将之前不可用的节点添加回集群。有关示例，请参阅[获取设备状态](https://docs.aws.amazon.com/snowball/latest/developer-guide/using-client-commands.html#client-status)。

在执行前面的过程后，您的节点应正常运行。你还应该有 read/write 法定人数。如果不是这样，则您的一个或多个节点可能有更严重的问题，并且可能需要从集群中将其删除。

# 替换集群中的节点
<a name="replacement"></a>

要替换节点，您首先需要订购替换节点。您可以从控制台 AWS CLI、或其中一个订购替换节点 AWS SDKs。如果您正在从控制台预定替换节点，则可为任何尚未取消或完成的作业预定替换节点。然后，断开运行状况不佳的节点与集群的关联，将替换节点连接到您的网络并解锁包括替换节点在内的集群，将替换节点与集群相关联，然后在 Snowball Edge 服务上重启 Amazon S3 兼容存储。

**从控制台预定替换节点**

1. 登录到 [AWS Snow 系列管理控制台](https://console.aws.amazon.com/snowfamily/home)。

1. 为属于从“作业”控制面板创建的集群的节点查找和选择作业。

1. 对于**操作**，选择**替换节点**。

   执行此操作将打开作业创建向导的最后一步，所有设置与最初创建集群的方式相同。

1. 请选择**创建作业**。

您的替换 Snowball Edge 目前正在寄送给您的途中。使用以下过程从集群中移除运行状况不佳的节点。

**从集群中移除节点**

1. 关闭要移除的节点的电源。有关更多信息，请参阅[关闭 Snowball Edge](https://docs.aws.amazon.com/snowball/latest/developer-guide/turnitoff.html)。

1. 使用 `describe-cluster` 命令来确保无法访问运行状况不佳的节点。`NetworkReachability` 对象 `State` 名称值为 `UNREACHABLE` 即表示无法访问。

   ```
   snowballEdge describe-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://ip-address-of-device-in-cluster                
   ```  
**Example `describe-cluster` 输出**  

   ```
   {
       "ClusterId": "CID12345678-1234-1234-1234-123456789012",
       "Devices": [
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789012",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.0"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           },
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789013",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.1"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           },
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789014",
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "UNREACHABLE"
               }
           }
       ]
   }
   ```

1. 使用 `describe-service` 命令来确保 `s3-snow` 服务的状态为 `DEGRADED`。

   ```
   snowballEdge describe-service --service-id s3-snow --device-ip-addresses snow-device-1-address snow-device-2-address --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address        
   ```  
**Example `describe-service` 命令的输出**  

   ```
   {
       "ServiceId": "s3-snow",
       "Autostart": true,
       "Status": {
           "State": "DEGRADED"
       },
       "ServiceCapacities": [
           {
               "Name": "S3 Storage",
               "Unit": "Byte",
               "Used": 38768180432,
               "Available": 82961231819568
           }
       ],
       "Endpoints": [
           {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.10",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description" : "s3-snow bucket API endpoint (for s3control SDK)",
               "DeviceId": "JID-beta-207012320001-24-02-05-17-17-26",
               "Status": {
                   "State": "ACTIVE"
               }
           },
           {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.11",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "Description" : "s3-snow object & bucket API endpoint (for s3api SDK)",
               "DeviceId": "JID-beta-207012320001-24-02-05-17-17-26",
               "Status": {
                   "State": "ACTIVE"
               }
           },
           {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.12",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "Description" : "s3-snow bucket API endpoint (for s3control SDK)",
               "DeviceId": "JID-beta-207012240003-24-02-05-17-17-27",
               "Status": {
                   "State": "ACTIVE"
               }
           },
           {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.13",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "Description" : "s3-snow object & bucket API endpoint (for s3api SDK)",
               "DeviceId": "JID-beta-207012320001-24-02-05-17-17-27",
               "Status": {
                   "State": "ACTIVE"
               }
           }
       ]
   }
   ```

1. 使用 `disassociate-device` 命令取消关联并从集群中移除运行状况不佳的节点。

   ```
   snowballEdge disassociate-device --device-id device-id --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://ip-address-of-unhealthy-device                    
   ```  
**Example `disassociate-device` 命令的输出**  

   ```
   Disassociating your Snowball Edge device from the cluster. Your Snowball Edge device will be disassociated from the cluster when it is in the "DISASSOCIATED" state. You can use the describe-cluster command to determine the state of your cluster.                        
   ```

1. 再次使用 `describe-cluster` 命令来确保运行状况不佳的节点已与集群取消关联。

   ```
   snowballEdge describe-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https:ip-address-of-healthy-device                    
   ```  
**Example `describe-cluster` 命令显示节点已取消关联**  

   ```
   {
       "ClusterId": "CID12345678-1234-1234-1234-123456789012",
       "Devices": [
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789012",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.0"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           },
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789013",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.1"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           },
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789014",
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "DISASSOCIATED"
               }
           }
       ]
   }
   ```

1. 关闭电源并将运行状况不佳的设备放回原处。 AWS有关更多信息，请参阅[关闭 Snowball Edge 的电源](https://docs.aws.amazon.com/snowball/latest/developer-guide/turnitoff.html)和[寄回 Snowball Edge 设备](https://docs.aws.amazon.com/snowball/latest/developer-guide/return-device.html)。

替换设备送达后，请使用以下过程将它添加到集群中。

**添加替换设备**

1. 为集群放置替换设备，以便能够接触到所有设备的前部、后部和顶部。

1. 为节点上电，并确保节点已连接到与集群的其他节点相同的内部网络。有关更多信息，请参阅[连接到本地网络](https://docs.aws.amazon.com/snowball/latest/developer-guide/getting-started-connect.html)。

1. 使用 `unlock-cluster` 命令并包括新节点的 IP 地址。

   ```
   snowballEdge unlock-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://ip-address-of-cluster-device --device-ip-addresses node-1-ip-address node-2-ip-address new-node-ip-address    
   ```

   新节点的状态将为 `DEGRADED`，直到您在下一步将其与集群关联为止。

1. 使用 `associate-device` 命令将替换节点与集群关联。

   ```
   snowballEdge associate-device --device-ip-address new-node-ip-address
   ```  
**Example `associate-device` 命令输出的**  

   ```
   Associating your Snowball Edge device with the cluster. Your Snowball Edge device will be associated with the cluster when it is in the ASSOCIATED state. You can use the describe-device command to determine the state of your devices.                        
   ```

1. 使用 `describe-cluster` 命令确保新节点已与集群关联。

   ```
   snowballEdge describe-cluster --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://node-ip-address                    
   ```  
**Example `describe-cluster` 命令输出的**  

   ```
   {
       "ClusterId": "CID12345678-1234-1234-1234-123456789012",
       "Devices": [
           {
               "DeviceId": "JID12345678-1234-1234-1234-123456789012",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.0"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           },
           {
               "DeviceId": "JID-CID12345678-1234-1234-1234-123456789013",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.1"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           },
           {
               "DeviceId": "JID-CID12345678-1234-1234-1234-123456789015",
               "UnlockStatus": {
                   "State": "UNLOCKED"
               },
               "ActiveNetworkInterface": {
                   "IpAddress": "10.0.0.2"
               },
               "ClusterAssociation": {
                   "ClusterId": "CID12345678-1234-1234-1234-123456789012",
                   "State": "ASSOCIATED"
               },
               "NetworkReachability": {
                   "State": "REACHABLE"
               },
               "Tags": []
           }
       }
   ]
   }
   ```

1. 在新节点上，创建两个虚拟网络接口 (VNIs)。有关更多信息，请参阅 [在 Snowball Edge 服务上启动兼容亚马逊 S3 的存储](s3-edge-snow-setting-up.md#setting-up-s3-on-snow-cluster)。

1. 使用 `stop-service` 命令来停止 s3-snow 服务。

   ```
   snowballEdge stop-service --service-id s3-snow --device-ip-addresses cluster-device-1-ip-address cluster-device-2-ip-address cluster-device-3-ip-address --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address                    
   ```  
**Example `stop-service` 命令输出的**  

   ```
   Stopping the AWS service on your Snowball Edge. You can determine the status of the AWS service using the describe-service command.                                            
   ```

1. 将新节点添加到集群后，使用 `start-service` 命令启动 s3-snow 服务。

   ```
   snowballEdge start-service --service-id s3-snow --device-ip-addresses cluster-device-1-ip-address cluster-device-2-ip-address cluster-device-3-ip-address --virtual-network-interface-arns "device-1-vni-ip-address-a" "device-1-vni-ip-address-b" "device-2-vni-ip-address-a" "device-2-vni-ip-address-b" "device-3-vni-ip-address-a" "device-3-vni-ip-address-b" --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address                    
   ```  
**Example `start-service` 命令输出的**  

   ```
   Starting the AWS service on your Snowball Edge. You can determine the status of the AWS service using the describe-service command.                        
   ```

1. 使用 `describe-service` 命令来确保 s3-snow 服务已启动。

   ```
   snowballEdge describe-service --service-id s3-snow --device-ip-addresses snow-device-1-address snow-device-2-address snow-device-3-address --manifest-file path/to/manifest/file.bin --unlock-code unlock-code --endpoint https://snow-device-ip-address             
   ```  
**Example `descibe-service` 命令输出的**  

   ```
   {
       "ServiceId": "s3-snow",
       "Autostart": true,
       "Status": {
           "State": "ACTIVE"
       },
       "ServiceCapacities": [{
           "Name": "S3 Storage",
           "Unit": "Byte",
           "Used": 38768180432,
           "Available": 82961231819568
       }],
       "Endpoints": [{
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.10",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "s3-snow bucket API endpoint (for s3control SDK)",
               "DeviceId": "JID12345678-1234-1234-1234-123456789012",
               "Status": {
                   "State": "ACTIVE"
               }
           }, {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.11",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "s3-snow object & bucket API endpoint (for s3api SDK)",
               "DeviceId": "JID12345678-1234-1234-1234-123456789013",
               "Status": {
                   "State": "ACTIVE"
               }
           }, {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.12",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "s3-snow bucket API endpoint (for s3control SDK)",
               "DeviceId": "JID12345678-1234-1234-1234-123456789015",
               "Status": {
                   "State": "ACTIVE"
               }
           }, {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.13",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "s3-snow object & bucket API endpoint (for s3api SDK)",
               "DeviceId": "JID-beta-207012320001-24-02-05-17-17-27",
               "Status": {
                   "State": "ACTIVE"
               }
           }, {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.14",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "s3-snow bucket API endpoint (for s3control SDK)",
               "DeviceId": "JID-beta-207012240003-24-02-05-17-17-28",
               "Status": {
                   "State": "ACTIVE"
               }
           }, {
               "Protocol": "https",
               "Port": 443,
               "Host": "10.0.0.15",
               "CertificateAssociation": {
                   "CertificateArn": "arn:aws:snowball-device:::certificate/7Rg2lP9tQaHnW4sC6xUzF1vGyD3jB5kN8MwEiYpT"
               },
               "Description": "s3-snow object & bucket API endpoint (for s3api SDK),
               "DeviceId": "JID-beta-207012320001-24-02-05-17-17-28",
               "Status": {
                   "State": "ACTIVE"
               }
           }
       }]
   }
   ```