この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Snowball はセキュアなアプライアンスを使用したペタバイト規模のデータ転送ソリューションです。 今回からは最も一般的なユースケースと思われる、オンプレミスから AWS へのデータ移行(インポートジョブ)の手順を紹介します。
今回は Snowball の配送依頼の手順を紹介します。
3 行まとめ
今回のブログのポイントは以下の3点です
- 利用する S3 と同じリージョンで Snowball ジョブを作成
- Snowball のディスク容量はアメリカは 80TB/50TB の2択、残りの地域では 80TB 一択。
- ジョブの進捗は SNS で通知可能
リージョン選択
AWS Snowball はすべてのリージョンで利用出来るわけではありません。 AWS Snowball が提供されているリージョンに移動します。 また、Snowball を利用するリージョンと Snowball の配送先は強い結びつきがあります。
例えば
- アメリカ内のリージョンを利用する場合は、アメリカ以外には Snowball を配送できない
- Sydney リージョンを利用する場合は、オーストラリア以外には Snowball を配送できない
- EU 内のリージョンを利用する場合は、EU の28カ国以外には Snowball を配送できない
などです。
参考 : https://docs.aws.amazon.com/AWSImportExport/latest/ug/shipping.html
Snowball マネジメントコンソールへ移動
AWS マネジメントコンソールにログイン後、Snowball を利用するリージョンに移動し、"Create job" ボタンをクリックするとジョブの作成画面に移動します。
Snowball インポートジョブの作成
まずは AWS S3 にデータを取り込むインポートジョブを AWS マネジメントコンソールから作成します。
Snowball のトップから ”Create Job" をクリックすると、ジョブの作成画面に遷移します。
Step 1: Plan your job
ジョブの種類は以下の2種類があります。
- AWS S3 にデータを転送する Import into Amazon S3
- AWS S3 からデータを転送する Export from Amazon S3
今回は、AWS S3 にデータを取り込むため、前者の "Import into Amazon S3" を選択します。
Step 2: Give shipping details
次に、Snowball のサイズと 配送先と配送スピードを選択します。
サイズ
アメリカ地域では - 50TB - 80TB の両方に対応しているため、欲しいサイズを選択します。
アメリカ以外の地域では 80TB にしか対応していないため、この設定画面は存在しません。
50 TB は 200 USD, 80 TB は 250 USD の料金がかかります。
配送先
Snowball の配送先を指定します。
- 私書箱(post office box) への配送はできない
- Snowball の配送先と Snowball の利用先は同じでなければいけない
などの制限があるためご注意下さい。
参考 : https://docs.aws.amazon.com/AWSImportExport/latest/ug/shipping.html
配送スピード
配送スピードのオプションは地域によって異なります。 例えば、ドイツのフランクフルト・リージョンでは
- Express Shipping (1-2 business days)
- Standard Shipping (3-7 business days)
が選択可能でした。
配送方法によって料金は変わります。
Step 3: Give job details
Import job name
ジョブ名を記入します。
Destination
データのインポート先バケットを指定します。
専用バケットを用意していなかった場合は、プルダウンの "Create a bucket" から新規 S3 バケットが作成可能です。
Step 4: Set security
Permission
Snowball が S3 バケットにオブジェクトを書き込むために assume するロールを用意します。
ウィザード形式では以下のロールが作成されました
Permissions
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketPolicy",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::*"
}
]
}
Trust Relationships
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "importexport.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "AWSIE"
}
}
}
]
}
Encryption
AWS Snowball では Snowball に保存するオブジェクトは暗号化されます。この暗号鍵 は Envelope Encryption を使って暗号化されます。
ここでは Envelop Encryption に使うマスター鍵を指定します。
Snowball 用のデフォルトのマスター鍵の他、同一・別アカウントのユーザーが作成した鍵を指定することもできます。
参考 : https://docs.aws.amazon.com/AWSImportExport/latest/ug/kms.html
Step 5: Set notifications
Snowball が出荷されたなど、Snowball ジョブのステータスが遷移すると SNS 経由で通知を受けることができます。 この通知設定を行います。
SNS と 通知を受けたいイベントを指定します。
対応しているイベントは以下です。
Job Status | Description | Job Type That Status Applies To |
---|---|---|
Job created | ジョブが作成された直後。このステータスの間だけは、ジョブをキャンセルできます。 | Both |
Preparing Snowball | AWSは、ジョブのためにSnowballを準備しています。 | Both |
Exporting | AWSは、Amazon S3から Snowball にデータをエクスポートしています。 | Export |
Preparing shipment | AWSはSnowballを出荷する準備をしています。 | Both |
In transit to you | Snowball は、ジョブの作成時に提供されたアドレスに出荷されています。 | Both |
Delivered to you | Snowball はジョブの作成時に提供されたアドレスに到達しました。 | Both |
In transit to AWS | Snowball を AWS に返送した。 | Both |
At AWS | 出荷した Snowball がAWSに到達した。
インポートは、到着後1日以内に開始されます。 |
Both |
Importing | AWS が Amazon S3 にデータをインポートしています。 | Import |
Completed | インポートジョブやエクスポートジョブが正常に完了しました。 | Both |
Canceled | Your job has been canceled. You can only cancel Snowball import jobs during theJob created status.
ジョブがキャンセルされました。 Snowball インポートジョブは ”Job created”ステータスの間だけキャンセルすることができます。 |
Both |
もちろん、通知を受けないようにすることもできます。
Step 6: Review
最後に登録内容を確認し "Create Job" ボタンをクリックするとジョブが作成されます。
1時間以内であれば、取り消すことも可能です。
逆に、ワークフローが動き出すと、取り消せないということです。気をつけましょう。
Snowball ジョブの作成完了
作成が完了すると、マネジメントコンソール上でジョブが作成され、ジョブのステータスが確認できます。
SNS と Email を連携させ、ジョブ作成後に実際に届いた通知が以下です。
API からジョブを確認してみる
describe-job API にジョブIDを渡すと、ジョブの詳細を確認できます。
ジョブを作成したばかりのため、5行目"JobState": "New"
となっています。
また、インポートジョブのため、27行目が "JobType": "IMPORT"
となっています。
$ aws snowball describe-job --job-id JIDXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX --region eu-central-1
{
"JobMetadata": {
"SnowballCapacityPreference": "T80",
"JobState": "New",
"Description": "cm-berlin",
"AddressId": "XXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"KmsKeyARN": "arn:aws:kms:eu-central-1:123456789012:key/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"Notification": {
"NotifyAll": false,
"JobStatesToNotify": [
"New",
"WithAWS",
"InProgress",
"WithCustomer",
"PreparingShipment",
"InTransitToAWS",
"PreparingAppliance",
"Cancelled",
"InTransitToCustomer",
"Complete"
],
"SnsTopicARN": "arn:aws:sns:eu-central-1:123456789012:snowball-import-s3"
},
"RoleARN": "arn:aws:iam::123456789012:role/snowball-import-S3-role",
"JobId": "JIDXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"JobType": "IMPORT",
"CreationDate": 1473181393.0,
"Resources": {
"S3Resources": [
{
"BucketArn": "arn:aws:s3:::xxxxxxxx",
"KeyRange": {}
}
]
},
"ShippingDetails": {
"ShippingOption": "STANDARD"
}
}
}
まとめ
Snowball ジョブの作成方法を紹介しました。
配送については制約がいろいろとあるため、ご利用までに一度 "Shipping Considerations for AWS Snowball - AWS Import/Export" を一読下さい。 また SNS 通知を有効にすると、 Snowball の出荷・返送・取り込み完了などをリアルタイムで受け取れるため、ぜひ有効にして下さい。
次回は Snowball の配送と Snowball 到着後の初期設定を紹介します。