

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Rclone を使用して Microsoft Azure Blob から Amazon S3 にデータを移行する
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone"></a>

*Amazon Web Services、Suhas Basavaraj、Aidan Keane、Corey Lane*

## 概要
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-summary"></a>

このパターンでは、[Rclone](https://rclone.org/) を使用して Microsoft Azure Blob オブジェクトストレージから Amazon Simple Storage Service (Amazon S3) バケットにデータを移行する方法を説明します。このパターンを使用すると、1 回限りの移行や継続的なデータの同期を行うことができます。Rclone は Go で記述されたコマンドラインプログラムです。クラウドプロバイダーのさまざまなストレージテクノロジー間でデータを移動するために使用されます。

## 前提条件と制限事項
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-prereqs"></a>

**前提条件**
+ アクティブな AWS アカウント
+ Azure Blob コンテナサービスに保存されているデータ

## アーキテクチャ
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-architecture"></a>

**ソーステクノロジースタック**
+ Azure Blob ストレージコンテナ

**ターゲットテクノロジースタック**
+ Amazon S3 バケット
+ Amazon Elastic Compute Cloud (Amazon EC2) インスタンス

**アーキテクチャ**

![\[Microsoft Azure から Amazon S3 へのデータ移行\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/6ead815d-7768-4726-b27d-97a70cd21081/images/abe69eee-632f-4ca2-abf6-3223f3f3ec94.png)


## ツール
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-tools"></a>
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ [Rclone](https://rclone.org/) は、**rsync** にインスパイアされたオープンソースのコマンドラインプログラムです。多くのクラウドストレージプラットフォームで、ファイルを管理するために使用できます。

## ベストプラクティス
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-best-practices"></a>

Azure から Amazon S3 にデータを移行する場合、不必要なコストや転送速度の低下を避けるため、以下の事項に注意してください。
+ AWS インフラストラクチャは、AWS リージョン `us-east-1` (北バージニア)や Azure リージョン `East US` など、Azure ストレージアカウントや Blob コンテナと同じ地域に作成します。
+ NAT ゲートウェイは、入口帯域幅と出口帯域幅の両方でデータ転送コストが発生するため、可能な限り使用しないでください。
+ [Amazon S3 用の VPC ゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) を使用すると、パフォーマンスが向上します。
+ Intel x86 インスタンスよりも低コストで高いパフォーマンスを実現するためには、AWS Graviton2 (ARM) プロセッサベースの EC2 インスタンスの使用を検討してください。Rcloneは 何度もクロスコンパイルされており、プリコンパイルされた ARM バイナリを提供します。

## エピック
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-epics"></a>

### AWS と Azure のクラウドリソースを準備する
<a name="prepare-aws-and-azure-cloud-resources"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 送信先の S3 バケットを準備します。 | 適切な AWS リージョンに[新しい S3 バケットを作成するか](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)、移行するデータの宛先として既存のバケットを選択します。 | AWS 管理者 | 
| Amazon EC2 用の IAM インスタンスロールを作成します。 | [Amazon EC2 用の新しい AWS Identity and Access Management (IAM) ロールを作成します](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#working-with-iam-roles)。このロールは、送信先の S3 バケットへの書き込みアクセス権を EC2 インスタンスに与えます。 | AWS 管理者 | 
| IAM インスタンスロールをポリシーにアタッチする | IAM コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用して、送信先の S3 バケットへの書き込みアクセスを許可する EC2インスタンスロールのインラインポリシーを作成します。ポリシーの例については、「[追加情報](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional)」セクションを参照してください。 | AWS 管理者 | 
| EC2 インスタンスの起動 | 新規作成した IAM サービスロールを使用するように設定された Amazon Linux EC2 インスタンスを起動します。このインスタンスは、インターネット経由で Azure パブリック API エンドポイントにアクセスする必要があります。 コストを削減するには、[AWS Graviton ベースの EC2 インスタンス](https://docs.aws.amazon.com/compute-optimizer/latest/ug/graviton-recommendations.html)の使用を検討してください。Rclone は ARM がコンパイルされたバイナリを提供します。 | AWS 管理者 | 
| Azure AD サービスプリンシパルを作成します。 | Azure CLI を使用して、ソース Azure Blob ストレージコンテナへの読み取り専用アクセス権がある Azure Active Directory (Azure AD) サービスプリンシパルを作成します。手順については、「[追加情報](#migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional)」セクションを参照してください。これらの認証情報を EC2 インスタンス上の場所 `~/azure-principal.json` に格納します。 | クラウド管理者 | 

### Rclone のインストールと設定
<a name="install-and-configure-rclone"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Rclone をダウンロードしてインストールします。 | Rclone コマンドラインプログラムをダウンロードしてインストールします。インストール手順については、[Rclone インストールのドキュメント](https://rclone.org/install/)を参照してください。 | AWS 全般、クラウド管理者 | 
| Rclone を設定します。 | 次の `rclone.conf` サンプルファイルをコピーします。`AZStorageAccount` を Azure Storage アカウント名に置き換え、`us-east-1` をS3バケットのある AWS リージョンに置き換えます。このファイルを EC2 インスタンス上の場所 `~/.config/rclone/rclone.conf` に保存します。<pre>[AZStorageAccount]<br />type = azureblob<br />account = AZStorageAccount<br />service_principal_file = azure-principal.json<br /><br />[s3]<br />type = s3<br />provider = AWS<br />env_auth = true<br />region = us-east-1</pre> | AWS 全般、クラウド管理者 | 
| Rclone の設定を確認してください。 | Rclone が設定され、権限が正しく機能していることを確認するには、Rclone がプロファイルを解析し、Azure Blob コンテナと S3 バケット内のオブジェクトにアクセスできることを確認します。検証コマンドの例については、以下を参照してください。　[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone.html) | AWS 全般、クラウド管理者 | 

### Rclone を使用してデータを移行します。　
<a name="migrate-data-using-rclone"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| コンテナからデータを移行します。　 | Rclone [コピー](https://rclone.org/commands/rclone_copy/)または[同期](https://rclone.org/commands/rclone_sync/)コマンドを実行します。 **例: コピー**このコマンドは、コピー元の Azure Blob コンテナから、送信先 S3 バケットにデータをコピーします。　<pre>rclone copy AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>**例: 同期**このコマンドは、ソースの Azure Blob コンテナと移行先の S3 バケット間でデータを同期します。** **<pre>rclone sync AZStorageAccount:blob-container s3:amzn-s3-demo-bucket1</pre>**sync** コマンドを使用すると、ソースコンテナに存在しないデータは移行先の S3 バケットから削除されます。 | AWS 全般、クラウド管理者 | 
| コンテナを同期します  | 最初のコピーが完了したら、Rclone **同期**コマンドを実行して継続的な移行を実行し、移行先の S3 バケットにない新規ファイルのみをコピーします。 | AWS 全般、クラウド管理者 | 
| データが正常に移行されたことを確認します。 | データが移行先の S3 バケットに正常にコピーされたことを確認するには、Rclone [lsd](https://rclone.org/commands/rclone_lsd/) コマンドと [ls](https://rclone.org/commands/rclone_ls/) コマンドを実行します。 | AWS 全般、クラウド管理者 | 

## 関連リソース
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-resources"></a>
+ [「Amazon S3 ユーザーガイド」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) (AWS ドキュメント)
+ [「Amazon EC2 の IAM ロール」](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) (Amazon EC2 ドキュメント)
+ [「Microsoft Azure Blob コンテナの作成」](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal) (Microsoft Azure ドキュメント)
+ [「Rclone コマンド」](https://rclone.org/commands/) (Rclone ドキュメント)

## 追加情報
<a name="migrate-data-from-microsoft-azure-blob-to-amazon-s3-by-using-rclone-additional"></a>

**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 内のデータを誤って削除されないように保護する読み取り専用のサービスプリンシパルを作成するには、次の手順に従います。

1. Microsoft Azure クラウドアカウントポータルにログインし、PowerShell でクラウドシェルを起動するか、ワークステーションで Azure コマンドラインインターフェイス (CLI) を使用します。

1. サービスプリンシパルを作成し、Azure Blob ストレージアカウントへの「[読み取り専用](https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#storage-blob-data-reader)」アクセス権限を持つように設定します。このコマンドの 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}
   ```