Edited at

[aws-cli]RDSをjson形式設定ファイルから起動する。

More than 3 years have passed since last update.


[aws-cli]RDSをjson形式設定ファイルから起動する。

RDSの起動コマンドはcreate-db-inscance

create-db-instance — AWS CLI 1.10.38 Command Reference


デフォルトの設定ファイルを出力


$ aws rds create-db-instance --generate-cli-skeleton > defaultRDS.json
$ cat defaultRDS.json
{
"DBName": "",
"DBInstanceIdentifier": "",
"AllocatedStorage": 0,
"DBInstanceClass": "",
"Engine": "",
"MasterUsername": "",
"MasterUserPassword": "",
"DBSecurityGroups": [
""
],
"VpcSecurityGroupIds": [
""
],
"AvailabilityZone": "",
"DBSubnetGroupName": "",
"PreferredMaintenanceWindow": "",
"DBParameterGroupName": "",
"BackupRetentionPeriod": 0,
"PreferredBackupWindow": "",
"Port": 0,
"MultiAZ": true,
"EngineVersion": "",
"AutoMinorVersionUpgrade": true,
"LicenseModel": "",
"Iops": 0,
"OptionGroupName": "",
"CharacterSetName": "",
"PubliclyAccessible": true,
"Tags": [
{
"Key": "",
"Value": ""
}
],
"DBClusterIdentifier": "",
"StorageType": "",
"TdeCredentialArn": "",
"TdeCredentialPassword": "",
"StorageEncrypted": true,
"KmsKeyId": "",
"CopyTagsToSnapshot": true
}


各項目について確認

DBName: database名

DBInstanceIdentifier: DBインスタンス名 アカウント内で一意

AllocatedStorage: ストレージのサイズ

DBInstanceClass: インスタンスタイプ

Engine: DBエンジン

MasterUserName: DB管理ユーザ名

MasterUserPassword: DB管理ユーザパスワード

DBSecurityGroups: DBセキュリティグループの配列

VpcSecurityGroupIds: VPCセキュリティグループの配列

AvailabilityZone: アベイラビリティゾーン

DBSubnetGroupName: DBサブネットグループ名

PreferredMaintenanceWindow: メンテナンスウィンドウ ddd:hh24:mi-ddd:hh24:mi

DBParameterGroupName: DBパラメータグループ名

BackupRetentionPeriod: バックアップ保持期間 0だとバックアップを行わない

PreferredBackupWindow: バックアップウィンドウ hh24:mi-hh24:mi

Port: ポート 未定義であればデフォルト

MultiAZ: マルチAZ構成にするか否か

EngineVersion: DBエンジンのバージョン

AutoMinorVersionUpgrade: マイナーバージョンアップを適用するか否か

LicenseModel: ライセンシングモデル license-included | bring-your-own-license | general-public-license

Iops: ストレージへの秒間IO上限

OptionGroupName: オプショングループ名

CharacterSetName: 文字コード

PubliclyAccessible: 外部アクセス可否

Tags: タグの配列

DBClusterIdentifier: DBクラスタ名

StorageType: ストレージタイプ standard | gp2 | io1

TdeCredentialArn: HAパーティショングループのリソース番号

TdeCredentialPassword: HAパーティショングループの初期化時に使用したパーティションパスワード

StorageEncrypted: ストレージの暗号化有無

KmsKeyId: KMSで設定されたID

CopyTagsToSnapshot: スナップショットにタグをコピーするか否か


書き換え


$ cat createRDS.json
{
"DBName": "test",
"DBInstanceIdentifier": "test",
"AllocatedStorage": 5,
"DBInstanceClass": "db.t2.micro",
"Engine": "MySQL",
"MasterUsername": "root",
"MasterUserPassword": "password",
"VpcSecurityGroupIds": [
"sg-xxxxxx"
],
"AvailabilityZone": "ap-northeast-1a",
"DBSubnetGroupName": "default-vpc-xxxxxxx",
"PreferredMaintenanceWindow": "Sat:18:00-Sat:18:30",
"BackupRetentionPeriod": 3,
"PreferredBackupWindow": "19:00-19:30",
"MultiAZ": false,
"EngineVersion": "5.6.27",
"AutoMinorVersionUpgrade": true,
"LicenseModel": "general-public-license",
"Iops": 0,
"OptionGroupName": "",
"PubliclyAccessible": false,
"Tags": [
{
"Key": "test",
"Value": "test"
}
],
"DBClusterIdentifier": "",
"StorageType": "standard",
"StorageEncrypted": false,
"CopyTagsToSnapshot": true
}


作成


$ aws --region ap-northeast-1 rds create-db-instance --cli-input-json file:///tmp/createRDS.json
{
"DBInstance": {
"PubliclyAccessible": false,
"MasterUsername": "root",
"LicenseModel": "general-public-license",
"VpcSecurityGroups": [
{
"Status": "active",
"VpcSecurityGroupId": "sg-xxxxxxxx"
}
],
"CopyTagsToSnapshot": true,
"OptionGroupMemberships": [
{
"Status": "in-sync",
"OptionGroupName": "default:mysql-5-6"
}
],
"PendingModifiedValues": {
"MasterUserPassword": "****"
},
"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": "default-vpc-xxxxxxxx",
"VpcId": "vpc-xxxxxxxx",
"DBSubnetGroupDescription": "Created from the RDS Management Console",
"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-XXXXXXXXXXXXXXXXXXX",
"CACertificateIdentifier": "rds-ca-2015",
"StorageEncrypted": false,
"DBInstanceClass": "db.t2.micro",
"DbInstancePort": 0,
"DBInstanceIdentifier": "account-dev"
}
}


エラー集


A client error (InvalidParameterCombination) occurred when calling the CreateDBInstance operation: Invalid license model '' for engine 'mysql'. Valid license models are: general-public-license


LicenseModelを設定していなかったのが原因。

general-public-licenseをセットして解消。
 

A client error (InvalidParameterCombination) occurred when calling the CreateDBInstance operation: DB Instance class db.t2.micro does not support encryption at rest


StorageEncryptedがtrueになっていたのが原因。

falseをセットして解消。
 

A client error (InvalidParameterCombination) occurred when calling the CreateDBInstance operation: To enable encryption at rest StorageEncrypted must be set to 'true'


StorageEncryptedがfalseなのにKmsKeyIdが設定されているのが原因。

KmsKeyIdを削除して解消。
 

A client error (InvalidParameterValue) occurred when calling the CreateDBInstance operation: Invalid endpoint port 0. Valid range is: 1150-65535


Portに0が設定されているのが原因。

Portを削除して解消。

各DBのデフォルトポートが使用される。
 

A client error (InvalidParameterValue) occurred when calling the CreateDBInstance operation: The parameter MasterUserPassword is not a valid password because it is shorter than 8 characters.


MasterUserPasswordが8文字以下なのが原因。

8文字以上を設定して解消。
 

A client error (InvalidParameterCombination) occurred when calling the CreateDBInstance operation: DB Security Groups and Vpc Security Groups cannot both be provided.


DBSecurityGroupsとVpcSecurityGroupIdsが両方設定されているのが原因。

DBSecurityGroupsを削除して解消。
 

A client error (StorageTypeNotSupported) occurred when calling the CreateDBInstance operation: Invalid storage type:


StorageTypeが空になっているのが原因。

standardを設定して解消。
 

A client error (InvalidParameterValue) occurred when calling the CreateDBInstance operation: Character sets not supported on create for engine: mysql and version5.6.27


CharacterSetNameが空になっているのが原因。

CharacterSetNameを削除して解消。
 

A client error (DBParameterGroupNotFound) occurred when calling the CreateDBInstance operation: DBParameterGroup not found:


DBParameterGroupNameが空になっているのが原因。

DBParameterGroupNameを削除して解消。
 

A client error (InvalidParameterCombination) occurred when calling the CreateDBInstance operation: Could not create the client with the key store.


TdeCredentialArnとTdeCredentialPasswordが設定されているのが原因。

TdeCredentialArnとTdeCredentialPasswordを削除して解消。