[aws-cli]json形式設定ファイルを元にスナップショットからRDSを復元する。
RDSをスナップショットから復元するコマンドはrestore-db-instance-from-db-snapshot
restore-db-instance-from-db-snapshot — AWS CLI 1.10.39 Command Reference
スナップショット取得元の設定内容は下記記事を参照
[aws-cli]RDSをjson形式設定ファイルから起動する。
デフォルトの設定ファイルを出力
$ aws rds restore-db-instance-from-db-snapshot --generate-cli-skeleton > default.json
$ cat default.json
{
"DBInstanceIdentifier": "",
"DBSnapshotIdentifier": "",
"DBInstanceClass": "",
"Port": 0,
"AvailabilityZone": "",
"DBSubnetGroupName": "",
"MultiAZ": true,
"PubliclyAccessible": true,
"AutoMinorVersionUpgrade": true,
"LicenseModel": "",
"DBName": "",
"Engine": "",
"Iops": 0,
"OptionGroupName": "",
"Tags": [
{
"Key": "",
"Value": ""
}
],
"StorageType": "",
"TdeCredentialArn": "",
"TdeCredentialPassword": "",
"CopyTagsToSnapshot": true
}
各項目について確認
DBInstanceIdentifier: DBインスタンス名 アカウント内で一意
DBSnapshotIdentifier: 起動の元となるDBスナップショット名
DBInstanceClass: インスタンスタイプ
Port: ポート 未定義であればデフォルト
AvailabilityZone: アベイラビリティゾーン
DBSubnetGroupName: DBサブネットグループ名
MultiAZ: マルチAZ構成にするか否か
PubliclyAccessible: 外部アクセス可否
AutoMinorVersionUpgrade: マイナーバージョンアップを適用するか否か
LicenseModel: ライセンシングモデル license-included | bring-your-own-license | general-public-license
DBName: database名
Engine: DBエンジン
Iops: ストレージへの秒間IO上限
OptionGroupName: オプショングループ名
Tags: タグの配列
StorageType: ストレージタイプ standard | gp2 | io1
TdeCredentialArn: HAパーティショングループのリソース番号
TdeCredentialPassword: HAパーティショングループの初期化時に使用したパーティションパスワード
CopyTagsToSnapshot: スナップショットにタグをコピーするか否か
書き換え
$ cat modify.json
{
"DBInstanceIdentifier": "test2",
"DBSnapshotIdentifier": "snapshotName",
"DBInstanceClass": "db.t2.micro",
"AvailabilityZone": "ap-northeast-1a",
"DBSubnetGroupName": "subnet-xxxxxxxx",
"MultiAZ": false,
"PubliclyAccessible": false,
"AutoMinorVersionUpgrade": true,
"LicenseModel": "general-public-license",
"Engine": "MySQL",
"Iops": 0,
"OptionGroupName": "",
"Tags": [
{
"Key": "test",
"Value": "test"
}
],
"StorageType": "standard",
"CopyTagsToSnapshot": true
}
作成
$ aws --region ap-northeast-1 rds restore-db-instance-from-db-snapshot --cli-input-json file:///tmp/modify.json
{
"DBInstance": {
"PubliclyAccessible": false,
"MasterUsername": "root",
"LicenseModel": "general-public-license",
"VpcSecurityGroups": [
{
"Status": "active",
"VpcSecurityGroupId": "sg-xxxxxxxx"
}
],
"CopyTagsToSnapshot": true,
"OptionGroupMemberships": [
{
"Status": "pending-apply",
"OptionGroupName": "default:mysql-5-6"
}
],
"PendingModifiedValues": {},
"Engine": "mysql",
"MultiAZ": false,
"DBSecurityGroups": [],
"DBParameterGroups": [
{
"DBParameterGroupName": "default.mysql5.6",
"ParameterApplyStatus": "in-sync"
}
],
"AutoMinorVersionUpgrade": true,
"PreferredBackupWindow": "19:00-19:30",
"DBSubnetGroup": {
"Subnets": [
{
"SubnetStatus": "Active",
"SubnetIdentifier": "subnet-xxxxxxxx",
"SubnetAvailabilityZone": {
"Name": "ap-northeast-1c"
}
},
{
"SubnetStatus": "Active",
"SubnetIdentifier": "subnet-xxxxxxxx",
"SubnetAvailabilityZone": {
"Name": "ap-northeast-1a"
}
}
],
"DBSubnetGroupName": "subnet-xxxxxxxx",
"VpcId": "vpc-xxxxxxxx",
"DBSubnetGroupDescription": "for db subnet",
"SubnetGroupStatus": "Complete"
},
"ReadReplicaDBInstanceIdentifiers": [],
"AllocatedStorage": 5,
"BackupRetentionPeriod": 3,
"DBName": "test",
"PreferredMaintenanceWindow": "sat:18:00-sat:18:30",
"DBInstanceStatus": "creating",
"EngineVersion": "5.6.27",
"AvailabilityZone": "ap-northeast-1a",
"StorageType": "standard",
"DbiResourceId": "db-xxxxxxxxxxxxxxxxxxxxxxxx",
"CACertificateIdentifier": "rds-ca-2015",
"StorageEncrypted": false,
"DBInstanceClass": "db.t2.micro",
"DbInstancePort": 0,
"DBInstanceIdentifier": "test2"
}
}
エラー
- A client error (InvalidParameterValue) occurred when calling the RestoreDBInstanceFromDBSnapshot operation: DBName must be null when Restoring for this Engine.
-
MySQLをリストアする場合にはDBNameを設定できないよう。
DBNameを削除して解消。