DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > 【AWS入門】RDSでPostgreSQLを活用してみる - PrismScaler

【AWS入門】RDSでPostgreSQLを活用してみる - PrismScaler

1. はじめに

こんにちは!株式会社Definerのライターチームです! 今回は、RDSでPostgreSQLのデータベースを立ち上げる方法について気になりますよね。 実際の画面や、資源を見ながら詳しく解説していきましょう。

2. 目的・ユースケース

この記事では、AWSでPostgreSQLデータベースを利用したいときに、参考になる情報やプラクティスをまとめています。

3. Amazon RDSとは

まずは、Amazon RDSについておさらいします。   Amazon RDS(Amazon Relational Database Service)は、AWSが提供しているリレーショナルデータベースサービスです。 データベースのインストールやバックアップ設定などが不要で、すぐにデータベースの利用を開始できます。 リレーショナルデータベースは、行と列の2軸で表され、それに基づきデータの検索や編集が行われます。平たく言うと、高機能なエクセルのようなイメージです。 リレーショナルデータベースは、情報の整合性や管理効率化に適しており、入出金データや従業員一覧などの多くのデータ管理に使用されています。     PostgreSQLについても、簡単におさらいします。   PostgreSQLはオープンソース(OSS)のデータベースで、拡張性の高さや機能の豊富さが特徴です。 利用は無料であり、LinuxやMacの他、 Windowsにも対応しています。 非常に自由度の高いライセンスを採用しているため、独自のカスタムをした場合も公開義務はありません。 そのため、多くのWebシステムやアプリケーションなどのDBとして使用されています。

4. RDSでPostgreSQLを起動する

それでは早速、RDSを使ってPostgreSQLのデータベースを立ち上げていきます。 今回は、AWS CLIのコマンド実行でRDSを作成します。   ①DBサブネットグループの作成 まずは、RDS作成に必要なDBサブネットグループを作ります。 以下のコマンドを実行し、Jsonが返ってこれば作成成功です。 サブネットは、2つ以上指定する必要があります。   ②RDSインスタンスの作成 続いてコマンドで、RDSインスタンスを作成します。 今回は、エンジン「postgreSQL 13.6」、インスタンスタイプ「db.t3.micro」で作成しました。 デフォルトは、パブリックアクセスなし、SingleAZとなっています。 ユーザ名とパスワードは、適宜変更してください。 こちらもコマンド実行が成功すると、Jsonが返ってきます。     これで、RDSでPostgreSQLが立ち上がりました。  
 ## DBサブネットグループの作成
aws rds create-db-subnet-group \
    --db-subnet-group-name subg-test \
    --db-subnet-group-description test \
    --subnet-ids subnet-xxxxxxxx subnet-yyyyyyy


## RDSの作成
aws rds create-db-instance \
    --db-instance-identifier postgre-test \
    --db-instance-class db.t3.micro \
    --engine postgres \
    --engine-version 13.6 \
    --allocated-storage 20 \
    --master-username root \
    --master-user-password password \
    --backup-retention-period 3 \
    --vpc-security-group-ids sg-xxxxxx \
    --db-subnet-group-name subg-test                
 

RDS作成コマンド成功時に返ってくるJson
{
    "DBInstance": {
        "DBInstanceIdentifier": "postgre-test",
        "DBInstanceClass": "db.t3.micro",
        "Engine": "postgres",
        "DBInstanceStatus": "creating",
        "MasterUsername": "root",
        "AllocatedStorage": 20,
        "PreferredBackupWindow": "13:42-14:12",
        "BackupRetentionPeriod": 3,
        "DBSecurityGroups": [],
        "VpcSecurityGroups": [
            {
                "VpcSecurityGroupId": "sg-xxxxx",
                "Status": "active"
            }
        ],
        "DBParameterGroups": [
            {
                "DBParameterGroupName": "default.postgres13",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "DBSubnetGroup": {
            "DBSubnetGroupName": "subg-test",
            "DBSubnetGroupDescription": "test",
            "VpcId": "vpc-xxxxxx",
            "SubnetGroupStatus": "Complete",
            "Subnets": [
                {
                    "SubnetIdentifier": "subnet-xxxxx",
                    "SubnetAvailabilityZone": {
                        "Name": "ap-northeast-1a"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                },
                {
                    "SubnetIdentifier": "subnet-xxxxx",
                    "SubnetAvailabilityZone": {
                        "Name": "ap-northeast-1c"
                    },
                    "SubnetOutpost": {},
                    "SubnetStatus": "Active"
                }
            ]
        },
        "PreferredMaintenanceWindow": "mon:14:43-mon:15:13",
        "PendingModifiedValues": {
            "MasterUserPassword": "****"
        },
        "MultiAZ": false,
        "EngineVersion": "13.6",
        "AutoMinorVersionUpgrade": true,
        "ReadReplicaDBInstanceIdentifiers": [],
        "LicenseModel": "postgresql-license",
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "default:postgres-13",
                "Status": "in-sync"
            }
        ],
        "PubliclyAccessible": false,
        "StorageType": "gp2",
        "DbInstancePort": 0,
        "StorageEncrypted": false,
        "DbiResourceId": "db-FxxxxxxxQ",
        "CACertificateIdentifier": "rds-ca-2019",
        "DomainMemberships": [],
        "CopyTagsToSnapshot": false,
        "MonitoringInterval": 0,
        "DBInstanceArn": "arn:aws:rds:ap-northeast-1:xxxxxxxxx:db:postgre-test",
        "IAMDatabaseAuthenticationEnabled": false,
        "PerformanceInsightsEnabled": false,
        "DeletionProtection": false,
        "AssociatedRoles": [],
        "TagList": [],
        "CustomerOwnedIpEnabled": false,
        "BackupTarget": "region",
        "NetworkType": "IPV4"
    }
}                  

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。 エンジニアの大変な作業を肩代わり ・自動構築 ・自動監視 ・構成可視化 クラウド基盤に関わる作業を以上のように効率化します。 SRE/DevOpsエンジニアが行う大変な作業を肩代わりします。 高品質な汎用クラウド基盤の実現 ・クラウド基盤構築/クラウド移行 ・クラウドの保守運用・コスト最適化 など幅広い利用シーンを想定しています。IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。 興味を持たれた方には、無料で資料を提供しております。 お気軽にご相談ください。

7. お問合せ

株式会社Definerでは、 ・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。 ・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。 ・少ないエンジニアで事業が成長する仕組みづくりの実現。 ・エンジニアが喜ぶ、採用しやすい環境づくりの実現。 ・高速なアジャイル開発環境の実現。 ・自社プロダクトとしてPrismScalerを展開。 上記事業内容を進行しております。 ※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。 ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。 ・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。 ・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。 ・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。