背景情報
データ分析、監査、モニタリングのために、Amazon S3 のファイルデータを Log Service に同期し、集中処理と取得を行うことができます。しかし、データスループットが増加し続けると、Amazon S3 からの直接のアウトバウンドトラフィックコストが大きな運用上の課題となる可能性があります。特にマルチクラウドや大容量ファイル転送のシナリオでは、Amazon S3 への直接接続はコストがかかるだけでなく、高同時実行プル時のネットワーク変動により転送が不安定になる傾向があります。
本トピックでは、Amazon CloudFront を使用してデータ転送を最適化する方法について説明します。S3 バケットを CloudFront のオリジンとして設定し、Log Service のデータプルエンドポイントを CloudFront ドメインに切り替えることで、直接接続の代わりに CloudFront のエッジ配信ネットワークを活用できます。CloudFront のデータ転送に関する段階的価格設定とグローバルネットワークを利用することで、この方法は帯域幅コストを削減し、ファイルダウンロードの成功率とスループットを向上させます。このアプローチは、コストと安定性の両方を最適化します。このソリューションでは、CloudFront はファイルデータのフェッチにのみ使用されます。ファイルメタデータは、SQS または Amazon S3 への直接接続を介して、従来の方法で取得されます。セキュリティを強化するために、CloudFront 関数を使用してリクエストを認証できます。本トピックでは、次の手順について説明します:1. 認証関数の設定。2. CloudFront ディストリビューションの設定。3. 関数とディストリビューションの関連付け。4. S3 データインポートタスクの作成。
本ドキュメントは Alibaba Cloud が作成したオリジナルであり、その内容は Alibaba Cloud の知的財産です。本ドキュメントでは、Alibaba Cloud サービスとサードパーティ製品との連携について説明しているため、サードパーティ企業名やその製品名に言及する場合があります。
認証関数の設定
ステップ 1:関数の作成
CloudFront コンソールで、[Functions] ページに移動し、関数を作成します。ランタイムには cloudfront-js-2.0 を選択します。

ステップ 2:認証関数の編集と発行
次のコードで、プレースホルダーのトークンを置き換えます。その後、関数をビルド、保存、テスト、発行します。
function handler(event) {
var request = event.request;
var headers = request.headers;
// トークンを定義します。これを強力でランダムに生成された文字列に置き換えてください。
var expectedToken = 'xxxxxx';
// X-CF-Token ヘッダーを検証します。
if (!headers['x-cf-token'] || headers['x-cf-token'].value !== expectedToken) {
return {
statusCode: 403,
statusDescription: 'Forbidden',
body: {
encoding: 'text',
data: 'Access Denied'
}
};
}
// 検証に成功しました。リクエストを転送します。
return request;
}

CloudFront ディストリビューションの設定
ステップ 1:ディストリビューションの作成
CloudFront コンソールで、**[Distributions]** ページに移動し、**[ディストリビューションの作成]** をクリックして、適切なプランを選択します。

ステップ 2:ディストリビューションの命名
[Distribution Options] セクションで、[Distribution name] を指定します。[Distribution type] を Single website or app に設定します。

ステップ 3:S3 オリジンの設定
[Origin type] で [Amazon S3] を選択します。次に、[S3 を参照] をクリックしてターゲットバケットを選択します。

デフォルトの [Origin settings] を維持します。[Cache settings] で [カスタム] を選択し、[CachingDisabled] キャッシュポリシーを選択します。

ステップ 4:セキュリティ保護の設定
要件に基づいてセキュリティ保護を有効にします。
ステップ 5:ディストリビューションの確認と作成
ステータスにタイムスタンプが表示されると、デプロイは完了です。
[ドメイン名] をメモしておきます。データインポートタスクを作成する際に必要になります。
関数とディストリビューションの関連付け
ステップ 1:設定するディストリビューションの選択
[Distributions] リストで、「CloudFront ディストリビューションの設定」セクションで作成したディストリビューションを選択します。[Behaviors] タブで、[動作の作成] をクリックします。

ステップ 2:関数の関連付け
ページの下部までスクロールします。[Function type] で CloudFront Functions を選択します。「認証関数の設定」セクションで定義した関数を選択し、[作成] をクリックします。
S3 データインポートタスクの作成
ステップ 1:インポートタスクの作成
Log Service コンソールにログインします。プロジェクト名をクリックして開きます。
左側のナビゲーションウィンドウで、タスク管理 をクリックします。**[タスク管理]** ページで、データのインポート をクリックし、次に データインポートタスクの作成 をクリックします。
ステップ 2:取り込みの開始
表示されたダイアログボックスで、S3 - データのインポート セクションの 今すぐ統合 をクリックします。 次に、ターゲットの Logstore を選択します。
ステップ 3:タスク情報の設定
フォームに入力します。[CloudFront を使用] スイッチを有効にし、前のステップで取得した CloudFront ドメイン名 と トークン を入力します。設定をプレビューし、**[次へ]** をクリックします。
このセクションでは、CloudFront 関連の設定に焦点を当てています。完全な設定手順については、「Amazon S3 ファイルのインポート」をご参照ください。