翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Rclone を使用して Microsoft Azure Blob から Amazon S3 にデータを移行する
作成者: Suhas Basavaraj (AWS)、Aidan Keane (AWS)、Corey Lane (AWS)
概要
このパターンでは、Rclone
前提条件と制限
前提条件
アクティブな AWS アカウント
Azure Blob コンテナサービスに保存されているデータ
アーキテクチャ
ソーステクノロジースタック
Azure Blob ストレージコンテナ
ターゲットテクノロジースタック
Amazon S3 バケット
Amazon Elastic Compute Cloud (Amazon EC2) インスタンス
アーキテクチャ

ツール
Amazon Simple Storage Service (Amazon S3) は、量にかかわらず、データを保存、保護、取得するのに役立つクラウドベースのオブジェクトストレージサービスです。
Rclone
は、rsync にインスパイアされたオープンソースのコマンドラインプログラムです。多くのクラウドストレージプラットフォームで、ファイルを管理するために使用できます。
ベストプラクティス
Azure から Amazon S3 にデータを移行する場合、不必要なコストや転送速度の低下を避けるため、以下の事項に注意してください。
AWS インフラストラクチャは、AWS リージョン
us-east-1
(北バージニア)や Azure リージョンEast US
など、Azure ストレージアカウントや Blob コンテナと同じ地域に作成します。NAT ゲートウェイは、入口帯域幅と出口帯域幅の両方でデータ転送コストが発生するため、可能な限り使用しないでください。
Amazon S3 用の VPC ゲートウェイエンドポイント を使用すると、パフォーマンスが向上します。
Intel x86 インスタンスよりも低コストで高いパフォーマンスを実現するためには、AWS Graviton2 (ARM) プロセッサベースの EC2 インスタンスの使用を検討してください。Rcloneは 何度もクロスコンパイルされており、プリコンパイルされた ARM バイナリを提供します。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
送信先の S3 バケットを準備します。 | 適切な AWS リージョンに新しい S3 バケットを作成するか、移行するデータの宛先として既存のバケットを選択します。 | AWS 管理者 |
Amazon EC2 用の IAM インスタンスロールを作成します。 | Amazon EC2 用の新しい AWS Identity and Access Management (IAM) ロールを作成します。このロールは、送信先の S3 バケットへの書き込みアクセス権を EC2 インスタンスに与えます。 | AWS 管理者 |
IAM インスタンスロールをポリシーにアタッチする | IAM コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して、送信先の S3 バケットへの書き込みアクセスを許可する EC2インスタンスロールのインラインポリシーを作成します。ポリシーの例については、「追加情報」セクションを参照してください。 | AWS 管理者 |
EC2 インスタンスを起動します。 | 新しく作成した IAM サービスロールを使用するように設定された Amazon Linux EC2 インスタンスを起動します。このインスタンスは、インターネット経由で Azure パブリック API エンドポイントにアクセスする必要があります。 注記AWS Graviton ベースの EC2 インスタンスを使用してコストを削減することを検討してください。Rclone は ARM がコンパイルされたバイナリを提供します。 | AWS 管理者 |
Azure AD サービスプリンシパルを作成します。 | Azure CLI を使用して、ソース Azure Blob ストレージコンテナへの読み取り専用アクセス権がある Azure Active Directory (Azure AD) サービスプリンシパルを作成します。手順については、「追加情報」セクションを参照してください。これらの認証情報を EC2 インスタンス上の場所 | クラウド管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
Rclone をダウンロードしてインストールします。 | Rclone コマンドラインプログラムをダウンロードしてインストールします。インストール手順については、Rclone インストールのドキュメント | AWS 全般、クラウド管理者 |
Rclone を設定します。 | 次の
| AWS 全般、クラウド管理者 |
Rclone の設定を確認してください。 | Rclone が設定され、権限が正しく機能していることを確認するには、Rclone がプロファイルを解析し、Azure Blob コンテナと S3 バケット内のオブジェクトにアクセスできることを確認します。検証コマンドの例については、以下を参照してください。
| AWS 全般、クラウド管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
コンテナからデータを移行します。 | 例: コピー このコマンドは、コピー元の Azure Blob コンテナから、送信先 S3 バケットにデータをコピーします。
例: 同期 このコマンドは、ソースの Azure Blob コンテナと移行先の S3 バケット間でデータを同期します。
重要同期コマンドを使用すると、ソースコンテナに存在しないデータは送信先 S3 バケットから削除されます。 | AWS 全般、クラウド管理者 |
コンテナを同期します | 最初のコピーが完了したら、Rclone 同期コマンドを実行して継続的な移行を実行し、移行先の S3 バケットにない新規ファイルのみをコピーします。 | AWS 全般、クラウド管理者 |
データが正常に移行されたことを確認します。 | データが移行先の S3 バケットに正常にコピーされたことを確認するには、Rclone lsd | AWS 全般、クラウド管理者 |
関連リソース
「Amazon S3 ユーザーガイド」 (AWS ドキュメント)
「Amazon EC2 の IAM ロール」 (Amazon EC2 ドキュメント)
「Microsoft Azure Blob コンテナの作成」
(Microsoft Azure ドキュメント) 「Rclone コマンド」
(Rclone ドキュメント)
追加情報
EC2 インスタンスのロールポリシーの例
このポリシーは、アカウント内の特定のバケットへの読み取り/書き込みアクセスを EC2 インスタンスに提供します。バケットでサーバー側の暗号化にカスタマーマネージドキーを使用する場合、ポリシーには AWS Key Management Service (AWS KMS) への追加アクセスが必要となる場合があります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "arn:aws:s3:::*" } ] }
読み取り専用の Azure AD サービスプリンシパルの作成
Azure サービスプリンシパルは、顧客のアプリケーション、サービス、自動化ツールが特定の Azure リソースにアクセスするためのセキュリティ ID です。これは、特定のロールを持ち、リソースへのアクセスが厳密に制御されているユーザー ID (ログイン名とパスワードまたは証明書) と考えることができます。最小特権の権限に従い、Azure 内のデータを誤って削除されないように保護する読み取り専用のサービスプリンシパルを作成するには、次の手順に従います。
Microsoft Azure クラウドアカウントポータルにログインし、PowerShell でクラウドシェルを起動するか、ワークステーションで Azure コマンドラインインターフェイス (CLI) を使用します。
サービスプリンシパルを作成し、Azure Blob ストレージアカウントへの「読み取り専用
」アクセス権限を持つように設定します。このコマンドの JSON 出力を azure-principal.json
というローカルファイルに保存します。ファイルは EC2 インスタンスにアップロードされます。 括弧 ({
と}
) で示されているプレースホルダー変数を Azure サブスクリプション ID、リソースグループ名、ストレージアカウント名で置き換えます。az ad sp create-for-rbac ` --name AWS-Rclone-Reader ` --role "Storage Blob Data Reader" ` --scopes /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}/providers/Microsoft.Storage/storageAccounts/{Storage Account Name}