ASi

CLI での RDS MySQL のインスタンスの作り方

DB の ParameterGroup はあらかじめ作っておく。下記では "DBParameterGroupName": "db-1" の db-1。
DBName は MySQL では省略できる。

create-db-instance.json

{
    "DBName": "ADatabase", 
    "DBInstanceIdentifier": "db-1", 
    "AllocatedStorage": 5, 
    "DBInstanceClass": "db.t2.micro", 
    "Engine": "mysql", 
    "MasterUsername": "root", 
    "MasterUserPassword": "1234567890", 
    "VpcSecurityGroupIds": [
        "sg-12345678",
    ], 
    "AvailabilityZone": "us-west-1a", 
    "DBSubnetGroupName": "main-subnet", 
    "PreferredMaintenanceWindow": "tue:01:00-tue:02:00", 
    "DBParameterGroupName": "db-1", 
    "BackupRetentionPeriod": 7, 
    "PreferredBackupWindow": "19:00-20:00", 
    "Port": 3306, 
    "MultiAZ": false, 
    "EngineVersion": "5.7.17", 
    "AutoMinorVersionUpgrade": true, 
    "LicenseModel": "general-public-license", 
    "OptionGroupName": "default:mysql-5-7", 
    "PubliclyAccessible": false, 
    "Tags": [
        {"Key": "owner", "Value": "someone"},
        {"Key": "workload-type", "Value": "development"}
    ], 
    "StorageType": "gp2", 
    "StorageEncrypted": false, 
    "CopyTagsToSnapshot": false, 
    "EnableIAMDatabaseAuthentication": false
}


$ aws --profile someone rds create-db-instance --cli-input-json file://`pwd`/create-db-instance.json


なぜか OSX では "file://" が要る。
成功すると下記の様な出力が得られる。

{
    "DBInstance": {
        "PubliclyAccessible": false, 
        "MasterUsername": "root", 
        "MonitoringInterval": 0, 
        "LicenseModel": "general-public-license", 
        "VpcSecurityGroups": [
            {
                "Status": "active", 
                "VpcSecurityGroupId": "sg-12345678"
            }
        ], 
        "CopyTagsToSnapshot": false, 
        "OptionGroupMemberships": [
            {
                "Status": "in-sync", 
                "OptionGroupName": "default:mysql-5-7"
            }
        ], 
        "PendingModifiedValues": {
            "MasterUserPassword": "****"
        }, 
        "Engine": "mysql", 
        "MultiAZ": false, 
        "DBSecurityGroups": [], 
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "db-1", 
                "ParameterApplyStatus": "in-sync"
            }
        ], 
        "AutoMinorVersionUpgrade": true, 
        "PreferredBackupWindow": "19:00-20:00", 
        "DBSubnetGroup": {
            "Subnets": [
                {
                    "SubnetStatus": "Active", 
                    "SubnetIdentifier": "subnet-12345678", 
                    "SubnetAvailabilityZone": {
                        "Name": "us-west-1a"
                    }
                }
            ], 
            "DBSubnetGroupName": "main-subnet", 
            "VpcId": "vpc-12345678", 
            "DBSubnetGroupDescription": "Main subnet", 
            "SubnetGroupStatus": "Complete"
        }, 
        "ReadReplicaDBInstanceIdentifiers": [], 
        "AllocatedStorage": 5, 
        "DBInstanceArn": "arn:aws:rds:us-west-1:111122223333:db:db-1", 
        "BackupRetentionPeriod": 7, 
        "DBName": "ADatabase", 
        "PreferredMaintenanceWindow": "tue:01:00-tue:02:00", 
        "DBInstanceStatus": "creating", 
        "IAMDatabaseAuthenticationEnabled": false, 
        "EngineVersion": "5.7.17", 
        "AvailabilityZone": "us-west-1a", 
        "DomainMemberships": [], 
        "StorageType": "gp2", 
        "DbiResourceId": "db-XXXXXXXXXXXXXXXXXXXXXXXXXX", 
        "CACertificateIdentifier": "rds-ca-2015", 
        "StorageEncrypted": false, 
        "DBInstanceClass": "db.t2.micro", 
        "DbInstancePort": 0, 
        "DBInstanceIdentifier": "db-1"
    }
}