Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

AWS Aurora Serverless の DataAPI を使ってアクセスしてみる

はじめに

このドキュメントは AWS RDS で作成した Serverless RDB に

Data API を使用してアクセスするための環境構築と確認手順です。

この手順書では PostgreSQL 互換を使って環境構築します。

今回の環境

VPC(Virtual Private Cloud)の中に、検証対象となる RDB と作業用のEC2 を用意します。クライアントPCからはEC2を経由してRDSにアクセスするようにします。

環境構築編(仮想ハード)

VPCとセキュリティグループ作成

VPC コンソールでVPC を作成します。また EC2 用と RDB 用のセキュリティグループも作成します。

VPCの設定とタグ

  • 名前タグ
    • 「任意の文字列」
  • IPv4 CIDR ブロック
    • 「任意の範囲 (例:172.31.0.0/16)」
  • IPv6 CIDR ブロック
    • 「IPv6 CIDR ブロックなし」
  • テナンシー
    • 「デフォルト」
  • タグ
    • 設定は任意

セキュリティグループの作成

VPCコンソールメニューの「セキュリティグループ」からセキュリティグループを作成します。

作業EC2用セキュリティグループ作成

  • 基本的な詳細
    • セキュリティグループ名
      • 「EC2 用とわかる文字列」
    • 説明
      • 「任意の文字列」
    • VPC
      • 「前項で作成したVPC」
  • インバウンドルール
    • タイプ
      • 「SSH」
    • ソース
      • 「カスタム (0.0.0.0)」
  • アウトバウンドルール
    • 変更なし

RDB用セキュリティグループ作成

  • 基本的な詳細
    • セキュリティグループ名
      • 「RDB 用とわかる文字列」
    • 説明
      • 「任意の文字列」
    • VPC
      • 「前項で作成したVPC」
  • インバウンドルール
    • タイプ
      • 「PostgresSQL」
    • ソース
      • 「カスタム (EC2用のセキュリティグループを選択)」
  • アウトバウンドルール
    • 変更なし

EC2作成

RDBを操作する作業用のEC2を、EC2 コンソールで作成します。

ステップ1:Amazon マシンイメージ (AMI)

Amazon Linux 2 AMI (HVM), SSD Volume Type を選択し「次のステップ」ボタンをクリックします。

ステップ2:インスタンスタイプの選択

無料利用枠の対象である t2.micro を選択し「次のステップ」ボタンをクリックします。

ステップ3:インスタンスの詳細の設定

デフォルトのまま「次のステップ」ボタンをクリックします。

ステップ4:ストレージの追加

デフォルトのまま「次のステップ」ボタンをクリックします。

ステップ5:タグの追加

デフォルトのまま「次のステップ」ボタンをクリックします。

ステップ6:セキュリティグループの設定

下記を設定し、「次のステップ」ボタンをクリックします。

  • セキュリティグループの割り当て
    • 「既存のセキュリティグループを選択する」
  • セキュリティグループID

ステップ7:インスタンス作成の確認

設定内容を確認したうえで、「起動」ボタンをクリックします。

既存のキーペアを選択するか、新しいキーペアを作成します。

新しいキーペアの作成を選択し、キーペア名に任意の文字列を入力します。「キーペアのダウンロード」ボタンが有効になったらクリックし、*.pem ファイルをダウンロードしておきます。

RDB作成

Aurora Serverlessの作成

Amazon Aurora ユーザガイドの、Amazon Aurora Serverless を使用するを参考に Amazon Aurora Serverless DBクラスター を、RDSコンソールで作成します。

データベースの作成とエンジンのオプション

  • データベースの作成方法
    • 「標準作成」
  • エンジンのオプション
    • エンジンのタイプ
      • 「Amazon Aurora」
    • エディション
      • 「PostgreSQL との互換性を持つ Amazon Aurora」
    • キャパシティータイプ
      • 「サーバーレス」
    • バージョン
      • 「Aurora PostgreSQL (Compatible with PostgreSQL 10.12)」

設定とキャパシティの設定

  • DB クラスター識別子
    • 「任意の文字列」
  • 認証情報の設定
    • マスターユーザー名
      • 「任意の文字列」
    • マスターパスワード
      • 「自動生成」 or 「任意の文字列」
  • キャパシティの設定
    • 最小 Aurora キャパシティーユニット
      • 「2 (4GB RAM)」
    • 最大 Aurora キャパシティーユニット
      • 「4 (4GB RAM)」

接続

Virtual Private Cloud(VPC)

VPCとセキュリティグループ作成で作成したVPC」

追加の接続設定
サブネットグループ

「デフォルト」(そのまま)

VPC セキュリティグループ

「既存の選択」を選択し

RDB用セキュリティグループ作成で作成したセキュリティグループ」を選択後、default を削除します。(図を参照)

Data API

必ずチェックを入れる

すべての設定が完了したら「データベースの作成」ボタンをクリックします。

環境構築編(ソフトウェア)

EC2側セットアップ

クライアントPCから直接ターミナルでSSH、もしくはブラウザベースのSSHコンソール(EC2 Instance Connect)を紹介します。

クライアントPCからターミナルでSSH

既存のキーペアを選択するか、新しいキーペアを作成します。で保存したキーペアを使用してssh接続します。

EC2 Instance Connect でSSH

AWS EC2 コンソールからEC2作成で作成したインスタンスを選択し、「接続」ボタンをクリックして[インスタンスに接続]からEC2 Instance ConectでSSH接続します。
下図はからSSH接続する参考資料です。


AWS コマンドリージョン設定

CLI AWS のリージョンを設定しておきます。

アクセスキーの取得

Identity and Access Management(IAM)コンソールでアクセスキーを作成して控えます。AWSコンソール画面右上のユーザ名をクリックして表示されるメニューから「マイセキュリティ資格情報」をクリックします。
AWS IAM 認証情報 内の「アクセスキーの作成」ボタンをクリックします。

表示された アクセスキーIDシークレットアクセスキー控えておきます。

接続しているSSHターミナルで、以下のコマンドを入力します。

aws configure

4つの入力項目が表示されるので適切に入力します。

AWS Access Key ID [None]: 「アクセスキーID」
AWS Secret Access Key [None]: 「シークレットアクセスキー」
Default region name [None]: AWSコンソール右上のリージョンメニューをクリックして表示される「現在のリージョン」
Default output format [None]: json

psql インストール

yumコマンドを使って、PostgreSQL client programsをインストールします。

sudo yum install postgresql

Is this ok [y/d/N] では、y を入力します。

Is this ok [y/d/N]: y

正常にインストールされたかどうかを確認します。

psql --version

バージョン情報が表示されれば成功です。

DB側セットアップ

psql インストールでインストールしたコマンドを使用して、PostgreSQL にユーザ/データベース/テーブルを作成します。

ログインするためにで作成したAuroraServerless のホスト名を確認します。

RDS コンソールからインスタンスを選択し、[エンドポイント]をコピーします。

コンソールログイン

エンドポイントが確認できたら、コンソールからログインします。

psql -h [エンドポイント] -U [マスターユーザ名]

この後にパスワードを聞かれるので、適切に入力します。

ユーザ作成

PostgreSQL にログインした状態で作業用のユーザを作成します。

CREATE USER [ユーザ名] WITH password '[パスワード]';

権限追加

新しく追加したユーザに権限を追加します。

alter role [新しく作ったユーザ] CREATEDB;
GRANT RDS_SUPERUSER to [新しく作ったユーザ];

ユーザ切り替え

新しく作ったユーザにログインしなおします。

\q - [新しく作ったユーザ];

データベース作成

作業用の新しいデータベースを作成します。

CREATE DATABASE [新しいDB名];

データベース切り替え

新しく作成したデータベースに切り替えます。

\q [新しく作ったDB];

テーブル作成

作業用に新しいテーブルを作成します。

CREATE TABLE test01
(
  id bigserial,      -- 自動発番ID
  name varchar(10),  -- 名前
  addr varchar(10),  -- 住所?
  updt varchar(25)   -- 更新日
);

動作確認

正しくテーブルが作成できたかSQLで確認します。

データ挿入

SQL

INSERT INTO test01 (name, addr, updt) VALUES ('yuka', 'nakano', '202011071425');

データ取得

SQL

SELECT * FROM test01;

結果

 id | name |  addr  |     updt
----+------+--------+--------------
  1 | yuka | nakano | 202011071425
(1 row)

DataAPI アクセス確認

今回は CLI AWS コマンドを利用して DataAPI の動作確認をします。

シークレット作成

[AWS Secrets Manager] で、RDSデータベースの認証情報のシークレットを作成します。

[AWS Secrets Manager]コンソールで「新しいシークレットを保存する」ボタンをクリックします。

シークレットの設定1

  • シークレットの種類を選択
    • [RDSデータベースの認証情報]
  • ユーザー名
  • パスワード
  • このシークレットがアクセスするRDSデータベースを選択してください

「次」ボタンをクリックします。

シークレットの設定2

  • シークレットの名前
    • 「任意の文字列」

「次」ボタンをクリックします。

シークレットの設定3

デフォルトのまま「次」ボタンをクリックします。

シークレットの設定4

確認画面で内容を確認したうえで「保存」ボタンをクリックします。

アプリケーションでシークレットを取得するサンプルコードが記載されているので、プログラミングする場合にはコピーしておくと便利です。

シークレットを控える

作成されたシークレット一覧が表示されるので、今回作成したシークレットの名前をクリックして詳細を表示します。

シークレットのARNを控えておきます。

RDB ARN 取得

[Amazon RDS]コンソールで Aurora Serverlessの作成 で作成したRDBを選択します。

画面中部、「設定」タブをクリックし、このデータベースの ARN を控えます。

動作確認

SSH コンソールで下記のコマンドを入力します。SQL が発行され、結果が JSON 形式で表示されます。

コマンド

aws rds-data execute-statement \
   --resource-arn "[RDB ARN]" \
   --secret-arn "[AWS Secrets Manager で作成したシークレットのARN]" \
   --sql "SELECT * FROM test01"\
   --database "[作成したデータベース名]"

結果

{
    "records": [
        [
            {
                "longValue": 1
            },
            {
                "stringValue": "yuka"
            },
            {
                "stringValue": "nakano"
            },
            {
                "stringValue": "202011071425"
            }
        ]
    ],
    "numberOfRecordsUpdated": 0
}

ここまでで、DataAPI によるSQL実行の確認ができました。あとは好きなプログラミング言語でコーディングしていくことになります。

最後に

CLI で作業できるようになりたい。

Kakimoty_Field
高卒で十数年間プログラマしてます。お仕事の言語はC#。 企業勤めで、SESの業務が主です。 趣味で arduino , node.js , IBM Cloudを触っています。 日常でたまに遭遇する「あれ、これどうやってやるんだっけ?」をメモとして残したいです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away