ApsaraDB for RDSをROSで起動する

# はじめに
今回は、Alibaba CloudのRDS(Relational Database Service)をROSで起動します。

# コンソールでROSを選んでサンプルテンプレートを起動

![9e87044c.png](https://qiita-image-store.s3.amazonaws.com/0/241104/22dd9274-c868-427e-4d28-865accd701dd.png)

![24cadb7a.png](https://qiita-image-store.s3.amazonaws.com/0/241104/8b73bd1a-23dd-0939-c7ea-3a8bf4b54663.png)

![9e50cafc.png](https://qiita-image-store.s3.amazonaws.com/0/241104/3af93998-6f62-8c1d-1345-98b79d21f0ef.png)

![86803faf.png](https://qiita-image-store.s3.amazonaws.com/0/241104/204a4029-9d35-3be8-cb7c-365a18a4f13e.png)

サンプルが新しく作成したアカウントは対応できないようです。
また、MySQLも _5.5_ と _5.6_ なので、古いようです。

# サンプルテンプレートをカスタマイズする。

## 準備

VPCをROSで作っておきます。

[AlibabaCloudのResource Orchestration Service(ROS)を触ってみる。](https://qiita.com/wa-ta-ru/items/244596cbb7403c65f566)

## テンプレートをカスタマイズ

[ALIYUN::RDS::DBInstance](https://jp.alibabacloud.com/help/doc-detail/51200.htm?spm=a21mg.p38356.a3.43.20aa16f1p2ZLDz)
や
[インスタンスタイプリスト - プロダクト紹介| Alibaba Cloud ドキュメントセンター](https://jp.alibabacloud.com/help/doc-detail/26312.htm)
を参考にしていきます。

## できたテンプレートがこちら

```json
{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Description": "One RDS instance custom",
  "Parameters" : {
    "Engine" : {
      "Type" : "String",
      "Default": "MySQL",
      "AllowedValues": [
        "MySQL"
      ]
    },
    "EngineVersion" : {
      "Type" : "String",
      "Description": "MySQL：5.6/5.7",
      "Default": "5.7",
      "AllowedValues": [
        "5.6",
        "5.7"
      ]
    },
    "DBInstanceClass":{
      "Type" : "String",
      "Default": "rds.mysql.t1.small",
      "AllowedValues":[
        "mysql.n1.micro.1",
        "rds.mysql.t1.small",
        "rds.mysql.s1.small"
      ]
    },
    "DBInstanceStorage":{
      "Type": "Number",
      "MinValue": 5,
      "MaxValue": 2000,
      "Default": "10",
      "Description": "Incrementing in every 5G, unit: GB",
      "ConstraintDescription": "Incrementing in every 5G, unit: GB"
    },
    "DBInstanceNetType":{
      "Type": "String",
      "AllowedValues": ["Internet", "Intranet"]
    },
    "VpcId":{
      "Type": "String",
      "Default": "vpc-XXXXXXXXX",
      "Description": "VPC-ID"
    },
    "VPCSwitchId":{
      "Type": "String",
      "Default": "vsw-XXXXXXXXX",
      "Description": "VPC-SWITCH-ID"
    },
    "SecurityIPList":{
      "Type": "String",
      "Default": "0.0.0.0/0",
      "Description": ""
    },
    "DBUserName":{
      "Type": "String",
      "Description": "Database User Name"
    },
    "DBUserPassword":{
      "Type": "String",
      "Description": "Database User Password"
    }
  },
  "Resources" : {
    "Database": {
      "Type": "ALIYUN::RDS::DBInstance",
      "Properties": {
        "Engine": {"Ref": "Engine"},
        "EngineVersion": {"Ref": "EngineVersion"},
        "DBInstanceClass": {"Ref": "DBInstanceClass"},
        "DBInstanceStorage": {"Ref": "DBInstanceStorage"},
        "DBInstanceNetType": {"Ref": "DBInstanceNetType"},
        "SecurityIPList": {"Ref": "SecurityIPList"},
        "VpcId": {"Ref": "VpcId"},
        "VSwitchId": {"Ref": "VPCSwitchId"},
        "AllocatePublicConnection": true,
        "MasterUsername": {"Ref": "DBUserName"},
        "MasterUserPassword": {"Ref": "DBUserPassword"}
      }
    }
  },
  "Outputs": {
    "DBInstanceId": {
      "Value" : {"Fn::GetAtt": ["Database", "DBInstanceId"]}
    },
    "PublicConnectionString": {
      "Value" : {"Fn::GetAtt": ["Database", "PublicConnectionString"]}
    },
    "PublicPort": {
      "Value" : {"Fn::GetAtt": ["Database", "PublicPort"]}
    },
    "InnerConnectionString": {
      "Value" : {"Fn::GetAtt": ["Database", "InnerConnectionString"]}
    },
    "InnerPort": {
      "Value" : {"Fn::GetAtt": ["Database", "InnerPort"]}
    }
  }
}
```

## テンプレートの説明

[ApsaraDB for RDSってなに？](https://qiita.com/wa-ta-ru/items/cb434f281a0c1fb4e37d)
の記事では、RDS構築後にパブリックアクセスの作業をしました。
今回は、下記のブロックを追加して構築できるようにしました。

```json
        "VpcId": {"Ref": "VpcId"},
        "VSwitchId": {"Ref": "VPCSwitchId"},
        "AllocatePublicConnection": true,
        "MasterUsername": {"Ref": "DBUserName"},
        "MasterUserPassword": {"Ref": "DBUserPassword"}
```

# まとめ
まだこのROSテンプレートは実運用には向いてません。
一度RDSをコンソールで起動していると、テンプレート作成の進みは良くなります。

では。