Amazon DynamoDBのExport/ImportでAWSアカウントを跨ごうとして苦戦した話
Amazon DynamoDBのExport/ImportでAWSアカウントを跨ごうとして苦戦した話:
先日、DynamoDBを別のAWSアカウントに移す必要性が発生しました。AWS Data PipelineによるExportとImportで対応しようとしたのですが、AWSアカウントを跨ごうとしてハマったのでメモしておきます
最初、このような構成・手順でデータを移そうとしましたが、失敗しました
(1) Data Pipelineを利用して、移行元DBのデータをS3にExport
(2) Exportされたファイルを手元の端末にダウンロード
(3) 移行先のAWSアカウントにログインし、ExportされたファイルをS3に保存
(4) Data Pipelineを利用して、移行先のDBへデータをImport
この方法では、(4)のImport中にエラーが出て失敗してしまいました。いくつか設定を変えて試してみましたが、解決できなかったので、別の構成を試すことにしました
こちらの構成・手順で、無事移行できました
(1) Data Pipelineを利用して、移行元DBのデータをS3にExport
(2)(3) Data Pipelineを利用して、移行元AWSアカウントのS3にあるファイルをソースとして指定し、DynamoDBへImport
この構成をとるには、移行先AWSアカウントのEC2にアタッチされたIAM Roleが、移行元AWSアカウントのS3へアクセスできる必要があります。これにはいくつかの方法がありますが、こちらの記事を参考にバケットポリシーで許可しました(記事中の「2. バケットポリシーの許可」を採用しました)。EC2にアタッチされているIAM Role名がデフォルトの
Actionは上記の例では全て許可していますが、DynamoDBへのImportに必要なActionだけに絞ることもできそうです
先日、DynamoDBを別のAWSアカウントに移す必要性が発生しました。AWS Data PipelineによるExportとImportで対応しようとしたのですが、AWSアカウントを跨ごうとしてハマったのでメモしておきます
移行できなかった構成
最初、このような構成・手順でデータを移そうとしましたが、失敗しました
(1) Data Pipelineを利用して、移行元DBのデータをS3にExport
(2) Exportされたファイルを手元の端末にダウンロード
(3) 移行先のAWSアカウントにログインし、ExportされたファイルをS3に保存
(4) Data Pipelineを利用して、移行先のDBへデータをImport
この方法では、(4)のImport中にエラーが出て失敗してしまいました。いくつか設定を変えて試してみましたが、解決できなかったので、別の構成を試すことにしました
移行できた構成
こちらの構成・手順で、無事移行できました
(1) Data Pipelineを利用して、移行元DBのデータをS3にExport
(2)(3) Data Pipelineを利用して、移行元AWSアカウントのS3にあるファイルをソースとして指定し、DynamoDBへImport
この構成をとるには、移行先AWSアカウントのEC2にアタッチされたIAM Roleが、移行元AWSアカウントのS3へアクセスできる必要があります。これにはいくつかの方法がありますが、こちらの記事を参考にバケットポリシーで許可しました(記事中の「2. バケットポリシーの許可」を採用しました)。EC2にアタッチされているIAM Role名がデフォルトの
DataPipelineDefaultResourceRole
だとすると、バケットポリシーは以下のようになります。s3-bucket-name-in-123456789012
は自身のバケット名に置き換えます{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::098765432109:role/DataPipelineDefaultResourceRole" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::s3-bucket-name-in-123456789012/*", "arn:aws:s3:::s3-bucket-name-in-123456789012" ] } ] }
コメント
コメントを投稿