Amazon S3 からの転送では、Amazon CloudFront ディストリビューションを下り(外向き)パスとして使用できます。
CloudFront を介したデータ転送では、S3 から直接転送する場合と比較して、AWS の下り(外向き)コストが低くなる可能性があります。詳細については、CloudFront の料金と S3 下り(外向き)料金をご覧ください。
下り(外向き)パスとして CloudFront を使用しても、S3 オブジェクトは一般に公開されません。詳しくは、CloudFront を使用するとオブジェクトは一般に公開されますか?をご覧ください。
概要
CloudFront 経由で S3 データを転送するには、次の手順を行う必要があります。
IAM 権限を構成する
エージェントレス転送権限の手順に従って、必要な Google Cloud 権限を付与します。
S3 バケットへのアクセスを構成する
送信元へのアクセスを構成する: Amazon S3 の手順に沿って、Amazon S3 内のデータへのアクセスを構成します。
S3 バケットに CloudFront ディストリビューションを作成する
- AWS アカウントで CloudFront に移動します。
- [CloudFront ディストリビューションの作成] をクリックします。
- [送信元ドメイン] で、S3 バケットを選択します。
- Origin path は空のままにする必要があります。
- 自動入力された [Origin name] をそのまま使用するか、独自の値を指定します。
- [Origin access] セクションで、[Public] を選択します。これはバケットを公開しません。代わりに、アクセス メカニズムが構成されないことを CloudFront に伝えます。
- [キャッシュキーと送信元リクエスト] セクションで、次の操作を行います。
- [キャッシュ ポリシー] で、CachingDisabled を選択します。これにより、CloudFront がリクエストをキャッシュに保存して未認証の閲覧者に配信することを防止できます。
- [Origin request policy] で、AllViewerExceptHostHeader を選択します。これにより、CloudFront が認証ヘッダーを S3 に転送できるようになるため、Storage Transfer Service は安全な認証情報を使用してバケットにアクセスできます。
- [ウェブ アプリケーション ファイアウォール(WAF)] セクションで、[有効化しない] を選択します。
- 必要に応じて、料金クラスを選択します。Storage Transfer Service は、ソースバケットのリージョンに基づいてワーカープールを選択するため、そのリージョンで CloudFront の料金が発生します。最適な価格にするためには、ソースバケットが米国またはヨーロッパに存在するようにするか、CloudFront の料金クラスとして [北米とヨーロッパのみを使用する] を選択します。
[Create CloudFront Distribution] をクリックします。
正常に作成されると、CloudFront のディストリビューションの詳細ページが表示されます。
ディストリビューション ドメイン名をメモします。例:
https://dy1h2n3l4ob56.cloudfront.net
。詳細ページのディストリビューション ドメイン名の前にhttps://
プロトコルが含まれていない場合は、転送ジョブの作成時に自分でプロトコルを追加する必要があります。
転送ジョブを作成する
CloudFront ディストリビューションを介した転送は、Google Cloud コンソールと REST API でサポートされています。
転送ジョブ名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。リソース名は、他の Google Cloud リソースの名前に反映され、プロジェクト外部の Google 内部システムに公開される場合があります。Google Cloud コンソール
Google Cloud コンソールを使用して転送を作成するには、転送を作成するの手順を行ってください。
CloudFront ドメインの入力を求められたら、前のセクションでメモしたディストリビューション ドメイン名を入力します。この値は、Amazon Web Services コンソール の CloudFront セクションでも確認できます。これには、次の形式があります。https://dy1h2n3l4ob56.cloudfront.net
REST API
REST API を使用して転送を作成するには、転送の作成ページの例に従ってください。
ディストリビューション ドメイン名を transferSpec.awsS3DataSource.cloudfrontDomain
フィールドの値として指定します。
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
...
}
よくある質問
CloudFront を使用するとオブジェクトは一般に公開されますか?
いいえ。このページの構成手順に従っている場合、オブジェクトは一般に公開されません。
- Cloudfront は S3 オブジェクトに直接アクセスできません。
- ユーザがオブジェクトに直接アクセスしようとするか、(バケットが非公開の場合に)CloudFront を介してアクセスしようとすると、
permission denied
エラーが発生します。 - Storage Transfer Service は、転送ジョブで指定した認証情報を使用して CloudFront へのリクエストに署名します。これにより、S3 から直接ダウンロードする場合と同様にオブジェクトを安全にダウンロードできます。これが機能するのは、ヘッダー転送設定
AllViewerExceptHostHeader
があるためです。