Знакомство с AWS Storage Gateway: методы и примеры гибридного облачного хранилища

Цель использования AWS Storage Gateway, гибридного облачного хранилища, заключается в плавной интеграции локальных сред с облачным хранилищем AWS. Это позволяет компаниям расширить свою существующую инфраструктуру до облака, создавая гибридные архитектуры, сочетающие в себе преимущества как локального, так и облачного хранилища.

Существует несколько способов использования AWS Storage Gateway, в зависимости от конкретных требований вашего варианта использования. Вот несколько примеров с фрагментами кода:

  1. Файловый шлюз:

    • Назначение: обеспечивает файловое хранилище, доступное через протоколы сетевой файловой системы (NFS) или блока сообщений сервера (SMB).
    • Пример кода (AWS CLI):
      # Create a file gateway
      aws storagegateway create-gateway --gateway-type FILE_S3 --gateway-name my-file-gateway \
      --s3-bucket-name my-s3-bucket --s3-bucket-region us-west-2 --gateway-vpc-endpoint "vpce-12345678"
      # Activate the file gateway
      aws storagegateway activate-gateway --gateway-name my-file-gateway --gateway-timezone "GMT-08:00"
  2. Шлюз тома:

    • Цель: предоставляет блочные тома хранения, которые можно монтировать как устройства iSCSI.
    • Пример кода (AWS SDK для Python – Boto3):
      import boto3
      # Create a volume gateway
      client = boto3.client('storagegateway', region_name='us-west-2')
      response = client.create_gateway(name='my-volume-gateway', gatewayType='VTL', gatewayTimezone='GMT-08:00')
      # Retrieve the iSCSI target information
      target = response['GatewayARN']
      response = client.describe_gateway_information(gatewayArn=target)
      iscsi_target = response['GatewayNetworkInterfaces'][0]['Ipv4Address']
  3. Ленточный шлюз:

    • Назначение: предоставляет интерфейс виртуальной ленточной библиотеки (VTL) для резервного копирования и архивирования.
    • Пример кода (AWS SDK для Java):
      import com.amazonaws.services.storagegateway.AWSStorageGatewayClient;
      import com.amazonaws.services.storagegateway.model.CreateTapeWithBarcodeRequest;
      import com.amazonaws.services.storagegateway.model.CreateTapeWithBarcodeResult;
      // Create a tape gateway
      AWSStorageGatewayClient client = new AWSStorageGatewayClient();
      CreateTapeWithBarcodeRequest request = new CreateTapeWithBarcodeRequest()
       .withGatewayARN("arn:aws:storagegateway:us-west-2:123456789012:gateway/sgw-12A3456B")
       .withTapeBarcode("TEST1234");
      CreateTapeWithBarcodeResult result = client.createTapeWithBarcode(request);