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"
]
}
]
}
コメント
コメントを投稿