Google が管理するプライベート ネットワーク経由で転送する

Amazon S3 から Cloud Storage にデータを転送する場合、通常、データは公共のインターネット ピアリング リンクを通過します。この場合、AWS は標準のインターネット データ下り(外向き)料金を請求します。Storage Transfer Service には、Amazon S3 からの転送用の Google 管理のプライベート ネットワーク オプションが用意されています。これにより、Google によって自動的にプロビジョニングされた安全なプライベート ルーティングを介してデータを転送できます。

Google 管理のプライベート ネットワークを使用すると、AWS インターネットの下り(外向き)費用が削減され、顧客管理の物理相互接続の構成とメンテナンスが不要になるため、ネットワーク セキュリティが簡素化されます。

主なメリット

Google マネージド プライベート ネットワーク オプションには、Amazon S3 転送に対して次の運用上および財務上のメリットがあります。

  • インターネットの下り(外向き)コストを削減する: Google マネージド プライベート ネットワーク経由で Amazon S3 から転送すると、標準の AWS インターネット下り(外向き)料金が適用されません。AWS S3 のインターネット下り(外向き)料金は発生しません。代わりに、Google Cloud に 1 GiB あたりのデータ処理料金を支払います。詳細については、料金をご覧ください。標準の AWS API リクエスト料金(Amazon S3 の LISTGETHEAD オペレーションなど)は、AWS の料金スケジュールに従って適用されます。

  • 公共のインターネットへの露出を排除する: データは、AWS と Google Cloud 間の Google 管理のプライベート相互接続接続を介して直接転送されます。パケットが公共のインターネットのルーティング テーブルを通過しないため、公共のインターセプトのリスクを排除し、ファイアウォールとゼロトラストのコンプライアンスを簡素化できます。

  • インフラストラクチャのメンテナンスが不要: 顧客管理のプライベート ネットワークとは異なり、物理相互接続(Cloud Interconnect や AWS Direct Connect など)、VPN ゲートウェイ、カスタム DNS ルーティングのプロビジョニング、構成、ポートの定期的な料金の支払いは不要です。Google は、プライベート ネットワーキング スタックをエンドツーエンドで完全に管理します。

  • リードタイムなしで即時デプロイ: 専用のインターコネクト回線の設定には数週間かかることがあります。Google マネージド プライベート ネットワークを使用すると、転送エージェントをインストールまたは管理することなく、プライベート ルーティングをすぐに開始できます。

帯域幅とパフォーマンスに関する考慮事項

Google マネージド プライベート ネットワークを使用するすべてのプロジェクトのすべての Storage Transfer Service ジョブは、共通のプールされたネットワーク容量を共有します。グローバル使用率がピークに達している期間は、転送速度が調整されたり、レイテンシが増加したりすることがあります。

主に大きなオブジェクトで構成されるワークロードは、主に小さなオブジェクトで構成されるワークロードよりも、プールの使用率が高いことの影響を受けやすくなります。ワークロードに共有プール競合のない専用帯域幅が必要な場合は、顧客管理のプライベート ネットワークの構成を検討してください。

サポートされている AWS リージョン

Google マネージド プライベート ネットワーク オプションは、次の Amazon S3 リージョンからのエージェントレス転送で使用できます。

ap-east-1
ap-northeast-1
ap-northeast-2
ap-northeast-3
ap-south-1
ap-south-2
ap-southeast-1
ca-central-1
ca-west-1
eu-central-1
eu-central-2
eu-north-1
eu-south-1
eu-south-2
eu-west-1
eu-west-2
eu-west-3
us-east-1
us-east-2
us-west-1
us-west-2
 

始める前に

転送を作成する前に、IAM とソースの権限を構成する必要があります。

IAM 権限を構成する

エージェントレス転送権限の手順に沿って、必要な Google Cloud 権限を付与します。

S3 バケットへのアクセスを構成する

送信元へのアクセスを構成する: Amazon S3 の手順に沿って、Amazon S3 内のデータへのアクセスを構成します。

Google が管理するプライベート ネットワーク転送を作成する

Google マネージド プライベート ネットワーク オプションは、 Google Cloud コンソールまたは REST API を使用して新しい転送ジョブを作成するとき、または既存の Amazon S3 転送仕様を更新するときに有効にできます。

コンソール

Google マネージド プライベート ネットワーク オプションは、転送ジョブの作成の [設定の選択] ステップでチェックボックスをオンにすると有効になります。

Google マネージド プライベート ネットワークを使用して新しいジョブを作成するには:

  1. Google Cloud コンソールの [Storage Transfer Service] ページに移動します。

    Storage Transfer Service に移動

  2. [転送ジョブを作成] をクリックします。[転送ジョブの作成] ページが表示されます。

  3. [参照元の種類] で [Amazon S3] を選択します。

  4. [宛先の種類] として [Google Cloud Storage] を選択します。

  5. スケジュール モードを選択します。バッチ転送は、1 回限りまたはスケジュールに基づいて実行されます。イベント ドリブン転送は、ソースを継続的にモニタリングし、追加や変更が行われるとデータを転送します。

    イベント ドリブン転送を構成するには、イベント ドリブン転送の手順を実施します。

  6. [次のステップ] をクリックします。

  7. [バケットまたはフォルダの名前] フィールドに、ソースバケットの名前を入力します。

    このバケット名は、AWS Management Console に表示される名前です。

  8. アマゾン ウェブ サービス(AWS)の認証方法を選択します。詳細については、ソースへのアクセスを構成する: Amazon S3 をご覧ください。

    • シークレット リソース: Secret Manager に保存されている Amazon 認証情報を使用する場合は、このオプションを選択します。リストからシークレットを選択するか、projects/PROJECT_NUMBER/secrets/SECRET_NAME 形式で手動で入力します。

    • アクセスキー: [アクセスキー ID] フィールドにアクセスキーを入力し、[シークレット アクセスキー] フィールドにアクセス キーに関連付けられたシークレットを入力します。

    • ID 連携のための AWS IAM ロール: [AWS IAM ロールの ARN] フィールドに次の構文で ARN を入力します。

      • 標準の AWS リージョン:

        arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
      • AWS GovCloud リージョン:

        arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME

      次のように置き換えます。

      • AWS_ACCOUNT: ハイフンのない AWS アカウント ID。
      • AWS_ROLE_NAME: AWS ロール名。組織でパスを使用してロールを整理している場合は、ロール名にパスを含めます。たとえば、developers/transfer_user です。

      ARN の詳細については、IAM ARN をご覧ください。

  9. イベント ドリブン転送の場合は、Amazon SQS キューの ARN を入力します。これは、次の形式になります。

    • 標準の AWS リージョン:

      arn:aws:sqs:us-east-1:1234567890:event-queue
    • AWS GovCloud リージョン:

      arn:aws-us-gov:sqs:us-gov-east-1:1234567890:event-queue
  10. 必要に応じて、オブジェクトを前方一致でフィルタするか、最終更新日時でフィルタします。ソースの場所としてフォルダを指定した場合、接頭辞フィルタはそのフォルダを基準とします。たとえば、ソースが my-test-bucket/path/ の場合、file の一致フィルタには my-test-bucket/path/file で始まるすべてのファイルが含まれます。

  11. [次のステップ] をクリックします。

  12. [バケットまたはフォルダ] フィールドに、宛先バケットと(必要に応じて)フォルダ名を入力するか、[参照] をクリックして、現在のプロジェクトにある既存のバケットリストからバケットを選択します。新しいバケットを作成するには、[バケット アイコン 新しいバケットを作成] をクリックします。

  13. [次のステップ] をクリックします。

  14. スケジュール オプションを選択します。

    注: Storage Transfer Service では、転送ジョブ スケジュールがローカル タイムゾーンで表示されますが、時刻は世界協定時刻(UTC)で保存されます。夏時間(DST)の影響を受ける場合は、DST の開始時または終了時に転送ジョブ スケジュールの変更が発生することがあります。

    1. [1 回だけ実行] プルダウン リストから、次のいずれかを選択します。

      • 1 回だけ実行: 選択した時間に、1 回だけ転送を行います。
      • 毎日実行: 転送は毎日、選択した時刻に開始されます。

        オプションの [終了日] を入力することも、[終了日] を空白のままにして転送を継続的に実行することもできます。

      • 毎週実行: 選択した時間に毎週転送を実行します。
      • カスタム頻度で実行: 選択した頻度で転送を実行します。転送は、時間の間隔で定期的に繰り返すように設定できます。

        オプションの [終了日] を入力することも、[終了日] を空白のままにして転送を継続的に実行することもできます。

      • オンデマンドで実行: この転送ジョブが作成されたときに実行をトリガーしません。ジョブを手動で開始する必要があります。
    2. [今すぐ開始] プルダウン リストから、次のいずれかを選択します。

      • 今すぐ開始: [作成] をクリックすると転送が開始されます。
      • 開始日: 選択した日時に転送を開始します。[カレンダー] をクリックして、カレンダーから開始日を選択します。
  15. [次のステップ] をクリックします。

  16. 転送ジョブの設定を選択します。

    1. [説明] フィールドに、転送の説明を入力します。ジョブを区別できるように、意味のある一意の説明を入力することをおすすめします。

    2. 必要に応じて、転送するオブジェクトを正確に指定するマニフェストを指定します。

    3. [メタデータのオプション] で、目的のストレージ クラスと作成時刻の動作を選択します。詳細については、メタデータの保持をご覧ください。

    4. [上書きの条件] で、次のいずれかを選択します。

      • なし: ソースファイルが同じ名前の場合、宛先ファイルを上書きしません。ソースファイルはスキップされます。
      • 異なる場合: ソースファイルの名前が同じで ETag またはチェックサムの値が異なる場合、宛先ファイルを上書きします。
      • 常に: ソースファイルが同じ名前の場合、同一であっても常に宛先ファイルを上書きします。
    5. [削除のタイミング] で、次のいずれかを選択します。

      • なし: ソースと宛先のどちらからもファイルを削除しません。
      • 転送後にソースからファイルを削除する: 転送先に移行した後、ソースからファイルを削除します。移行元ファイルが転送されない場合(移行先にすでに存在する場合など)、移行元ファイルは削除されません。

        重要: ローカル バックアップがない場合、このオプションは元に戻せません。

      • 転送元にもないファイルを転送先から削除する: 転送先の Cloud Storage バケット内のファイルが転送元にもない場合は、Cloud Storage バケットからファイルを削除します。

        このオプションにより、宛先の Cloud Storage バケットが移行元と完全に一致することが保証されます。

    6. ネットワーク ルーティング オプションを選択する:

      • [マネージド プライベート ネットワークを使用する] を選択します。
    7. [ロギング オプション] で、転送された各ファイルに対して実行されたアクションの詳細な記録を生成する場合は、[Cloud Logging でロギングを有効にする] を選択します。Cloud Logging の費用が適用されます。詳細については、ログ転送アクションをご覧ください。

    8. 必要に応じて、[Cloud Pub/Sub 通知によって転送オペレーション ステータスの最新情報を取得する] を選択し、Pub/Sub トピックを選択して、通知をトリガーするイベントを選択します。詳細については、Pub/Sub 通知をご覧ください。

    9. [サービス アカウントの種類の選択] で、使用する ID を選択します。

      • Storage Transfer Service サービス エージェント: デフォルトの Google 管理サービス エージェントには、転送元バケットと転送先バケットへのアクセス権が自動的に付与されます。
      • ユーザー管理のサービス エージェント: 作成したカスタム サービス アカウントを使用します。このオプションを選択する前に、サービス アカウントにソースバケット、転送先バケット、Pub/Sub へのアクセス権が付与されていることを確認してください。ユーザー管理のサービス エージェントを使用するをご覧ください。
  17. [作成] をクリックして転送を作成します。

gcloud CLI

gcloud CLI は、Google が管理するプライベート ネットワーク経由での転送の構成をサポートしていません。このオプションを有効にするには、 Google Cloud コンソールまたは REST API を使用します。

クライアント ライブラリ

Storage Transfer Service クライアント ライブラリは、Google が管理するプライベート ネットワーク経由の転送の構成をサポートしていません。このオプションを有効にするには、 Google Cloud コンソールまたは REST API を使用します。

REST API

REST API を使用して転送を構成するには、transferJobs.create または transferJobs.patch を呼び出すときに、JSON リクエスト ペイロード内のブール値フィールド transferSpec.awsS3DataSource.managedPrivateNetworktrue に設定します。

HTTP リクエスト

POST https://storagetransfer.googleapis.com/v1/transferJobs

リクエストの本文

{
  "description": "S3 to Cloud Storage over Google-managed private network",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "awsS3DataSource": {
      "bucketName": "AWS_SOURCE_NAME",
      "managedPrivateNetwork": true,
      "awsAccessKey": {
        "accessKeyId": "AWS_ACCESS_KEY_ID",
        "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
      }
    },
    "gcsDataSink": {
      "bucketName": "GCS_SINK_NAME"
    },
    "transferOptions": {
      "overwriteWhen": "DIFFERENT",
      "deleteObjectsFromSourceAfterTransfer": false
    }
  }
}

この例では、AWS アクセス認証情報を使用して認証します。Secret Manager でフェデレーション ID または認証情報を使用する方法については、Amazon S3 へのアクセスを構成するをご覧ください。

プライベート ネットワーク ルーティングのモニタリングと検証

転送ジョブを開始したら、データが Google マネージド プライベート ネットワーク経由で下り(外向き)していることを確認します。

  1. Cloud Logging: transfer-logs--log-actions=COPY,DELETE,FAILED)が有効になっている場合は、転送オペレーションの構造化ログを調べます。COPY アクションログ内の接続メタデータは、プライベート ネットワーク パスでのレプリケーションが成功したことを確認します。

  2. 請求の確認: AWS と Google Cloud の請求ダッシュボードを確認します。AWS の請求書には、転送されたオブジェクトのパブリック インターネット データ転送(DataTransfer-Out-Bytes)の料金がゼロと表示されます。代わりに、GiB あたりのデータ処理手数料が、Google Cloud の請求書の Storage Transfer Service の下に表示されます。

代替ネットワーク ルーティング オプション

Google 管理のプライベート ネットワークがワークロードの要件を満たしていない場合、Storage Transfer Service は Amazon S3 の他のネットワーク ルーティング オプションをいくつかサポートしています。

  • 公共のインターネット ルーティング: Amazon S3 と Google Cloud 間の標準の公共のインターネット ピアリング リンクを介したデータ転送。すべての API コマンド、認証ヘッダー、オブジェクト データ ストリームは、Transport Layer Security(TLS 1.3)で HTTPS を使用して転送中にエンドツーエンドで暗号化されます。標準の AWS インターネット データ下り(外向き)料金が適用されます。詳細については、Amazon S3 から転送するをご覧ください。

  • お客様が管理するプライベート ネットワーク: データは、プライベート IP アドレスを介して、事前構成された独自のハイブリッド接続インフラストラクチャ(Cloud Interconnect、Cloud VPN、AWS Direct Connect など)を通過します。このオプションでは、アーキテクチャを完全に制御し、予測可能な専用のネットワーク帯域幅を利用できます。詳細については、顧客管理のプライベート ネットワーク経由での転送をご覧ください。

  • Amazon CloudFront CDN ルーティング: データは、S3 バケットの前面にある Amazon CloudFront ディストリビューションを介して取得されます。AWS CloudFront の料金階層とデータ量によっては、公開 S3 から直接ダウンロードする場合と比較して、インターネットの下り(外向き)料金を削減できます。詳細については、CloudFront 経由で S3 から転送するをご覧ください。