

# Amazon RDS のスタート方法
<a name="CHAP_GettingStarted"></a>

以下の例では、Amazon Relational Database Service (Amazon RDS) を使用して DB インスタンスを作成および接続する方法について説明します。Db2、MariaDB、MySQL、Microsoft SQL Server、Oracle、または PostgreSQL を使用する DB インスタンスを作成できます。

**重要**  
DB インスタンスを作成したり、DB インスタンスに接続したりする前に、必ず [Amazon RDS 環境のセットアップ](CHAP_SettingUp.md) のタスクを完了してください。

DB インスタンスの作成と DB インスタンスでのデータベースへの接続は、DB エンジンごとに若干異なります。DB インスタンスの作成と接続に関する詳細を確認するために使用する DB エンジンを次のいずれかから 1 つ選択します。DB インスタンスを作成して接続した後、DB インスタンスを削除する手順も示されています。

**Topics**
+ [MariaDB DB インスタンスの作成と接続](CHAP_GettingStarted.CreatingConnecting.MariaDB.md)
+ [Microsoft SQL Server DB インスタンスを作成して接続する](CHAP_GettingStarted.CreatingConnecting.SQLServer.md)
+ [MySQL DB インスタンスの作成と接続](CHAP_GettingStarted.CreatingConnecting.MySQL.md)
+ [Oracle DB インスタンスを作成して接続する](CHAP_GettingStarted.CreatingConnecting.Oracle.md)
+ [PostgreSQL DB インスタンスを作成して接続する](CHAP_GettingStarted.CreatingConnecting.PostgreSQL.md)
+ [チュートリアル: ウェブサーバーと Amazon RDS DB インスタンスを作成する](TUT_WebAppWithRDS.md)
+ [チュートリアル: Lambda 関数を使用して Amazon RDS にアクセスする](rds-lambda-tutorial.md)

# MariaDB DB インスタンスの作成と接続
<a name="CHAP_GettingStarted.CreatingConnecting.MariaDB"></a>

このチュートリアルでは、EC2 インスタンスと RDS for MariaDB DB インスタンスを作成します。このチュートリアルでは、標準の MySQL クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

**重要**  
AWS アカウント を作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。

![\[EC2 インスタンスと MariaDB DB インスタンス。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-mariadb.png)


このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

1. AWS マネジメントコンソール を使用する ‐「[EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.MariaDB.EC2)」と「[MariaDB DB インスタンスを作成する](#CHAP_GettingStarted.Creating.MariaDB)」 

1. CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、MariaDB インスタンスを作成する](#CHAP_GettingStarted.CFN.MariaDB) 

最初の方法では、**[簡単作成]** を使用して、AWS マネジメントコンソール でプライベート MariaDB DB インスタンスを作成します。ここでは、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[**Easy create (簡易作成)**] では、他の設定オプションのデフォルト設定を使用します。

代わりに **[標準作成]** を使用する場合は、DB インスタンスの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB インスタンスを作成するには、**[標準作成]** を使用する必要があります。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

**Topics**
+ [前提条件](#CHAP_GettingStarted.Prerequisites.MariaDB)
+ [EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.MariaDB.EC2)
+ [MariaDB DB インスタンスを作成する](#CHAP_GettingStarted.Creating.MariaDB)
+ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、MariaDB インスタンスを作成する](#CHAP_GettingStarted.CFN.MariaDB)
+ [MariaDB DB インスタンスに接続する](#CHAP_GettingStarted.Connecting.MariaDB)
+ [EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.Deleting.MariaDB)
+ [(オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.DeletingCFN.MariaDB)
+ [(オプション) DB インスタンスを Lambda 関数に接続する](#CHAP_GettingStarted.ComputeConnect.MariaDB)

## 前提条件
<a name="CHAP_GettingStarted.Prerequisites.MariaDB"></a>

開始する前に、以下のセクションのステップを完了してください。
+ [AWS アカウントへのサインアップ](CHAP_SettingUp.md#sign-up-for-aws)
+ [管理アクセスを持つユーザーを作成する](CHAP_SettingUp.md#create-an-admin)

## EC2 インスタンスの作成
<a name="CHAP_GettingStarted.Creating.MariaDB.EC2"></a>

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

**EC2 インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. AWS マネジメントコンソール の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

1. 次の図に示すように、**[EC2 ダッシュボード]** を選択し、次に **[インスタンスの起動]** を選択します。  
![\[EC2 ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **[インスタンスを起動]** ページが開きます。

1. **[インスタンスを起動]** ページで次の設定を選択します。

   1. **[Name and tags]** (名前とタグ) の、**[Name]** (名前) で、**ec2-database-connect** と入力します。

   1. **[アプリケーションおよび OS イメージ (Amazon マシンイメージ)]** で、**[Amazon Linux]** を選択し、**[Amazon Linux 2023 AMI]** を選択します。他の選択肢は、デフォルトの選択のままにします。  
![\[Amazon Machine Image を選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. **[Instance type]** (インスタンスタイプ) で **[t2.micro]** を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) で、**[Key pair name]** (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、**[Create new key pair]** (新しい key pair を作成する) を選択し、**[Create key pair]** (キーペアを作成する) ウィンドウを使用して作成します。

      新しいキーペアの作成については、「*Amazon EC2 ユーザーガイド*」の「[キーペアの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)」を参照してください。

   1. **ネットワーク設定**の **[SSH トラフィックを許可]** で、EC2 インスタンスへの SSH 接続のソースを選択します。

      表示された IP アドレスが SSH 接続に適している場合は、**[My IP]** (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、[https://checkip.amazonaws.com](https://checkip.amazonaws.com/) のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

       多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、**[ネットワーク設定]** セクションの例を示しています。  
![\[EC2 インスタンスのネットワーク設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 残りのセクションをデフォルト値のままにします。

   1. **[概要]** パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、**[インスタンスの起動]** を選択します。

1. **[起動ステータス]** ページで、新しい EC2 インスタンスの ID (例: `i-1234567890abcdef0`) をメモします。  
![\[起動ステータスページの EC2 インスタンス ID。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

1. **[詳細]** タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

   1. **[インスタンスの概要]** で、**[パブリック IPv4 DNS]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. **[インスタンスの詳細]** で、**[キーペア名]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 キーペア名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. EC2 インスタンスの **[インスタンス状態]** が **[実行中]** になるまで待ってから、続行します。

## MariaDB DB インスタンスを作成する
<a name="CHAP_GettingStarted.Creating.MariaDB"></a>

Amazon RDS の基本的な構成要素は DB インスタンスです。これは、MariaDB データベースを実行する環境です。

この例では、**[簡易作成]** を使用して、db.t4g.micro インスタンスクラスの MariaDB データベースエンジンを実行する DB インスタンスを作成します。

**簡易作成を有効にして MariaDB DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. Amazon RDS コンソールの右上で、DB インスタンスを作成する AWS リージョン を選択します。

1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

1. **[データベースの作成]** を選択し、**[簡易作成]** を選択します。  
![\[簡易作成オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. [**設定**] で、[**MariaDB**] を選択します。

1. **[DB インスタンスサイズ]** で、**[無料利用枠]** または **[サンドボックス]** を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。

1. **[DB instance identifier]** (DB インスタンス識別子) に**database-test1** と入力します。

1. **[マスターユーザー名]** に、マスターユーザーの名前を入力するか、デフォルト名のままにします。

   [**データベースの作成**] ページは、次のイメージのようになります。無料プランアカウントの場合、**[無料利用枠]** が表示されます。有料プランアカウントの場合、**[サンドボックス]** が表示されます。  
![\[データベースの作成ページ。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-mariadb.png)

1. DB インスタンス用に自動生成されたマスターパスワードを使用するには、**[パスワードの自動生成]** を選択します。

   マスターパスワードを入力するには、**[パスワードの自動生成]** チェックボックスをオフにして、**[マスターパスワード]** と **[パスワードの確認]** に同じパスワードを入力します。

1. 以前に作成した EC2 インスタンスとの接続をセットアップするには、**[EC2 接続のセットアップ - *オプション*]** を展開します。

   **[EC2 コンピューティングリソースに接続]** を選択します。以前に作成した EC2 インスタンスを選択します。  
![\[[EC2 接続のセットアップ] オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. **[簡易作成のデフォルト設定を表示]** を展開します。  
![\[簡易作成のデフォルト設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-view-default-maria.png)

   [**Easy Create (簡易作成)**] で使用されるデフォルト設定を調べることができます。**[データベース作成後に編集可能]** 列には、データベース作成後に変更できるオプションが表示されます。
   + その列の設定に **[いいえ]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成できます。
   + その列の設定に **[はい]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。

1. **[データベースの作成]** を選択します。

   DB インスタンスのマスターユーザー名およびパスワードを表示するには、[**認証情報の詳細の表示**] を選択します。

   表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。
**重要**  
マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。  
DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

1. **[データベース]** リストで、新しい MariaDB DB インスタンスの名前を選択し、詳細を表示します。

   DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは **[作成中]** のままです。  
![\[DB インスタンスの詳細。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/MariaDB-Launch06.png)

   ステータスが **[Available]** (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。

## (オプション) CloudFormation を使用して VPC、EC2 インスタンス、MariaDB インスタンスを作成する
<a name="CHAP_GettingStarted.CFN.MariaDB"></a>

コンソールを使用して VPC、EC2 インスタンス、MariaDB DB インスタンスを作成する代わりに、CloudFormation を使用して Infrastructure as Code として取り扱うことで、AWS リソースをプロビジョンできます。AWS リソースをより小さく管理しやすい単位に整理するには、CloudFormation のネストされたスタック機能を使用できます。詳細については、「[CloudFormation コンソールでのスタックの作成](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」と「[ネストされたスタックの操作](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)」を参照してください。

**重要**  
CloudFormation は無料ですが、CloudFormation が作成するリソースは実動のものです。これらのリソースを終了するまで、標準使用料が発生します。詳細については、「[RDS for MariaDB の料金](https://aws.amazon.com//rds/mariadb/pricing)」を参照してください。
+ CloudFormation テンプレートをダウンロードする
+ CloudFormation を使用してリソースを設定する

### CloudFormation テンプレートをダウンロードする
<a name="CHAP_GettingStarted.CFN.MariaDB.Step1"></a>

CloudFormation テンプレートは、スタックに作成するリソースに関する設定情報が含まれる JSON または YAML のテキストファイルです。このテンプレートは、RDS インスタンスとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク、[MariaDB CloudFormation template](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-mariadb-main.template.yaml) を開きます。

この Github ページで、**[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

### CloudFormation を使用してリソースを設定する
<a name="CHAP_GettingStarted.CFN.MariabDB.Step2"></a>

**注記**  
このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「[Amazon EC2 キーペアおよび Linux インスタンス](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)」を参照してください。

CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. **[Create Stack]** (スタックの作成) を選択します。

1. [テンプレートの指定] セクションで、**[コンピュータからテンプレートファイルをアップロード]** を選択し、**[次へ]** をクリックします。

1. **[スタックの詳細を指定]** ページで、次のパラメータを設定します。

   1. **[スタック名]** は **[MariaDBTestStack]** に設定します。

   1. **[パラメータ]** で、3 つのアベイラビリティーゾーンを選択して、**[アベイラビリティーゾーン]** を設定します。

   1. **[Linux 踏み台ホスト設定]** で、**[キー名]** に EC2 インスタンスにログインするキーペアを選択します。

   1. **[Linux 踏み台ホスト設定]** で、**[許可された IP 範囲]** を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、[https://checkip.amazonaws.com](https://checkip.amazonaws.com) のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

   1. **[Database General configuration]** で、**[データベースインスタンスクラス]** を **[db.t3.micro]** に設定します。

   1. **[データベース名]** を **database-test1** に設定します。

   1. **[データベースマスターユーザー名]** には、PDB のマスターユーザー名を入力します。

   1. このチュートリアルでは、**[Secrets Manager で DB マスターユーザーパスワードを管理]** を `false` に設定します。

   1. **[データベースパスワード]** には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

   1. **[Database Storage configuration]** で、**[Database storage type]** を **[gp2]** に設定します。

   1. **[Database Monitoring configuration]** で、**[Enable RDS Performance Insights]** を false に設定します。

   1. その他の設定はすべてデフォルトの値のままにします。**[次へ]** をクリックして先に進みます。

1. **[スタックの確認]** ページで、データベースと Linux 踏み台ホストのオプションを確認した後、**[送信]** をクリックします。

スタックの作成プロセスが完了したら、**BastionStack と **RDSNS という名前のスタックを確認して、データベースへの接続に必要な情報をメモします。詳細については、「[AWS マネジメントコンソール での CloudFormation スタックデータとリソースの表示](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)」を参照してください。

## MariaDB DB インスタンスに接続する
<a name="CHAP_GettingStarted.Connecting.MariaDB"></a>

 によって DB インスタンスがプロビジョニングされると、標準の SQL クライアントアプリケーションを使用してインスタンスに接続できます。この例では、mysql コマンドラインツールを使用して Maria DB インスタンス上のデータベースに接続します。

**MariaDB DB インスタンスに接続する**

1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

   1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

   1. Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。

   1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

   1. MariaDB DB インスタンスの名前を選択して詳細を表示します。

   1. [**接続とセキュリティ**] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。  
![\[MariaDB DB インスタンスに接続する\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/MariaDBConnect1.png)

1. 「*Amazon EC2 ユーザーガイド*」の「[Linux インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

   SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例えば、`ec2-database-connect-key-pair.pem` が Linux の `/dir1` に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が `ec2-12-345-678-90.compute-1.amazonaws.com` であるとします。SSH コマンドは次のようになります。

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。これを行うには、次のコマンドを使用します。
**注記**  
`-y` オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

   ```
   sudo dnf update -y
   ```

1. MariaDB から mysql コマンドラインクライアントをインストールします。

   MariaDB の コマンドラインクライアントを Amazon Linux 2023 にインストールするには、次のコマンドを実行します。

   ```
   sudo dnf install mariadb105
   ```

1. DB インスタンスに接続します。例えば、次のコマンドを入力します。このアクションにより、MySQL クライアントを使用して MariaDB DB インスタンスに接続できます。

   `endpoint` の DB インスタンスの DNS 名 (エンドポイント) を、`admin` で使用したマスターユーザー名に置き換えます。パスワードの入力を求められたときに使用したマスターパスワードを入力します。

   ```
   mysql -h endpoint -P 3306 -u admin -p
   ```

   ユーザーのパスワードを入力すると、次のような出力が表示されます。

   ```
   Welcome to the MariaDB monitor.  Commands end with ; or \g.
   Your MariaDB connection id is 156
   Server version: 10.6.10-MariaDB-log managed by https://aws.amazon.com/rds/
    
   Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
     
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
     
   MariaDB [(none)]>
   ```

   MariaDB DB インスタンスへの接続の詳細については、「[MariaDB DB インスタンスへの接続](USER_ConnectToMariaDBInstance.md)」を参照してください。DB インスタンスに接続できない場合は、「[Amazon RDS DB インスタンスに接続できない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)」を参照してください。

   セキュリティ上の理由で、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼されている場合に限り、暗号化されていない MySQL 接続を使用します。暗号化された接続の使用については、「[MySQL コマンドラインクライアントからの SSL/TLS による Amazon RDS 上の MariaDB DB インスタンスへの接続 (暗号化）](USER_ConnectToMariaDBInstanceSSL.CLI.md)」を参照してください。

1. SQL コマンドを実行する。

   例えば、次の SQL コマンドは、現在の日付と時刻を表示します。

   ```
   SELECT CURRENT_TIMESTAMP;
   ```

## EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.Deleting.MariaDB"></a>

作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

**EC2 インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. EC2 インスタンスを選択し、**[インスタンスの状態]、[インスタンスの終了]** の順に選択します。

1. 確認を求めるメッセージが表示されたら、[**Terminate (終了)**] を選択してください。

EC2 インスタンスの削除の詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスの終了](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)」を参照してください。

**最終的な DB スナップショットを作成せずに DB インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 削除する DB インスタンスを選択します。

1. [**アクション**] で、[**削除**] を選択します。

1. **[最終スナップショットを作成]** と **[自動バックアップの保持]** をクリアします。

1. 確認を完了し、**[削除]** を選択します。

## (オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.DeletingCFN.MariaDB"></a>

CloudFormation を使用してリソースを作成した場合は、サンプル EC2 インスタンスと DB インスタンスに接続して確認を済ませた後、それ以上料金が発生しないように、CloudFormation スタックを削除します。

**CloudFormation リソースを削除するには**

1. CloudFormation コンソールを開きます。

1. CloudFormation コンソールの **[スタック]** ページで、ルートスタック (VPCStack、BastionStack、または RDSNS という名前が付いていないスタック) を選択します。

1. **[削除]** を選択します。

1. 確認を求めるメッセージが表示されたら、**[削除]** を選択します。

CloudFormation でのスタックの削除方法の詳細については、「**AWS CloudFormation ユーザーガイド」の「[CloudFormation コンソールでのスタックの削除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)」を参照してください。

## (オプション) DB インスタンスを Lambda 関数に接続する
<a name="CHAP_GettingStarted.ComputeConnect.MariaDB"></a>

RDS for MariaDB DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「[Lambda 関数と DB インスタンスを自動的に接続する](lambda-rds-connect.md)」を参照してください。

# Microsoft SQL Server DB インスタンスを作成して接続する
<a name="CHAP_GettingStarted.CreatingConnecting.SQLServer"></a>

このチュートリアルでは、EC2 インスタンスと RDS for MySQL DB インスタンスを作成します。このチュートリアルでは、Microsoft SQL Server Management Studio クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

**重要**  
AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。

![\[EC2 インスタンスと Microsoft SQL Server DB インスタンス。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-sqlserver.png)


このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

1. AWS マネジメントコンソール を使用する ‐「[SQL Server DB インスタンスを作成する](#CHAP_GettingStarted.Creating.SQLServer)」と「[EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.SQLServer.EC2)」

1. CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ [(オプション) CloudFormationを使用して VPC、EC2 インスタンス、SQL Server インスタンスを作成する](#CHAP_GettingStarted.CFN.SQLServer) 

最初の方法では、**[簡単作成]** を使用して、AWS マネジメントコンソール でプライベート SQL Server DB インスタンスを作成します。ここでは、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[**Easy create (簡易作成)**] では、他の設定オプションのデフォルト設定を使用します。

代わりに **[標準作成]** を使用する場合は、DB インスタンスの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB インスタンスを作成するには、**[標準作成]** を使用する必要があります。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

**Topics**
+ [前提条件](#CHAP_GettingStarted.Prerequisites.SQLServer)
+ [EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.SQLServer.EC2)
+ [SQL Server DB インスタンスを作成する](#CHAP_GettingStarted.Creating.SQLServer)
+ [(オプション) CloudFormationを使用して VPC、EC2 インスタンス、SQL Server インスタンスを作成する](#CHAP_GettingStarted.CFN.SQLServer)
+ [SQL Server DB インスタンスに接続する](#CHAP_GettingStarted.Connecting.SQLServer)
+ [サンプル SQL Server DB インスタンスを探索する](#CHAP_GettingStarted.SQLServer.Exploring)
+ [EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.Deleting.SQLServer)
+ [(オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.DeletingCFN.SQLServer)
+ [(オプション) DB インスタンスを Lambda 関数に接続する](#CHAP_GettingStarted.ComputeConnect.SQLServer)

## 前提条件
<a name="CHAP_GettingStarted.Prerequisites.SQLServer"></a>

開始する前に、以下のセクションのステップを完了してください。
+ [AWS アカウントへのサインアップ](CHAP_SettingUp.md#sign-up-for-aws)
+ [管理アクセスを持つユーザーを作成する](CHAP_SettingUp.md#create-an-admin)

## EC2 インスタンスの作成
<a name="CHAP_GettingStarted.Creating.SQLServer.EC2"></a>

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

**EC2 インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. AWS マネジメントコンソール の右上で、以前にデータベースに使用した AWS リージョン を選択します。

1. 次の図に示すように、**[EC2 ダッシュボード]** を選択し、次に **[インスタンスの起動]** を選択します。  
![\[EC2 ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **[インスタンスを起動]** ページが開きます。

1. **[インスタンスを起動]** ページで次の設定を選択します。

   1. **[Name and tags]** (名前とタグ) の、**[Name]** (名前) で、**ec2-database-connect** と入力します。

   1. **[アプリケーションと OS イメージ (Amazon マシンイメージ)]** で **[Windows]** を選択し、次に **[Microsoft Windows Server 2022 Base]** を選択します。他の選択肢は、デフォルトの選択のままにします。  
![\[Amazon Machine Image を選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial_ec2_sqlserver_create1.png)

   1. **[Instance type]** (インスタンスタイプ) で **[t2.micro]** を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) で、**[Key pair name]** (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、**[Create new key pair]** (新しい key pair を作成する) を選択し、**[Create key pair]** (キーペアを作成する) ウィンドウを使用して作成します。

      キーペアの作成については、*Windows インスタンス用 Amazon EC2 ユーザーガイド*の「[キーペアの作成](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html)」を参照してください。

   1. **ネットワーク設定**の **[ファイアウォール (セキュリティグループ)]** で、[**接続元の RDP トラフィックを許可**] を選択して EC2 インスタンスに接続します。

      表示された IP アドレスが RDP 接続に適している場合は、**[マイ IP]** を選択できます。それ以外の場合は、RDP を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、[https://checkip.amazonaws.com](https://checkip.amazonaws.com/) のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

       多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
**警告**  
RDP アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが RDP を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、RDP を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、**[ネットワーク設定]** セクションの例を示しています。  
![\[EC2 インスタンスのネットワーク設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettingsRDSMS.png)

   1. 残りのセクションをデフォルト値のままにします。

   1. **[概要]** パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、**[インスタンスの起動]** を選択します。

1. **[起動ステータス]** ページで、新しい EC2 インスタンスの ID (例: `i-1234567890abcdef0`) をメモします。  
![\[[起動ステータス] ページの EC2 インスタンス ID。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開きます。

1. EC2 インスタンスの **[インスタンス状態]** が **[実行中]** になるまで待ってから、続行します。

## SQL Server DB インスタンスを作成する
<a name="CHAP_GettingStarted.Creating.SQLServer"></a>

Amazon RDS の基本的な構成要素は DB インスタンスです。これは、SQL Server データベースを実行する環境です。

この例では、**[簡単作成]** を使用して、db.t2.micro DB インスタンスクラスで SQL Server データベースエンジンを実行する DB インスタンスを作成します。

**[Easy create (簡易作成)] を使用して Microsoft SQL Server DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. Amazon RDS コンソールの右上で、DB インスタンスを作成する AWS リージョン を選択します。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. [**Create database (データベースの作成)**] を選択し、[**Easy create (簡易作成)**] が選択されていることを確認します。  
![\[簡易作成オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. [**設定**] で、[**Microsoft SQL Server**] を選択します。

1. **[エディション]** には、**[SQL Server Express Edition]** を選択します。

1. [**DB インスタンスサイズ**] で、[**無料利用枠**] を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。

1. **[DB instance identifier]** (DB インスタンス識別子) に**database-test1** と入力します。

   [**データベースの作成**] ページは、次のイメージのようになります。無料プランアカウントの場合、**[無料利用枠]** が表示されます。有料プランアカウントの場合、**[サンドボックス]** が表示されます。  
![\[エンジンのオプション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-sqlserver.png)

1. **[マスターユーザー名]** に、マスターユーザーの名前を入力するか、デフォルト名のままにします。

1. 以前に作成した EC2 インスタンスとの接続をセットアップするには、**[EC2 接続のセットアップ - *オプション*]** を開きます。

   **[EC2 コンピューティングリソースに接続]** を選択します。以前に作成した EC2 インスタンスを選択します。  
![\[[EC2 接続のセットアップ] オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. DB インスタンス用に自動生成されたマスターパスワードを使用するには、[**Auto generate a password (パスワードの自動生成)**] を選択します。

   マスターパスワードを入力するには、[**Auto generate a password (パスワードの自動生成)**] チェックボックスをオフにして、[**Master password (マスターパスワード)**] と [**Confirm password (パスワードの確認)**] に同じパスワードを入力します。

1. **[簡易作成のデフォルト設定を表示]** を開きます。  
![\[簡易作成のデフォルト設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-sqlserver-confirm.png)

   [**Easy Create (簡易作成)**] で使用されるデフォルト設定を調べることができます。**[データベース作成後に編集可能]** 列には、データベース作成後に変更できるオプションが表示されます。
   + その列の設定に **[いいえ]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成できます。
   + その列の設定に **[はい]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。

1. **[データベースの作成]** を選択します。

   DB インスタンスのマスターユーザー名およびパスワードを表示するには、[**認証情報の詳細の表示**] を選択します。

   表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。
**重要**  
マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。  
DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

1. **[データベース]** リストで、新しい SQL Server DB インスタンスの名前を選択し、詳細を表示します。

   DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは **[作成中]** のままです。  
![\[DB インスタンスの詳細なスクリーンキャプチャ\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-sqlserver-launch.png)

   ステータスが **[Available]** (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。

## (オプション) CloudFormationを使用して VPC、EC2 インスタンス、SQL Server インスタンスを作成する
<a name="CHAP_GettingStarted.CFN.SQLServer"></a>

コンソールを使用して VPC、EC2 インスタンス、SQL Server インスタンスを作成する代わりに、CloudFormation を使用して Infrastructure as Code として取り扱うことで、AWS リソースをプロビジョンできます。AWS リソースをより小さく管理しやすい単位に整理するには、CloudFormation のネストされたスタック機能を使用できます。詳細については、「[CloudFormation コンソールでのスタックの作成](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」と「[ネストされたスタックの操作](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)」を参照してください。

**重要**  
CloudFormation には課金されません。ただし、CloudFormation が作成するリソースは本番稼働です。これらのリソースを終了するまで、標準使用料が発生します。詳細については、「[RDS for SQL Server の料金](https://aws.amazon.com//rds/sqlserver/pricing)」を参照してください。

CloudFormation コンソールを使用してリソースを作成するには、以下のステップを実行します。
+ CloudFormation テンプレートをダウンロードする
+ CloudFormation を使用してリソースを設定する

### CloudFormation テンプレートをダウンロードする
<a name="CHAP_GettingStarted.CFN.SQLServer.Step1"></a>

CloudFormation テンプレートは、スタックに作成するリソースに関する設定情報が含まれる JSON または YAML のテキストファイルです。このテンプレートは、RDS インスタンスとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク、[SQL Server CloudFormation template](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-sqlserver-main.template.yaml) を開きます。

この Github ページで、**[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

### CloudFormation を使用してリソースを設定する
<a name="CHAP_GettingStarted.CFN.SQLServer.Step2"></a>

**注記**  
このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「[Amazon EC2 キーペアおよび Linux インスタンス](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)」を参照してください。

CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. **[Create Stack]** (スタックの作成) を選択します。

1. [テンプレートの指定] セクションで、**[コンピュータからテンプレートファイルをアップロード]** を選択し、**[次へ]** をクリックします。

1. **[スタックの詳細を指定]** ページで、次のパラメータを設定します。

   1. **[スタック名]** は **[SQLServerTestStack]** に設定します。

   1. **[パラメータ]** で、3 つのアベイラビリティーゾーンを選択して、**[アベイラビリティーゾーン]** を設定します。

   1. **[Linux 踏み台ホスト設定]** で、**[キー名]** に EC2 インスタンスにログインするキーペアを選択します。

   1. **[Linux 踏み台ホスト設定]** で、**[許可された IP 範囲]** を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、[https://checkip.amazonaws.com](https://checkip.amazonaws.com) のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

   1. **[Database General configuration]** で、**[データベースインスタンスクラス]** を **[db.t3.micro]** に設定します。

   1. **[データベース名]** を **database-test1** に設定します。

   1. **[データベースマスターユーザー名]** には、PDB のマスターユーザー名を入力します。

   1. このチュートリアルでは、**[Secrets Manager で DB マスターユーザーパスワードを管理]** を `false` に設定します。

   1. **[データベースパスワード]** には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

   1. **[Database Storage configuration]** で、**[Database storage type]** を **[gp2]** に設定します。

   1. **[Database Monitoring configuration]** で、**[Enable RDS Performance Insights]** を false に設定します。

   1. その他の設定はすべてデフォルトの値のままにします。**[次へ]** をクリックして続行します。

1. **[スタックオプションの設定]** ページでは、すべてのデフォルトオプションをそのまま使用します。**[次へ]** をクリックして続行します。

1. **[スタックの確認]** ページで、データベースと Linux 踏み台ホストのオプションを確認した後、**[送信]** をクリックします。

スタックの作成プロセスが完了したら、**BastionStack と **RDSNS という名前のスタックを確認して、データベースへの接続に必要な情報をメモします。詳細については、「[AWS マネジメントコンソール での CloudFormation スタックデータとリソースの表示](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)」を参照してください。

## SQL Server DB インスタンスに接続する
<a name="CHAP_GettingStarted.Connecting.SQLServer"></a>

次の手順では、Microsoft SQL Server Management Studio (SSMS) を使用して、DB インスタンスに接続します。

**SSMS を使用して、RDS for SQL Server DB インスタンスに接続するには**

1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

   1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

   1. Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。

   1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

   1. SQL Server DB インスタンスの名前を選択して詳細を表示します。

   1. [**接続**] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。  
![\[Microsoft SQL Server DB インスタンスに接続します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/SQLServerConnect2.png)

1. *Windows インスタンスに関する Amazon EC2 ユーザーガイド*の「[Microsoft Windows インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html#ec2-connect-to-instance-windows)」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

1. SQL Server Management Studio (SSMS) クライアントをインストールします。

   この SSMS のスタンドアロンバージョンを EC2 インスタンスにダウンロードするには、Microsoft ドキュメントの 「[Download SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms)」を参照してください。

   1. スタートメニューを使用して、Internet Explorer を開きます。

   1. Internet Explorer を使用して、SSMS のスタンドアロンバージョンをダウンロードしてインストールします。サイトが信頼されていないことを示すメッセージが表示されたら、そのサイトを信頼済みサイトのリストに追加します。

1. SQL Server Management Studio (SSMS) を起動します。

   [**サーバーに接続**] ダイアログボックスが表示されます。

1. サンプルの DB インスタンスに以下の情報を入力します。

   1. [**サーバーの種類**] で、[**データベース エンジン**] を選択します。

   1. [**サーバー名**] に、DNS 名、カンマ、ポート番号 (デフォルトポートは 1433) の順に入力します。サーバー名は以下の例のようになります。

      ```
      database-test1.0123456789012.us-west-2.rds.amazonaws.com,1433
      ```

   1. [**認証**] で、[**SQL Server 認証**] を選択します。

   1. **[ログイン]** に、サンプル DB インスタンスを使用するために選択したユーザー名を入力します。これは、マスターユーザー名とも呼ばれます。

   1. [**パスワード**] に、先ほど選択した、サンプル DB インスタンスのパスワードを入力します。これは、マスターユーザーパスワードとも呼ばれます。

1. [**接続**] を選択します。

   しばらくすると、SSMS が DB インスタンスに接続されます。セキュリティのためには、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼されている場合に限り、暗号化されていない SQL Server 接続を使用します。暗号化された接続の使用については、「[Microsoft SQL Server DB インスタンスでの SSL の使用](SQLServer.Concepts.General.SSL.Using.md)」を参照してください

Microsoft SQL Server DB インスタンスへの接続の詳細については、[SQL Server DB インスタンスへの接続](USER_ConnectToMicrosoftSQLServerInstance.md) を参照してください。

接続の問題については、「[Amazon RDS DB インスタンスに接続できない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)」を参照してください。

## サンプル SQL Server DB インスタンスを探索する
<a name="CHAP_GettingStarted.SQLServer.Exploring"></a>

Microsoft SQL Server Management Studio (SSMS) を使用して、サンプル DB インスタンスを探索できます。

**SSMS を使用して DB インスタンスを試すには**

1. SQL Server DB インスタンスには、SQL Server の標準内蔵システムデータベース (master、model、msdb、tempdb) が含まれています。システムデータベースを閲覧するには、次を実行します。

   1. SSMS の [**ビュー**] メニューで、[**オブジェクト エクスプローラー**] を選択します。

   1. 図のように、DB インスタンスを展開し、[**Databases (データベース)**] を展開します。その後、以下のように [**System Databases (システムデータベース)**] を展開します。  
![\[システムデータベースを表示する Object Explorer\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/SQL-SSMS-SystemDBs.png)

   SQL Server DB インスタンスには、`rdsadmin` という名前のデータベースも含まれています。Amazon RDS では、このデータベースを使用して、データベースを管理するために使用するオブジェクトを保存します。`rdsadmin` データベースには、詳細なタスクを実行するために保存された手順も含まれます。

1. 独自のデータベース作成、および通常の DB インスタンスとデータベースに対するクエリの実行をスタートします。サンプルの DB インスタンスに対してテストクエリを実行するには、次を実行します。

   1. SSMS の **[ファイル]** メニューで **[新規]** をポイントし、**[クエリを現在の接続で実行]** を選択します。

   1. 次の SQL クエリを入力します。

      ```
      select @@VERSION
      ```

   1. クエリを実行します。SSMS は、Amazon RDS DB インスタンスの SQL Server のバージョンを返します。  
![\[SQL クエリウィンドウ\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/SQL-Connect-Query.png)

## EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.Deleting.SQLServer"></a>

作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

**EC2 インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. EC2 インスタンスを選択し、**[インスタンスの状態]、[インスタンスの終了]** の順に選択します。

1. 確認を求めるメッセージが表示されたら、[**Terminate (終了)**] を選択してください。

EC2 インスタンスの削除の詳細については、*Windows インスタンス用ユーザーガイド*の「[インスタンスの終了](https://docs.aws.amazon.com//AWSEC2/latest/WindowsGuide/terminating-instances.html)」を参照してください。

**最終的な DB スナップショットを作成せずに DB インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 削除する DB インスタンスを選択します。

1. [**アクション**] で、[**削除**] を選択します。

1. **[最終スナップショットを作成]** と **[自動バックアップの保持]** をクリアします。

1. 確認を完了し、**[削除]** を選択します。

## (オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.DeletingCFN.SQLServer"></a>

CloudFormation を使用してリソースを作成した場合は、サンプル EC2 インスタンスと DB インスタンスに接続して確認を済ませた後、それ以上料金が発生しないように、CloudFormation スタックを削除します。

**CloudFormation リソースを削除するには**

1. CloudFormation コンソールを開きます。

1. CloudFormation コンソールの **[スタック]** ページで、ルートスタック (VPCStack、BastionStack、または RDSNS という名前がついていないスタック) を選択します。

1. **[削除]** を選択します。

1. 確認を求めるメッセージが表示されたら、**[削除]** を選択します。

CloudFormation でのスタックの削除方法の詳細については、「**AWS CloudFormation ユーザーガイド」の「[CloudFormation コンソールでのスタックの削除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)」を参照してください。

## (オプション) DB インスタンスを Lambda 関数に接続する
<a name="CHAP_GettingStarted.ComputeConnect.SQLServer"></a>

RDS for SQL Server DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「[Lambda 関数と DB インスタンスを自動的に接続する](lambda-rds-connect.md)」を参照してください。

# MySQL DB インスタンスの作成と接続
<a name="CHAP_GettingStarted.CreatingConnecting.MySQL"></a>

このチュートリアルでは、EC2 インスタンスと RDS for MySQL DB インスタンスを作成します。このチュートリアルでは、標準の MySQL クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

**重要**  
AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。

![\[EC2 インスタンスと MySQL DB インスタンス。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-mysql.png)


このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

1. AWS マネジメントコンソール を使用する ‐「[MySQL DB インスタンスを作成する](#CHAP_GettingStarted.Creating.MySQL)」と「[EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.MySQL.EC2)」 

1. CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、MySQL インスタンスを作成する](#CHAP_GettingStarted.CFN.MySQL) 

最初の方法では、**[簡単作成]** を使用して、AWS マネジメントコンソール でプライベート MySQL DB インスタンスを作成します。ここでは、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[**Easy create (簡易作成)**] では、他の設定オプションのデフォルト設定を使用します。

代わりに **[標準作成]** を使用する場合は、DB インスタンスの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB インスタンスを作成するには、**[標準作成]** を使用する必要があります。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

**Topics**
+ [前提条件](#CHAP_GettingStarted.Prerequisites.MySQL)
+ [EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.MySQL.EC2)
+ [MySQL DB インスタンスを作成する](#CHAP_GettingStarted.Creating.MySQL)
+ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、MySQL インスタンスを作成する](#CHAP_GettingStarted.CFN.MySQL)
+ [MySQL DB インスタンスに接続する](#CHAP_GettingStarted.Connecting.MySQL)
+ [EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.Deleting.MySQL)
+ [(オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.DeletingCFN.MySQL)
+ [(オプション) DB インスタンスを Lambda 関数に接続する](#CHAP_GettingStarted.ComputeConnect.MySQL)

## 前提条件
<a name="CHAP_GettingStarted.Prerequisites.MySQL"></a>

開始する前に、以下のセクションのステップを完了してください。
+ [AWS アカウントへのサインアップ](CHAP_SettingUp.md#sign-up-for-aws)
+ [管理アクセスを持つユーザーを作成する](CHAP_SettingUp.md#create-an-admin)

## EC2 インスタンスの作成
<a name="CHAP_GettingStarted.Creating.MySQL.EC2"></a>

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

**EC2 インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. AWS マネジメントコンソール の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

1. 次の図に示すように、**[EC2 ダッシュボード]** を選択し、次に **[インスタンスの起動]** を選択します。  
![\[EC2 ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **[インスタンスを起動]** ページが開きます。

1. **[インスタンスを起動]** ページで次の設定を選択します。

   1. **[Name and tags]** (名前とタグ) の、**[Name]** (名前) で、**ec2-database-connect** と入力します。

   1. **[アプリケーションおよび OS イメージ (Amazon マシンイメージ)]** で、**[Amazon Linux]** を選択し、**[Amazon Linux 2023 AMI]** を選択します。他の選択肢は、デフォルトの選択のままにします。  
![\[Amazon Machine Image を選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. **[Instance type]** (インスタンスタイプ) で **[t2.micro]** を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) で、**[Key pair name]** (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、**[Create new key pair]** (新しい key pair を作成する) を選択し、**[Create key pair]** (キーペアを作成する) ウィンドウを使用して作成します。

      新しいキーペアの作成については、「*Amazon EC2 ユーザーガイド*」の「[キーペアの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)」を参照してください。

   1. **ネットワーク設定**の **[SSH トラフィックを許可]** で、EC2 インスタンスへの SSH 接続のソースを選択します。

      表示された IP アドレスが SSH 接続に適している場合は、**[My IP]** (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、[https://checkip.amazonaws.com](https://checkip.amazonaws.com/) のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

       多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、**[ネットワーク設定]** セクションの例を示しています。  
![\[EC2 インスタンスのネットワーク設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 残りのセクションをデフォルト値のままにします。

   1. **[概要]** パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、**[インスタンスの起動]** を選択します。

1. **[起動ステータス]** ページで、新しい EC2 インスタンスの ID (例: `i-1234567890abcdef0`) をメモします。  
![\[起動ステータスページの EC2 インスタンス ID。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

1. **[詳細]** タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

   1. **[インスタンスの概要]** で、**[パブリック IPv4 DNS]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. **[インスタンスの詳細]** で、**[キーペア名]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 キーペア名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. EC2 インスタンスの **[インスタンス状態]** が **[実行中]** になるまで待ってから、続行します。

## MySQL DB インスタンスを作成する
<a name="CHAP_GettingStarted.Creating.MySQL"></a>

Amazon RDS の基本的な構成要素は DB インスタンスです。これは、MySQL データベースを実行する環境です。

この例では、**[簡易作成]** を使用して、db.t3.micro DB インスタンスクラスで MySQL データベースエンジンを実行する DB インスタンスを作成します。

**簡易作成で MySQL DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. Amazon RDS コンソールの右上で、以前 EC2 インスタンスに使用した AWS リージョン を選択します。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. [**Create database (データベースの作成)**] を選択し、[**Easy create (簡易作成)**] が選択されていることを確認します。  
![\[簡易作成オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. [**設定**] で、[**MySQL**] を選択します。

1. [**DB インスタンスサイズ**] で、[**無料利用枠**] を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。

1. **[DB instance identifier]** (DB インスタンス識別子) に**database-test1** と入力します。

1. **[マスターユーザー名]** に、マスターユーザーの名前を入力するか、デフォルト名のままにします。

   [**データベースの作成**] ページは、次のイメージのようになります。無料プランアカウントの場合、**[無料利用枠]** が表示されます。有料プランアカウントの場合、**[サンドボックス]** が表示されます。  
![\[データベースの作成ページ。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-mysql.png)

1. DB インスタンス用に自動生成されたマスターパスワードを使用するには、**[パスワードの自動生成]** を選択します。

   マスターパスワードを入力するには、**[パスワードの自動生成]** チェックボックスをオフにして、**[マスターパスワード]** と **[パスワードの確認]** に同じパスワードを入力します。

1. 以前に作成した EC2 インスタンスとの接続をセットアップするには、**[EC2 接続のセットアップ - *オプション*]** を開きます。

   **[EC2 コンピューティングリソースに接続]** を選択します。以前に作成した EC2 インスタンスを選択します。  
![\[[EC2 接続のセットアップ] オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. (オプション) [**View default settings for Easy create (簡易作成のデフォルト設定を表示)**] を開きます。  
![\[簡易作成のデフォルト設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-view-default-mysql.png)

   [**Easy Create (簡易作成)**] で使用されるデフォルト設定を調べることができます。**[データベース作成後に編集可能]** 列には、データベース作成後に変更できるオプションが表示されます。
   + その列の設定に **[いいえ]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成できます。
   + その列の設定に **[はい]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。

1. **[データベースの作成]** を選択します。

   DB インスタンスのマスターユーザー名およびパスワードを表示するには、[**認証情報の詳細の表示**] を選択します。

   表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。
**重要**  
マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。  
DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

1. **[データベース]** リストで、新しい MySQL DB インスタンスの名前を選択し、詳細を表示します。

   DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは **[作成中]** のままです。  
![\[DB インスタンスの詳細。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/MySQL-Launch06.png)

   ステータスが **[Available]** (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。

## (オプション) CloudFormation を使用して VPC、EC2 インスタンス、MySQL インスタンスを作成する
<a name="CHAP_GettingStarted.CFN.MySQL"></a>

コンソールを使用して VPC、EC2 インスタンス、MySQL DB インスタンスを作成する代わりに、CloudFormation を使用して Infrastructure as Code として取り扱うことで、AWS リソースをプロビジョンできます。AWS リソースをより小さく管理しやすい単位に整理するには、CloudFormation のネストされたスタック機能を使用できます。詳細については、「[CloudFormation コンソールでのスタックの作成](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」と「[ネストされたスタックの操作](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)」を参照してください。

**重要**  
CloudFormation は無料ですが、CloudFormation が作成するリソースは実動のものです。これらのリソースを終了するまで、標準使用料が発生します。詳細については、「[RDS for MySQL の料金](https://aws.amazon.com//rds/mysql/pricing)」を参照してください。

CloudFormation コンソールを使用してリソースを作成するには、以下のステップを実行します。
+ CloudFormation テンプレートをダウンロードする
+ CloudFormation を使用してリソースを設定する

### CloudFormation テンプレートをダウンロードする
<a name="CHAP_GettingStarted.CFN.MySQL.Step1"></a>

CloudFormation テンプレートは、スタックに作成するリソースに関する設定情報が含まれる JSON または YAML のテキストファイルです。このテンプレートは、RDS インスタンスとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク、[MySQL CloudFormation template](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-mysql-main.template.yaml) を開きます。

この Github ページで、**[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

### CloudFormation を使用してリソースを設定する
<a name="CHAP_GettingStarted.CFN.MySQL.Step2"></a>

**注記**  
このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「[Amazon EC2 キーペアおよび Linux インスタンス](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)」を参照してください。

CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. **[Create Stack]** (スタックの作成) を選択します。

1. [テンプレートの指定] セクションで、**[コンピュータからテンプレートファイルをアップロード]** を選択し、**[次へ]** をクリックします。

1. **[スタックの詳細を指定]** ページで、次のパラメータを設定します。

   1. **[スタック名]** は **[MySQLTestStack]** に設定します。

   1. **[パラメータ]** で、3 つのアベイラビリティーゾーンを選択して、**[アベイラビリティーゾーン]** を設定します。

   1. **[Linux 踏み台ホスト設定]** で、**[キー名]** に EC2 インスタンスにログインするキーペアを選択します。

   1. **[Linux 踏み台ホスト設定]** で、**[許可された IP 範囲]** を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、[https://checkip.amazonaws.com](https://checkip.amazonaws.com) のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

   1. **[Database General configuration]** で、**[データベースインスタンスクラス]** を **[db.t3.micro]** に設定します。

   1. **[データベース名]** を **database-test1** に設定します。

   1. **[データベースマスターユーザー名]** には、PDB のマスターユーザー名を入力します。

   1. このチュートリアルでは、**[Secrets Manager で DB マスターユーザーパスワードを管理]** を `false` に設定します。

   1. **[データベースパスワード]** には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

   1. **[Database Storage configuration]** で、**[Database storage type]** を **[gp2]** に設定します。

   1. **[Database Monitoring configuration]** で、**[Enable RDS Performance Insights]** を false に設定します。

   1. その他の設定はすべてデフォルトの値のままにします。**[次へ]** をクリックして続行します。

1. **[スタックオプションの設定]** ページでは、すべてのデフォルトオプションをそのまま使用します。**[次へ]** をクリックして続行します。

1. **[スタックの確認]** ページで、データベースと Linux 踏み台ホストのオプションを確認した後、**[送信]** をクリックします。

スタックの作成プロセスが完了したら、**BastionStack と **RDSNS という名前のスタックを確認して、データベースへの接続に必要な情報をメモします。詳細については、「[AWS マネジメントコンソール での CloudFormation スタックデータとリソースの表示](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)」を参照してください。

## MySQL DB インスタンスに接続する
<a name="CHAP_GettingStarted.Connecting.MySQL"></a>

標準の SQL クライアントアプリケーションを使用して、DB インスタンスに接続できます。この例では、mysql コマンドラインクライアントを使用して、MySQL DB インスタンスに接続します。

**MySQL DB インスタンスに接続するには**

1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

   1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

   1. Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。

   1. ナビゲーションペインで、[**データベース**] を選択します。

   1. MySQL DB インスタンスの名前を選択して詳細を表示します。

   1. [**接続とセキュリティ**] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。  
![\[MySQL DB インスタンスに接続します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/MySQLConnect1.png)

1. 「*Amazon EC2 ユーザーガイド*」の「[Linux インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

   SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例えば、`ec2-database-connect-key-pair.pem` が Linux の `/dir1` に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が `ec2-12-345-678-90.compute-1.amazonaws.com` であるとします。SSH コマンドは次のようになります。

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。これを行うには、次のコマンドを使用します。
**注記**  
`-y` オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

   ```
   sudo dnf update -y
   ```

1.  MariaDB の mysql コマンドラインクライアントを Amazon Linux 2023 にインストールするには、次のコマンドを実行します。

   ```
   sudo dnf install mariadb105
   ```

1. MySQL DB インスタンスに接続します。例えば、次のコマンドを入力します。このアクションにより、MySQL クライアントを使用して、MySQL DB インスタンスに接続できます。

   `endpoint` の DB インスタンスの DNS 名 (エンドポイント) を、`admin` で使用したマスターユーザー名に置き換えます。パスワードの入力を求められたときに使用したマスターパスワードを入力します。

   ```
   mysql -h endpoint -P 3306 -u admin -p
   ```

   ユーザーのパスワードを入力すると、次のような出力が表示されます。

   ```
   Welcome to the MariaDB monitor.  Commands end with ; or \g.
   Your MySQL connection id is 3082
   Server version: 8.0.28 Source distribution
   
   Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
   
   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
   
   MySQL [(none)]>
   ```

   MySQL DB インスタンスへの接続の詳細については、「[MySQL DB インスタンスへの接続](USER_ConnectToInstance.md)」を参照してください。DB インスタンスに接続できない場合は、「[Amazon RDS DB インスタンスに接続できない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)」を参照してください。

   セキュリティのためには、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼されている場合に限り、暗号化されていない MySQL 接続を使用します。暗号化された接続の使用については、「[MySQL コマンドラインクライアントからの SSL/TLS による Amazon RDS 上の MySQL DB インスタンスへの接続 (暗号化）](USER_ConnectToInstanceSSL.CLI.md)」を参照してください。

1. SQL コマンドを実行する。

   例えば、次の SQL コマンドは、現在の日付と時刻を表示します。

   ```
   SELECT CURRENT_TIMESTAMP;
   ```

## EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.Deleting.MySQL"></a>

作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

**EC2 インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. EC2 インスタンスを選択し、**[インスタンスの状態]、[インスタンスの終了]** の順に選択します。

1. 確認を求めるメッセージが表示されたら、[**Terminate (終了)**] を選択してください。

EC2 インスタンスの削除の詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスの終了](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)」を参照してください。

**最終的な DB スナップショットを作成せずに DB インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 削除する DB インスタンスを選択します。

1. [**アクション**] で、[**削除**] を選択します。

1. **[最終スナップショットを作成]** と **[自動バックアップの保持]** をクリアします。

1. 確認を完了し、**[削除]** を選択します。

## (オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.DeletingCFN.MySQL"></a>

CloudFormation を使用してリソースを作成した場合は、サンプル EC2 インスタンスと DB インスタンスに接続して確認を済ませた後、それ以上料金が発生しないように、CloudFormation スタックを削除します。

**CloudFormation リソースを削除するには**

1. CloudFormation コンソールを開きます。

1. CloudFormation コンソールの **[スタック]** ページで、ルートスタック (VPCStack、BastionStack、または RDSNS という名前がついていないスタック) を選択します。

1. **[削除]** を選択します。

1. 確認を求めるメッセージが表示されたら、**[削除]** を選択します。

CloudFormation でのスタックの削除方法の詳細については、「**AWS CloudFormation ユーザーガイド」の「[CloudFormation コンソールでのスタックの削除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)」を参照してください。

## (オプション) DB インスタンスを Lambda 関数に接続する
<a name="CHAP_GettingStarted.ComputeConnect.MySQL"></a>

RDS for MySQL DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「[Lambda 関数と DB インスタンスを自動的に接続する](lambda-rds-connect.md)」を参照してください。

# Oracle DB インスタンスを作成して接続する
<a name="CHAP_GettingStarted.CreatingConnecting.Oracle"></a>

このチュートリアルでは、EC2 インスタンスと RDS for Oracle DB インスタンスを作成します。このチュートリアルでは、標準の Oracle クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

**重要**  
AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。

![\[EC2 インスタンスと Oracle DB インスタンス。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-oracle.png)


このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

1. AWS マネジメントコンソール を使用する ‐「[ステップ 2: Oracle DB インスタンスを作成する](#CHAP_GettingStarted.Creating.Oracle)」と「[ステップ 1: EC2 インスタンスを作成する](#CHAP_GettingStarted.Creating.Oracle.EC2)」 

1. CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、Oracle DB インスタンスを作成する](#CHAP_GettingStarted.CFN.Oracle) 

最初の方法では、**[簡単作成]** を使用して、AWS マネジメントコンソール でプライベート Oracle DB インスタンスを作成します。ここでは、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[**Easy create (簡易作成)**] では、他の設定オプションのデフォルト設定を使用します。

代わりに **[標準作成]** を使用する場合は、DB インスタンスの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB インスタンスを作成するには、**[標準作成]** を使用する必要があります。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

**Topics**
+ [前提条件](#CHAP_GettingStarted.Prerequisites.Oracle)
+ [ステップ 1: EC2 インスタンスを作成する](#CHAP_GettingStarted.Creating.Oracle.EC2)
+ [ステップ 2: Oracle DB インスタンスを作成する](#CHAP_GettingStarted.Creating.Oracle)
+ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、Oracle DB インスタンスを作成する](#CHAP_GettingStarted.CFN.Oracle)
+ [ステップ 3: SQL クライアントを Oracle DB インスタンスに接続する](#CHAP_GettingStarted.Connecting.Oracle)
+ [ステップ 4: EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.Deleting.Oracle)
+ [(オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.DeletingCFN.Oracle)
+ [(オプション) DB インスタンスを Lambda 関数に接続する](#CHAP_GettingStarted.ComputeConnect.Oracle)

## 前提条件
<a name="CHAP_GettingStarted.Prerequisites.Oracle"></a>

開始する前に、以下のセクションのステップを完了してください。
+ [AWS アカウントへのサインアップ](CHAP_SettingUp.md#sign-up-for-aws)
+ [管理アクセスを持つユーザーを作成する](CHAP_SettingUp.md#create-an-admin)

## ステップ 1: EC2 インスタンスを作成する
<a name="CHAP_GettingStarted.Creating.Oracle.EC2"></a>

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

**EC2 インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. AWS マネジメントコンソール の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

1. 次の図に示すように、**[EC2 ダッシュボード]** を選択し、次に **[インスタンスの起動]** を選択します。  
![\[EC2 ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **[インスタンスを起動]** ページが開きます。

1. **[インスタンスを起動]** ページで次の設定を選択します。

   1. **[Name and tags]** (名前とタグ) の、**[Name]** (名前) で、**ec2-database-connect** と入力します。

   1. **[アプリケーションおよび OS イメージ (Amazon マシンイメージ)]** で、**[Amazon Linux]** を選択し、**[Amazon Linux 2023 AMI]** を選択します。他の選択肢は、デフォルトの選択のままにします。  
![\[Amazon Machine Image を選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. **[Instance type]** (インスタンスタイプ) で **[t2.micro]** を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) で、**[Key pair name]** (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、**[Create new key pair]** (新しい key pair を作成する) を選択し、**[Create key pair]** (キーペアを作成する) ウィンドウを使用して作成します。

      新しいキーペアの作成については、「*Amazon EC2 ユーザーガイド*」の「[キーペアの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)」を参照してください。

   1. **ネットワーク設定**の **[SSH トラフィックを許可]** で、EC2 インスタンスへの SSH 接続のソースを選択します。

      表示された IP アドレスが SSH 接続に適している場合は、**[My IP]** (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、[https://checkip.amazonaws.com](https://checkip.amazonaws.com/) のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

       多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、**[ネットワーク設定]** セクションの例を示しています。  
![\[EC2 インスタンスのネットワーク設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 残りのセクションをデフォルト値のままにします。

   1. **[概要]** パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、**[インスタンスの起動]** を選択します。

1. **[起動ステータス]** ページで、新しい EC2 インスタンスの ID (例: `i-1234567890abcdef0`) をメモします。  
![\[起動ステータスページの EC2 インスタンス ID。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

1. **[詳細]** タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

   1. **[インスタンスの概要]** で、**[パブリック IPv4 DNS]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. **[インスタンスの詳細]** で、**[キーペア名]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 キーペア名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. EC2 インスタンスの **[インスタンス状態]** が **[実行中]** になるまで待ってから、続行します。

## ステップ 2: Oracle DB インスタンスを作成する
<a name="CHAP_GettingStarted.Creating.Oracle"></a>

Amazon RDS の基本的な構成要素は DB インスタンスです。これは、Oracle データベースを実行する環境です。

この例では、[**簡単作成**] を使用して、db.m5.large DB インスタンスクラスで Oracle データベースエンジンを実行する DB インスタンスを作成します。

**Easy create を有効にして Oracle DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. Amazon RDS コンソールの右上で、DB インスタンスを作成する AWS リージョン を選択します。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. [**Create database (データベースの作成)**] を選択し、[**Easy create (簡易作成)**] が選択されていることを確認します。  
![\[簡易作成オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. [**設定**] で、[**Oracle**] を選択します。

1. [**DB インスタンスサイズ**] で、[**Dev/Test**] を選択します。

1. **[DB instance identifier]** (DB インスタンス識別子) に**database-test1** と入力します。

1. **[マスターユーザー名]** に、マスターユーザーの名前を入力するか、デフォルト名のままにします。

   [**データベースの作成**] ページは、次のイメージのようになります。  
![\[データベースの作成ページ。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-oracle2.png)

1. DB インスタンス用に自動生成されたマスターパスワードを使用するには、**[パスワードの自動生成]** を選択します。

   マスターパスワードを入力するには、**[パスワードの自動生成]** チェックボックスをオフにして、**[マスターパスワード]** と **[パスワードの確認]** に同じパスワードを入力します。

1. 以前に作成した EC2 インスタンスとの接続をセットアップするには、**[EC2 接続のセットアップ - *オプション*]** を開きます。

   **[EC2 コンピューティングリソースに接続]** を選択します。以前に作成した EC2 インスタンスを選択します。  
![\[[EC2 接続のセットアップ] オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. **[簡易作成のデフォルト設定を表示]** を開きます。  
![\[簡易作成のデフォルト設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-view-default-Oracle.png)

   [**Easy Create (簡易作成)**] で使用されるデフォルト設定を調べることができます。**[データベース作成後に編集可能]** 列には、データベース作成後に変更できるオプションが表示されます。
   + その列の設定に **[いいえ]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成できます。
   + その列の設定に **[はい]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。

1. **[データベースの作成]** を選択します。

   DB インスタンスのマスターユーザー名およびパスワードを表示するには、[**認証情報の詳細の表示**] を選択します。

   表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。
**重要**  
マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。  
DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

1. **[データベース]** リストで、新しい Oracle DB インスタンスの名前を選択し、詳細を表示します。

   DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは **[作成中]** のままです。  
![\[DB インスタンスの詳細。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Oracle-Launch05.png)

   ステータスが **[Available]** (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。DB インスタンスの作成中に、次のステップに進んで EC2 インスタンスを作成できます。

## (オプション) CloudFormation を使用して VPC、EC2 インスタンス、Oracle DB インスタンスを作成する
<a name="CHAP_GettingStarted.CFN.Oracle"></a>

コンソールを使用して VPC、EC2 インスタンス、Oracle DB インスタンスを作成する代わりに、CloudFormation を使用して Infrastructure as Code として取り扱うことで、AWS リソースをプロビジョンできます。AWS リソースをより小さく管理しやすい単位に整理するには、CloudFormation のネストされたスタック機能を使用できます。詳細については、「[CloudFormation コンソールでのスタックの作成](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」と「[ネストされたスタックの操作](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)」を参照してください。

**重要**  
CloudFormation は無料ですが、CloudFormation が作成するリソースは実動のものです。これらのリソースを終了するまで、標準使用料が発生します。詳細については、「[RDS for Oracle の料金](https://aws.amazon.com//rds/oracle/pricing)」を参照してください。

CloudFormation コンソールを使用してリソースを作成するには、以下のステップを実行します。
+ ステップ 1: CloudFormation テンプレートをダウンロードする
+ ステップ 2: CloudFormation を使用してリソースを設定する

### CloudFormation テンプレートをダウンロードする
<a name="CHAP_GettingStarted.CFN.Oracle.Step1"></a>

CloudFormation テンプレートは、スタックに作成するリソースに関する設定情報が含まれる JSON または YAML のテキストファイルです。このテンプレートは、RDS インスタンスとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク、[Oracle CloudFormation template](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-oracle-main.template.yaml) を開きます。

この Github ページで、**[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

### CloudFormation を使用してリソースを設定する
<a name="CHAP_GettingStarted.CFN.Oracle.Step2"></a>

**注記**  
このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「[Amazon EC2 キーペアおよび Linux インスタンス](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)」を参照してください。

CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. **[Create Stack]** (スタックの作成) を選択します。

1. [テンプレートの指定] セクションで、**[コンピュータからテンプレートファイルをアップロード]** を選択し、**[次へ]** をクリックします。

1. **[スタックの詳細を指定]** ページで、次のパラメータを設定します。

   1. **[スタック名]** は **[OracleTestStack]** に設定します。

   1. **[パラメータ]** で、3 つのアベイラビリティーゾーンを選択して、**[アベイラビリティーゾーン]** を設定します。

   1. **[Linux 踏み台ホスト設定]** で、**[キー名]** に EC2 インスタンスにログインするキーペアを選択します。

   1. **[Linux 踏み台ホスト設定]** で、**[許可された IP 範囲]** を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、[https://checkip.amazonaws.com](https://checkip.amazonaws.com) のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

   1. **[Database General configuration]** で、**[データベースインスタンスクラス]** を **[db.t3.micro]** に設定します。

   1. **[データベース名]** を **database-test1** に設定します。

   1. **[データベースマスターユーザー名]** には、PDB のマスターユーザー名を入力します。

   1. このチュートリアルでは、**[Secrets Manager で DB マスターユーザーパスワードを管理]** を `false` に設定します。

   1. **[データベースパスワード]** には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

   1. **[Database Storage configuration]** で、**[Database storage type]** を **[gp2]** に設定します。

   1. **[Database Monitoring configuration]** で、**[Enable RDS Performance Insights]** を false に設定します。

   1. その他の設定はすべてデフォルトの値のままにします。**[次へ]** をクリックして続行します。

1. **[スタックオプションの設定]** ページでは、すべてのデフォルトオプションをそのまま使用します。**[次へ]** をクリックして続行します。

1. **[スタックの確認]** ページで、データベースと Linux 踏み台ホストのオプションを確認した後、**[送信]** をクリックします。

スタックの作成プロセスが完了したら、**BastionStack と **RDSNS という名前のスタックを確認して、データベースへの接続に必要な情報をメモします。詳細については、「[AWS マネジメントコンソール での CloudFormation スタックデータとリソースの表示](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)」を参照してください。

## ステップ 3: SQL クライアントを Oracle DB インスタンスに接続する
<a name="CHAP_GettingStarted.Connecting.Oracle"></a>

標準の SQL クライアントアプリケーションを使用して、DB インスタンスに接続できます。この例では、Oracle コマンドラインツールを使用して Oracle DB インスタンスに接続します。

**Oracle DB インスタンスに接続するには**

1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

   1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

   1. Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。

   1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

   1. 詳細を表示する Oracle DB インスタンスの名前を選択します。

   1. **接続とセキュリティ** タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。  
![\[Oracle DB インスタンスに接続します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/OracleConnect1.png)

1. 「*Amazon EC2 ユーザーガイド*」の「[Linux インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

   SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例えば、`ec2-database-connect-key-pair.pem` が Linux の `/dir1` に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が `ec2-12-345-678-90.compute-1.amazonaws.com` であるとします。SSH コマンドは次のようになります。

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。そのためには、次のコマンドを使用します。
**注記**  
`-y` オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

   ```
   sudo dnf update -y
   ```

1. ウェブブラウザで、[https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html](https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html) に進みます。

1. ウェブページに表示される最新のデータベースバージョンについては、Instant Client Basic Package と SQL\$1Plus Package の .rpm リンク (.zip リンクではない) をコピーします。例えば、次のリンクは Oracle Database バージョン 21.9 用です。
   + https://download.oracle.com/otn\$1software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86\$164.rpm
   + https://download.oracle.com/otn\$1software/linux/instantclient/219000/oracle-instantclient-sqlplus-21.9.0.0.0-1.el8.x86\$164.rpm

1. SSH セッションで、`wget` コマンドを実行して、前のステップで取得したリンクから .rpm ファイルをダウンロードします。次の例では、Oracle Database バージョン 21.9 の .rpm ファイルをダウンロードします。

   ```
   wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-basic-21.9.0.0.0-1.el8.x86_64.rpm
   wget https://download.oracle.com/otn_software/linux/instantclient/219000/oracle-instantclient-sqlplus-21.9.0.0.0-1.el8.x86_64.rpm
   ```

1. 以下の `dnf` コマンドを実行してパッケージをインストールします。

   ```
   sudo dnf install oracle-instantclient-*.rpm
   ```

1. SQL\$1Plus を起動し、Oracle DB インスタンスに接続します。例えば、次のコマンドを入力します。

   `oracle-db-instance-endpoint` の DB インスタンスエンドポイント (DNS 名) を置き換え、`admin` で使用したマスターユーザー名に置き換えます。Oracle の**[簡単作成]** を使用する場合、データベース名は `DATABASE` です。パスワードの入力を求められたときに使用したマスターパスワードを入力します。

   ```
   sqlplus admin@oracle-db-instance-endpoint:1521/DATABASE
   ```

   ユーザーのパスワードを入力すると、次のような出力が表示されます。

   ```
   SQL*Plus: Release 21.0.0.0.0 - Production on Wed Mar 1 16:41:28 2023
   Version 21.9.0.0.0
   
   Copyright (c) 1982, 2022, Oracle.  All rights reserved.
   
   Enter password: 
   Last Successful login time: Wed Mar 01 2023 16:30:52 +00:00
   
   Connected to:
   Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
   Version 19.18.0.0.0
   
   SQL>
   ```

   RDS for Oracle DB インスタンスへの接続の詳細については、「[Oracle DB インスタンスへの接続](USER_ConnectToOracleInstance.md)」を参照してください。DB インスタンスに接続できない場合は、「[Amazon RDS DB インスタンスに接続できない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)」を参照してください。

   セキュリティのためには、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼されている場合に限り、暗号化されていない Oracle 接続を使用します。暗号化された接続の使用については、「[Oracle DB インスタンス接続の保護](Oracle.Concepts.RestrictedDBAPrivileges.md)」を参照してください。

1. SQL コマンドを実行する。

   例えば、次の SQL コマンドは、現在の日付を表示します。

   ```
   SELECT SYSDATE FROM DUAL;
   ```

## ステップ 4: EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.Deleting.Oracle"></a>

作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

**EC2 インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. EC2 インスタンスを選択し、**[インスタンスの状態]、[インスタンスの終了]** の順に選択します。

1. 確認を求めるメッセージが表示されたら、[**Terminate (終了)**] を選択してください。

EC2 インスタンスの削除の詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスの終了](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)」を参照してください。

**最終的な DB スナップショットを作成せずに DB インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 削除する DB インスタンスを選択します。

1. [**アクション**] で、[**削除**] を選択します。

1. **[最終スナップショットを作成]** と **[自動バックアップの保持]** をクリアします。

1. 確認を完了し、**[削除]** を選択します。

## (オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.DeletingCFN.Oracle"></a>

CloudFormation を使用してリソースを作成した場合は、サンプル EC2 インスタンスと DB インスタンスに接続して確認を済ませた後、それ以上料金が発生しないように、CloudFormation スタックを削除します。

**CloudFormation リソースを削除するには**

1. CloudFormation コンソールを開きます。

1. CloudFormation コンソールの **[スタック]** ページで、ルートスタック (VPCStack、BastionStack、または RDSNS という名前がついていないスタック) を選択します。

1. **[削除]** を選択します。

1. 確認を求めるメッセージが表示されたら、**[削除]** を選択します。

CloudFormation でのスタックの削除方法の詳細については、「**AWS CloudFormation ユーザーガイド」の「[CloudFormation コンソールでのスタックの削除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)」を参照してください。

## (オプション) DB インスタンスを Lambda 関数に接続する
<a name="CHAP_GettingStarted.ComputeConnect.Oracle"></a>

RDS for Oracle DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「[Lambda 関数と DB インスタンスを自動的に接続する](lambda-rds-connect.md)」を参照してください。

# PostgreSQL DB インスタンスを作成して接続する
<a name="CHAP_GettingStarted.CreatingConnecting.PostgreSQL"></a>

このチュートリアルでは、EC2 インスタンスと RDS for PostgreSQL DB インスタンスを作成します。このチュートリアルでは、標準の PostgreSQL クライアントを使用して EC2 インスタンスから DB インスタンスにアクセスする方法を示します。ベストプラクティスとして、このチュートリアルでは、プライベート DB インスタンスを仮想プライベートクラウド (VPC) に作成します。ほとんどの場合、EC2 インスタンスなど、同じ VPC 内の他のリソースは DB インスタンスにアクセスできますが、VPC 外部のリソースはアクセスできません。

チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。1 つのアベイラビリティーゾーンで、EC2 インスタンスはパブリックサブネットにあり、DB インスタンスはプライベートサブネットにあります。

**重要**  
AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

次の図は、チュートリアルが完了した時点の設定を示しています。

![\[EC2 インスタンスと PostgreSQL DB インスタンス。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-postgresql.png)


このチュートリアルでは、次のいずれかの方法を使用してリソースを作成できます。

1. AWS マネジメントコンソール を使用する ‐「[EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.RDSPostgreSQL.EC2)」と「[PostgreSQL DB インスタンスを作成する](#CHAP_GettingStarted.Creating.PostgreSQL)」 

1. CloudFormation を使用してデータベースインスタンスと EC2 インスタンスを作成する ‐ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、PostgreSQL インスタンスを作成する](#CHAP_GettingStarted.CFN.PostgreSQL) 

最初の方法では、**[簡単作成]** を使用して、AWS マネジメントコンソール でプライベート PostgreSQL DB インスタンスを作成します。ここでは、DB エンジンタイプ、DB インスタンスサイズ、DB インスタンス識別子のみを指定します。[**Easy create (簡易作成)**] では、他の設定オプションのデフォルト設定を使用します。

代わりに **[標準作成]** を使用する場合は、DB インスタンスの作成時にさらに多くの設定オプションを指定できます。このようなオプションには、可用性、セキュリティ、バックアップ、メンテナンスの設定があります。パブリック DB インスタンスを作成するには、**[標準作成]** を使用する必要があります。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

**Topics**
+ [前提条件](#CHAP_GettingStarted.Prerequisites.RDSPostgreSQL)
+ [EC2 インスタンスの作成](#CHAP_GettingStarted.Creating.RDSPostgreSQL.EC2)
+ [PostgreSQL DB インスタンスを作成する](#CHAP_GettingStarted.Creating.PostgreSQL)
+ [(オプション) CloudFormation を使用して VPC、EC2 インスタンス、PostgreSQL インスタンスを作成する](#CHAP_GettingStarted.CFN.PostgreSQL)
+ [PostgreSQL DB インスタンスへの接続](#CHAP_GettingStarted.Connecting.PostgreSQL)
+ [EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.Deleting.PostgreSQL)
+ [(オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する](#CHAP_GettingStarted.DeletingCFN.PostgreSQL)
+ [(オプション) DB インスタンスを Lambda 関数に接続する](#CHAP_GettingStarted.ComputeConnect.PostreSQL)

## 前提条件
<a name="CHAP_GettingStarted.Prerequisites.RDSPostgreSQL"></a>

開始する前に、以下のセクションのステップを完了してください。
+ [AWS アカウントへのサインアップ](CHAP_SettingUp.md#sign-up-for-aws)
+ [管理アクセスを持つユーザーを作成する](CHAP_SettingUp.md#create-an-admin)

## EC2 インスタンスの作成
<a name="CHAP_GettingStarted.Creating.RDSPostgreSQL.EC2"></a>

データベースへの接続に使用する Amazon EC2 インスタンスを作成します。

**EC2 インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. AWS マネジメントコンソール の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

1. 次の図に示すように、**[EC2 ダッシュボード]** を選択し、次に **[インスタンスの起動]** を選択します。  
![\[EC2 ダッシュボード。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

   **[インスタンスを起動]** ページが開きます。

1. **[インスタンスを起動]** ページで次の設定を選択します。

   1. **[Name and tags]** (名前とタグ) の、**[Name]** (名前) で、**ec2-database-connect** と入力します。

   1. **[アプリケーションおよび OS イメージ (Amazon マシンイメージ)]** で、**[Amazon Linux]** を選択し、**[Amazon Linux 2023 AMI]** を選択します。他の選択肢は、デフォルトの選択のままにします。  
![\[Amazon Machine Image を選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. **[Instance type]** (インスタンスタイプ) で **[t2.micro]** を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) で、**[Key pair name]** (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、**[Create new key pair]** (新しい key pair を作成する) を選択し、**[Create key pair]** (キーペアを作成する) ウィンドウを使用して作成します。

      新しいキーペアの作成については、「*Amazon EC2 ユーザーガイド*」の「[キーペアの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)」を参照してください。

   1. **ネットワーク設定**の **[SSH トラフィックを許可]** で、EC2 インスタンスへの SSH 接続のソースを選択します。

      表示された IP アドレスが SSH 接続に適している場合は、**[My IP]** (マイ IP)を選択できます。それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、[https://checkip.amazonaws.com](https://checkip.amazonaws.com/) のサービスを使用できます。IP アドレスの例は 192.0.2.1/32 です。

       多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

      以下のイメージは、**[ネットワーク設定]** セクションの例を示しています。  
![\[EC2 インスタンスのネットワーク設定。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Connect_NtwkSettings.png)

   1. 残りのセクションをデフォルト値のままにします。

   1. **[概要]** パネルで、EC2 インスタンス設定の概要を確認し、準備ができたら、**[インスタンスの起動]** を選択します。

1. **[起動ステータス]** ページで、新しい EC2 インスタンスの ID (例: `i-1234567890abcdef0`) をメモします。  
![\[起動ステータスページの EC2 インスタンス ID。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

1. **[詳細]** タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

   1. **[インスタンスの概要]** で、**[パブリック IPv4 DNS]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. **[インスタンスの詳細]** で、**[キーペア名]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 キーペア名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. EC2 インスタンスの **[インスタンス状態]** が **[実行中]** になるまで待ってから、続行します。

## PostgreSQL DB インスタンスを作成する
<a name="CHAP_GettingStarted.Creating.PostgreSQL"></a>

Amazon RDS の基本的な構成要素は DB インスタンスです。これは、PostgreSQL データベースを実行する環境です。

この例では、**[簡単作成]** を使用して、DB インスタンスクラスが db.t3.micro の PostgreSQL データベースエンジンを実行する DB インスタンスを作成します。

**簡易作成で PostgreSQL DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. Amazon RDS コンソールの右上で、DB インスタンスを作成する AWS リージョンを選択します。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. [**Create database (データベースの作成)**] を選択し、[**Easy create (簡易作成)**] が選択されていることを確認します。  
![\[簡易作成オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-option.png)

1. [**設定**] で、[**PostgreSQL**] を選択します。

1. [**DB インスタンスサイズ**] で、[**無料利用枠**] を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。

1. **[DB instance identifier]** (DB インスタンス識別子) に**database-test1** と入力します。

1. **[マスターユーザー名]** に、マスターユーザーの名前を入力するか、デフォルト名 (**postgres**) のままにします。

   [**データベースの作成**] ページは、次のイメージのようになります。無料プランアカウントの場合、**[無料利用枠]** が表示されます。有料プランアカウントの場合、**[サンドボックス]** が表示されます。  
![\[データベースの作成ページ。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-postgresql.png)

1. DB インスタンス用に自動生成されたマスターパスワードを使用するには、**[パスワードの自動生成]** を選択します。

   マスターパスワードを入力するには、**[パスワードの自動生成]** チェックボックスをオフにして、**[マスターパスワード]** と **[パスワードの確認]** に同じパスワードを入力します。

1. 以前に作成した EC2 インスタンスとの接続をセットアップするには、**[EC2 接続のセットアップ - *オプション*]** を開きます。

   **[EC2 コンピューティングリソースに接続]** を選択します。以前に作成した EC2 インスタンスを選択します。  
![\[[EC2 接続のセットアップ] オプション。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/EC2_RDS_Setup_Conn-EasyCreate.png)

1. **[簡易作成のデフォルト設定を表示]** を開きます。  
![\[RDS for PostgreSQL のデフォルトの設定を簡単に作成します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-view-default-postgres.png)

   [**Easy Create (簡易作成)**] で使用されるデフォルト設定を調べることができます。**[データベース作成後に編集可能]** 列には、データベース作成後に変更できるオプションが表示されます。
   + その列の設定に **[いいえ]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成できます。
   + その列の設定に **[はい]** があり、別の設定が必要な場合は、**[標準作成]** を使用して DB インスタンスを作成するか、DB インスタンスの作成後に設定を変更できます。

1. **[データベースの作成]** を選択します。

   DB インスタンスのマスターユーザー名およびパスワードを表示するには、[**認証情報の詳細の表示**] を選択します。

   表示されるユーザー名とパスワードを使用して、マスターユーザーとして DB インスタンスに接続できます。
**重要**  
マスターユーザーのパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。  
DB インスタンスが有効になった後にマスターユーザーのパスワードを変更する必要がある場合は、そのように DB インスタンスを変更することができます。DB インスタンスの変更の詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

1. **[データベース]** リストで、新しい PostgreSQL DB インスタンスの名前を選択し、詳細を表示します。

   DB インスタンスが使用できるようになるまで、DB インスタンスのステータスは **[作成中]** のままです。  
![\[DB インスタンスの詳細。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Postgres-Launch06.png)

   ステータスが **[Available]** (利用可能) に変わったら、DB インスタンスに接続できます。DB インスタンスクラスとストレージの合計によっては、新しいインスタンスを使用できるようになるまで最長 20 分かかることがあります。

## (オプション) CloudFormation を使用して VPC、EC2 インスタンス、PostgreSQL インスタンスを作成する
<a name="CHAP_GettingStarted.CFN.PostgreSQL"></a>

コンソールを使用して VPC、EC2 インスタンス、PostgreSQL DB インスタンスを作成する代わりに、CloudFormation を使用して Infrastructure as Code として取り扱うことで、AWS リソースをプロビジョンできます。AWS リソースをより小さく管理しやすい単位に整理するには、CloudFormation のネストされたスタック機能を使用できます。詳細については、「[CloudFormation コンソールでのスタックの作成](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」と「[ネストされたスタックの操作](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/using-cfn-nested-stacks.html)」を参照してください。

**重要**  
CloudFormation は無料ですが、CloudFormation が作成するリソースは実動のものです。これらのリソースを終了するまで、標準使用料が発生します。詳細については、「[RDS for PostgreSQL の料金](https://aws.amazon.com//rds/postgresql/pricing)」を参照してください。

CloudFormation コンソールを使用してリソースを作成するには、以下のステップを実行します。
+ CloudFormation テンプレートをダウンロードする
+ CloudFormation を使用してリソースを設定する

### CloudFormation テンプレートをダウンロードする
<a name="CHAP_GettingStarted.CFN.PostgreSQL.Step1"></a>

CloudFormation テンプレートは、スタックに作成するリソースに関する設定情報が含まれる JSON または YAML のテキストファイルです。このテンプレートは、RDS インスタンスとともに VPC と踏み台ホストも作成します。

テンプレートファイルをダウンロードするには、次のリンク、[PostgreSQL CloudFormation template](https://github.com/aws-ia/cfn-ps-amazon-rds/blob/main/templates/rds-postgres-main.template.yaml) を開きます。

この Github ページで、**[Download raw file] ボタンをクリックしてテンプレートの YAML ファイルを保存します。

### CloudFormation を使用してリソースを設定する
<a name="CHAP_GettingStarted.CFN.PostgreSQL.Step2"></a>

**注記**  
このプロセスを開始する前に、AWS アカウント に EC2 インスタンスのキーペアがあることを確認してください。詳細については、「[Amazon EC2 キーペアおよび Linux インスタンス](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/ec2-key-pairs.html)」を参照してください。

CloudFormation テンプレートを使用する場合は、適切なパラメータを選択して、リソースが正しく作成されていることを確認する必要があります。以下のステップを実行します。

1. AWS マネジメントコンソール にサインインし、CloudFormation コンソール ([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)) を開きます。

1. **[Create Stack]** (スタックの作成) を選択します。

1. [テンプレートの指定] セクションで、**[コンピュータからテンプレートファイルをアップロード]** を選択し、**[次へ]** をクリックします。

1. **[スタックの詳細を指定]** ページで、次のパラメータを設定します。

   1. **[スタック名]** は **[PostgreSQLTestStack]** に設定します。

   1. **[パラメータ]** で、3 つのアベイラビリティーゾーンを選択して、**[アベイラビリティーゾーン]** を設定します。

   1. **[Linux 踏み台ホスト設定]** で、**[キー名]** に EC2 インスタンスにログインするキーペアを選択します。

   1. **[Linux 踏み台ホスト設定]** で、**[許可された IP 範囲]** を IP アドレスに設定します。Secure Shell (SSH) を使用して VPC 内の EC2 インスタンスに接続するには、[https://checkip.amazonaws.com](https://checkip.amazonaws.com) のサービスを使用してパブリック IP アドレスを確認します。IP アドレスの例は 192.0.2.1/32 です。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリック EC2 インスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使った EC2 インスタンスへのアクセスを承認します。

   1. **[Database General configuration]** で、**[データベースインスタンスクラス]** を **[db.t3.micro]** に設定します。

   1. **[データベース名]** を **database-test1** に設定します。

   1. **[データベースマスターユーザー名]** には、PDB のマスターユーザー名を入力します。

   1. このチュートリアルでは、**[Secrets Manager で DB マスターユーザーパスワードを管理]** を `false` に設定します。

   1. **[データベースパスワード]** には、任意のパスワードを設定します。このパスワードは、チュートリアルの他の手順のために覚えておいてください。

   1. **[Database Storage configuration]** で、**[Database storage type]** を **[gp2]** に設定します。

   1. **[Database Monitoring configuration]** で、**[Enable RDS Performance Insights]** を false に設定します。

   1. その他の設定はすべてデフォルトの値のままにします。**[次へ]** をクリックして続行します。

1. **[スタックオプションの設定]** ページでは、すべてのデフォルトオプションをそのまま使用します。**[次へ]** をクリックして続行します。

1. **[スタックの確認]** ページで、データベースと Linux 踏み台ホストのオプションを確認した後、**[送信]** をクリックします。

スタックの作成プロセスが完了したら、**BastionStack と **RDSNS という名前のスタックを確認して、データベースへの接続に必要な情報をメモします。詳細については、「[AWS マネジメントコンソール での CloudFormation スタックデータとリソースの表示](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-view-stack-data-resources.html)」を参照してください。

## PostgreSQL DB インスタンスへの接続
<a name="CHAP_GettingStarted.Connecting.PostgreSQL"></a>

pgadmin または psql を使用して DB インスタンスに接続できます。この例では、psql コマンドラインクライアントを使用して PostgreSQL DB インスタンスに接続する方法について説明します。

**psql を使用して PostgreSQL DB インスタンスに接続するには**

1. DB インスタンスのエンドポイント (DNS 名) とポート番号を見つけます。

   1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

   1. Amazon RDS コンソールの右上で、DB インスタンスの AWS リージョン を選択します。

   1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

   1. PstgreSQL DB インスタンス名を選択して、詳細を表示します。

   1. **接続とセキュリティ** タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。  
![\[PostgreSQL DB インスタンスに接続します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/PostgreSQL-endpoint.png)

1. 「*Amazon EC2 ユーザーガイド*」の「[Linux インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

   SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例えば、`ec2-database-connect-key-pair.pem` が Linux の `/dir1` に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が `ec2-12-345-678-90.compute-1.amazonaws.com` であるとします。SSH コマンドは次のようになります。

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。これを行うには、次のコマンドを使用します。
**注記**  
`-y` オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

   ```
   sudo dnf update -y
   ```

1. PostgreSQL の psql コマンドラインクライアントを Amazon Linux 2023 にインストールするには、次のコマンドを実行します。

   ```
   sudo dnf install postgresql15
   ```

1. PostgreSQL DB インスタンスに接続します。例えば、クライアントコンピュータのコマンドプロンプトで、次のコマンドを入力します。このアクションにより、psql クライアントを使用して、PostgreSQL DB インスタンスに接続できます。

   `endpoint` の DB インスタンスエンドポイント (DNS 名) に置き換え、`postgres` のために接続するデータベース名 `--dbname` を、`postgres` に使用したマスターユーザー名に置き換えます。パスワードの入力を求められたときに使用したマスターパスワードを入力します。

   ```
   psql --host=endpoint --port=5432 --dbname=postgres --username=postgres
   ```

   ユーザーのパスワードを入力すると、次のような出力が表示されます。

   ```
   psql (14.3, server 14.6)
   SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
   Type "help" for help.
   
   postgres=>
   ```

   PostgreSQL DB インスタンスへの接続の詳細については、「[PostgreSQL データベースエンジンを実行する DB インスタンスへの接続](USER_ConnectToPostgreSQLInstance.md)」を参照してください。DB インスタンスに接続できない場合は、「[RDS for PostgreSQL インスタンスへの接続に関するトラブルシューティング](USER_ConnectToPostgreSQLInstance.Troubleshooting.md)」を参照してください。

   セキュリティのためには、暗号化された接続を使用することがベストプラクティスです。クライアントとサーバーが同じ VPC にあり、ネットワークが信頼できる場合に限り、暗号化されていない PostgreSQL 接続を使用します。暗号化された接続の使用については、「[SSL 経由での PostgreSQL DB インスタンスへの接続](PostgreSQL.Concepts.General.SSL.md#PostgreSQL.Concepts.General.SSL.Connecting)」を参照してください。

1. SQL コマンドを実行する。

   例えば、次の SQL コマンドは、現在の日付と時刻を表示します。

   ```
   SELECT CURRENT_TIMESTAMP;
   ```

## EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.Deleting.PostgreSQL"></a>

作成したサンプル EC2 インスタンスと DB インスタンスに接続して、探索したら、料金がこれ以上発生しないように、それらを削除します。

CloudFormation を使用してリソースを作成した場合は、このステップをスキップして次のステップに進みます。

**EC2 インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. EC2 インスタンスを選択し、**[インスタンスの状態]、[インスタンスの終了]** の順に選択します。

1. 確認を求めるメッセージが表示されたら、[**Terminate (終了)**] を選択してください。

EC2 インスタンスの削除の詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスの終了](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)」を参照してください。

**最終的な DB スナップショットを作成しないで DB インスタンスを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 削除する DB インスタンスを選択します。

1. [**アクション**] で、[**削除**] を選択します。

1. **[最終スナップショットを作成]** と **[自動バックアップの保持]** をクリアします。

1. 確認を完了し、**[削除]** を選択します。

## (オプション) CloudFormation で作成された EC2 インスタンスと DB インスタンスを削除する
<a name="CHAP_GettingStarted.DeletingCFN.PostgreSQL"></a>

CloudFormation を使用してリソースを作成した場合は、サンプル EC2 インスタンスと DB インスタンスに接続して確認を済ませた後、それ以上料金が発生しないように、CloudFormation スタックを削除します。

**CloudFormation リソースを削除するには**

1. CloudFormation コンソールを開きます。

1. CloudFormation コンソールの **[スタック]** ページで、ルートスタック (VPCStack、BastionStack、または RDSNS という名前がついていないスタック) を選択します。

1. **[削除]** を選択します。

1. 確認を求めるメッセージが表示されたら、**[削除]** を選択します。

CloudFormation でのスタックの削除方法の詳細については、「**AWS CloudFormation ユーザーガイド」の「[CloudFormation コンソールでのスタックの削除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)」を参照してください。

## (オプション) DB インスタンスを Lambda 関数に接続する
<a name="CHAP_GettingStarted.ComputeConnect.PostreSQL"></a>

RDS for PostgreSQL DB インスタンスを Lambda サーバーレスコンピューティングリソースに接続することもできます。Lambda 関数を使用すると、インフラストラクチャをプロビジョニングしたり管理したりせずにコードを実行できます。Lambda 関数を使用すると、1 日に 数十件のイベントから 1 秒間に数百件のイベントまで、あらゆる規模のコード実行リクエストに自動的に応答することもできます。詳細については、「[Lambda 関数と DB インスタンスを自動的に接続する](lambda-rds-connect.md)」を参照してください。

# チュートリアル: ウェブサーバーと Amazon RDS DB インスタンスを作成する
<a name="TUT_WebAppWithRDS"></a>

このチュートリアルでは、PHP を使用して Apache ウェブサーバーをインストールする方法と MariaDB、MySQL、または PostgreSQL データベースを作成する方法を示します。ウェブサーバーは Amazon Linux 2023 を使用して Amazon EC2 インスタンスで実行し、MySQL DB インスタンスと PostgreSQL DB インスタンスのいずれかを選択できます。Amazon EC2 インスタンスと DB インスタンスはいずれも、Amazon VPC サービスに基づき、仮想プライベートクラウド (VPC) で実行されます。

**重要**  
AWS アカウントを作成するための料金はかかりません。ただし、このチュートリアルを完了すると、使用する AWS リソースのコストが発生する可能性があります。これらのリソースが不要になった場合は、チュートリアルの完了後に削除できます。

**注記**  
このチュートリアルは Amazon Linux 2023 で機能します。他の Linux のバージョンでは機能しない場合があります。

次のチュートリアルでは、AWS アカウント のデフォルトの VPC、サブネット、およびセキュリティグループを使用する EC2 インスタンスを作成します。このチュートリアルでは、DB インスタンスを作成し、作成した EC2 インスタンスとの接続を自動的にセットアップする方法を示します。次に、EC2 インスタンスにウェブサーバーをインストールする方法を示します。DB インスタンスのエンドポイントを使用して、ウェブサーバーを VPC の DB インスタンスに接続します。

1. [EC2 インスタンスを起動して DB インスタンスに接続する](CHAP_Tutorials.WebServerDB.LaunchEC2.md)

1. [「Amazon RDS DB インスタンスの作成」](CHAP_Tutorials.WebServerDB.CreateDBInstance.md)

1. [EC2 インスタンスにウェブサーバーをインストールします](CHAP_Tutorials.WebServerDB.CreateWebServer.md)

次の図は、チュートリアルが完了した時点の設定を示しています。

![\[単一の VPC のシナリオ\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


**注記**  
チュートリアルを完了すると、VPC 内の各アベイラビリティーゾーンにパブリックサブネットとプライベートサブネットができます。このチュートリアルでは、AWS アカウント にデフォルトの VPC を使用し、EC2 インスタンスと DB インスタンス間の接続を自動的に設定します。このシナリオで代わりに新しい VPC を設定する場合は、[チュートリアル: DB インスタンスで使用する VPC を作成する (IPv4 専用)](CHAP_Tutorials.WebServerDB.CreateVPC.md) のタスクを完了してください。

# EC2 インスタンスを起動して DB インスタンスに接続する
<a name="CHAP_Tutorials.WebServerDB.LaunchEC2"></a>

VPC のパブリックサブネットで Amazon EC2 インスタンスを作成します。

**EC2 インスタンスを起動するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. AWS マネジメントコンソール の右上で、EC2 インスタンスを作成する AWS リージョン を選択します。

1. 次に示すように、[**EC2 ダッシュボード**] を選択し、次に [**インスタンスの作成**] を選択します。  
![\[EC2 ダッシュボード\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_11.png)

1. **[インスタンスを起動]** ページで次の設定を選択します。

   1. **[Name and tags]** (名前とタグ) の、**[Name]** (名前) で、**tutorial-ec2-instance-web-server** と入力します。

   1. **[アプリケーションおよび OS イメージ (Amazon マシンイメージ)]** で、**[Amazon Linux]** を選択し、**[Amazon Linux 2023 AMI]** を選択します。他の選択肢をデフォルトのままにします。  
![\[Amazon Machine Image の選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_12.png)

   1. **[Instance type]** (インスタンスタイプ) で **[t2.micro]** を選択します。

   1. **[Key pair (login)]** (キーペア (ログイン)) で、**[Key pair name]** (キーペア名) を選択して、既存のキーペアを使用します。Amazon EC2 インスタンスの新しい key pair を作成するには、**[Create new key pair]** (新しい key pair を作成する) を選択し、**[Create key pair]** (キーペアを作成する) ウィンドウを使用して作成します。

      新しいキーペアの作成については、「*Amazon EC2 ユーザーガイド*」の「[キーペアの作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair)」を参照してください。

   1. **[Network settings]** (ネットワーク設定) で、次の値を設定し、他の値はデフォルトのままにします。
      + **[Allow SSH traffic from]** (SSH トラフィックを許可) で、EC2 インスタンスへの SSH 接続のソースを選択します。

        表示された IP アドレスが SSH 接続に適している場合は、**[My IP]** (マイ IP)を選択できます。

        それ以外の場合は、Secure Shell (SSH) を使用して VPC の EC2 インスタンスへの接続に使用する IP アドレスを決定します。パブリック IP アドレスを決定するには、別のブラウザウィンドウまたはタブで、[https://checkip.amazonaws.com](https://checkip.amazonaws.com) のサービスを使用できます。IP アドレスの例は `203.0.113.25/32` です。

        多くの場合、インターネットサービスプロバイダー (ISP) 経由、またはファイアウォールの内側から静的 IP アドレスなしで接続することがあります。その場合、クライアントコンピュータが使用する IP アドレスの範囲を確認してください。
**警告**  
SSH アクセスに `0.0.0.0/0` を使用すると、すべての IP アドレスが SSH を使ってパブリックインスタンスにアクセスできるようになります。この方法は、テスト環境で短時間なら許容できますが、実稼働環境では安全ではありません。実稼働環境では、特定の IP アドレスまたは特定のアドレス範囲にのみ、SSH を使ったインスタンスへのアクセスを限定します。
      + **[Allow HTTPs traffic from the internet]** (インターネットからの HTTPs トラフィックを許可する) をオンにします。
      + **[Allow HTTP traffic from the internet]** (インターネットからの HTTP トラフィックを許可する) をオンにします。  
![\[インスタンスの詳細の設定\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_14.png)

   1. 残りのセクションをデフォルト値のままにします。

   1. **Summary** (概要) パネルでインスタンス設定の要約を確認します。準備が完了したら、**[Launch instance]** (インスタンスを起動) を選択してください。

1. **[起動ステータス]** ページで、新しい EC2 インスタンスの ID (例: `i-1234567890abcdef0`) をメモします。  
![\[起動ステータスページの EC2 インスタンス ID。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/getting-started-ec2-id.png)

1. EC2 インスタンス ID を選択して、EC2 インスタンスのリストを開き、EC2 インスタンスを選択します。

1. **[詳細]** タブで、SSH を使用して接続するときに必要な次の値を書き留めます。

   1. **[インスタンスの概要]** で、**[パブリック IPv4 DNS]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 パブリック DNS 名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-public-dns.png)

   1. **[インスタンスの詳細]** で、**[キーペア名]** の値を書き留めます。  
![\[[インスタンス] ページの [詳細] タブにある EC2 キーペア名。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/easy-create-ec2-key-pair.png)

1. インスタンスの **[Instance Status]** (インスタンスのステータス) が **[Running]** (実行中) になるまで続行せずに待ちます。

1. [「Amazon RDS DB インスタンスの作成」](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) を完了します。

# 「Amazon RDS DB インスタンスの作成」
<a name="CHAP_Tutorials.WebServerDB.CreateDBInstance"></a>

ウェブアプリケーションで使用するデータを維持する RDS for MariaDB、RDS for MySQL、または RDS for PostgreSQL DB インスタンスを作成します。

------
#### [ RDS for MariaDB ]

**MariaDB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. AWS マネジメントコンソール の右上にある AWS リージョン を確認します。これは EC2 インスタンスを作成した場所と同じである必要があります。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. **[データベースの作成]** を選択します。

1. **[データベースの作成]** ページで、**[標準作成]** を選択します。

1. **[エンジンのオプション]** で **[MariaDB]** を選択します。  
![\[エンジンタイプの選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial-create-mariadb.png)

1. **[テンプレート]** で、**[無料利用枠]** または **[サンドボックス]** を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。  
![\[テンプレートの選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. **[可用性と耐久性]** セクションで、デフォルト値を使用します。

1. **[設定]** セクションで、これらの値を設定します。
   + **[DB instance identifier]** (DB インスタンス識別子) - **tutorial-db-instance** を入力します。
   + **[Master username]** (マスターユーザー名) — **tutorial\$1user** を入力します。
   + **[Auto generate a password]** (パスワードの自動生成) — オプションはオフのままにします。
   + **[Master password]** (マスターパスワード): パスワードを入力します。
   + **[パスワードの確認]** - パスワードを再入力します。  
![\[[設定] セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. **[Instance configuration]** (インスタンス設定) セクションで、次の値を設定します。
   + **バースト可能クラス (t クラスを含む)**
   + **db.t3.micro**  
![\[[Instance configuration] (インスタンス設定) セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. **[Storage]** (ストレージ) セクションでは、デフォルトのままにします。

1. **[Connectivity]** (接続) セクションで、次の値を設定し、他の値はデフォルトのままにします。
   + **[Compute resource]** (コンピューティングリソース) で、選択してください**[Connect to an EC2 compute resource]** (EC2 コンピューティングリソースに接続する) を選択します。
   + **[EC2 instance]** (EC2 インスタンス) で、以前に作成した **[tutorial-ec2-instance-web-server]** などの EC2 インスタンスを選択します。  
![\[[接続] セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. [**データベース認証**] セクションで、[**パスワード認証**] が選択されていることを確認します。

1. [**Additional configuration (追加設定)**] セクションを開き、[**Initial database name (初期データベース名)**] に **sample** と入力します。その他のオプションについては、デフォルト設定のままにしておきます。

1. MariaDB インスタンスを作成するには、**[データベースを作成]** を選択します。

   新しい DB インスタンスは、**[作成中]** ステータスとして **[データベース]** リストに表示されます。

1. 新しい DB インスタンスの [**ステータス**] が [**Available**] と表示されるまで待ちます。詳細を表示する DB インスタンスの名前を選択します。

1. [**接続とセキュリティ**] セクションで、DB インスタンスの [**エンドポイント**] および [**ポート**] を表示します。  
![\[DB インスタンスの詳細\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   DB インスタンスのエンドポイントとポートを書き留めます。この情報を使用して、ウェブサーバーを DB インスタンスに接続します。

1. [EC2 インスタンスにウェブサーバーをインストールします](CHAP_Tutorials.WebServerDB.CreateWebServer.md) を完了します。

------
#### [ RDS for MySQL ]

**MySQL DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. AWS マネジメントコンソール の右上にある AWS リージョン を確認します。これは EC2 インスタンスを作成した場所と同じである必要があります。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. **[データベースの作成]** を選択します。

1. **[データベースの作成]** ページで、**[標準作成]** を選択します。

1. **[エンジンのオプション]** として、**[MySQL]** を選択します。  
![\[エンジンタイプの選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial-create-mysql.png)

1. **[テンプレート]** で、**[無料利用枠]** または **[サンドボックス]** を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。  
![\[テンプレートの選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. **[可用性と耐久性]** セクションで、デフォルト値を使用します。

1. **[設定]** セクションで、これらの値を設定します。
   + **[DB instance identifier]** (DB インスタンス識別子) - **tutorial-db-instance** を入力します。
   + **[Master username]** (マスターユーザー名) — **tutorial\$1user** を入力します。
   + **[Auto generate a password]** (パスワードの自動生成) — オプションはオフのままにします。
   + **[Master password]** (マスターパスワード): パスワードを入力します。
   + **[パスワードの確認]** - パスワードを再入力します。  
![\[[設定] セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. **[Instance configuration]** (インスタンス設定) セクションで、次の値を設定します。
   + **バースト可能クラス (t クラスを含む)**
   + **db.t3.micro**  
![\[[Instance configuration] (インスタンス設定) セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. **[Storage]** (ストレージ) セクションでは、デフォルトのままにします。

1. **[Connectivity]** (接続) セクションで、次の値を設定し、他の値はデフォルトのままにします。
   + **[Compute resource]** (コンピューティングリソース) で、選択してください**[Connect to an EC2 compute resource]** (EC2 コンピューティングリソースに接続する) を選択します。
   + **[EC2 instance]** (EC2 インスタンス) で、以前に作成した **[tutorial-ec2-instance-web-server]** などの EC2 インスタンスを選択します。  
![\[[接続] セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. [**データベース認証**] セクションで、[**パスワード認証**] が選択されていることを確認します。

1. [**Additional configuration (追加設定)**] セクションを開き、[**Initial database name (初期データベース名)**] に **sample** と入力します。その他のオプションについては、デフォルト設定のままにしておきます。

1. MySQL DB インスタンスを作成するには、[**Create database (データベースの作成)**] を選択します。

   新しい DB インスタンスは、[**作成中**] ステータスとして [**データベース**] リストに表示されます。

1. 新しい DB インスタンスの [**ステータス**] が [**Available**] と表示されるまで待ちます。詳細を表示する DB インスタンスの名前を選択します。

1. [**接続とセキュリティ**] セクションで、DB インスタンスの [**エンドポイント**] および [**ポート**] を表示します。  
![\[DB インスタンスの詳細\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port.png)

   DB インスタンスのエンドポイントとポートを書き留めます。この情報を使用して、ウェブサーバーを DB インスタンスに接続します。

1. [EC2 インスタンスにウェブサーバーをインストールします](CHAP_Tutorials.WebServerDB.CreateWebServer.md) を完了します。

------
#### [ RDS for PostgreSQL ]

**PostgreSQL DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. AWS マネジメントコンソール の右上にある AWS リージョン を確認します。これは EC2 インスタンスを作成した場所と同じである必要があります。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. **[データベースの作成]** を選択します。

1. **[データベースの作成]** ページで、**[標準作成]** を選択します。

1. **[Engine options]** (エンジンオプション) で **PostgreSQL** を選択します。  
![\[エンジンタイプの選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial-create-postgres.png)

1. **[テンプレート]** で、**[無料利用枠]** または **[サンドボックス]** を選択します。**[無料利用枠]** は無料プランアカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。  
![\[テンプレートの選択\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/tutorial-create-template.png)

1. **[可用性と耐久性]** セクションで、デフォルト値を使用します。

1. **[設定]** セクションで、これらの値を設定します。
   + **[DB instance identifier]** (DB インスタンス識別子) - **tutorial-db-instance** を入力します。
   + **[Master username]** (マスターユーザー名) — **tutorial\$1user** を入力します。
   + **[Auto generate a password]** (パスワードの自動生成) — オプションはオフのままにします。
   + **[Master password]** (マスターパスワード): パスワードを入力します。
   + **[パスワードの確認]** - パスワードを再入力します。  
![\[[設定] セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Settings.png)

1. **[Instance configuration]** (インスタンス設定) セクションで、次の値を設定します。
   + **バースト可能クラス (t クラスを含む)**
   + **db.t3.micro**  
![\[[Instance configuration] (インスタンス設定) セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_DB_instance_micro.png)

1. **[Storage]** (ストレージ) セクションでは、デフォルトのままにします。

1. **[Connectivity]** (接続) セクションで、次の値を設定し、他の値はデフォルトのままにします。
   + **[Compute resource]** (コンピューティングリソース) で、選択してください**[Connect to an EC2 compute resource]** (EC2 コンピューティングリソースに接続する) を選択します。
   + **[EC2 instance]** (EC2 インスタンス) で、以前に作成した **[tutorial-ec2-instance-web-server]** などの EC2 インスタンスを選択します。  
![\[[接続] セクション\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Connectivity.png)

1. [**データベース認証**] セクションで、[**パスワード認証**] が選択されていることを確認します。

1. [**Additional configuration (追加設定)**] セクションを開き、[**Initial database name (初期データベース名)**] に **sample** と入力します。その他のオプションについては、デフォルト設定のままにしておきます。

1. PostgreSQL DB インスタンスを作成するには、**[データベースの作成]** を選択します。

   新しい DB インスタンスは、**[作成中]** ステータスとして **[データベース]** リストに表示されます。

1. 新しい DB インスタンスの [**ステータス**] が [**Available**] と表示されるまで待ちます。詳細を表示する DB インスタンスの名前を選択します。

1. [**接続とセキュリティ**] セクションで、DB インスタンスの [**エンドポイント**] および [**ポート**] を表示します。  
![\[DB インスタンスの詳細\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/Tutorial_WebServer_Endpoint_Port_postgres.png)

   DB インスタンスのエンドポイントとポートを書き留めます。この情報を使用して、ウェブサーバーを DB インスタンスに接続します。

1. [EC2 インスタンスにウェブサーバーをインストールします](CHAP_Tutorials.WebServerDB.CreateWebServer.md) を完了します。

------

# EC2 インスタンスにウェブサーバーをインストールします
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer"></a>

[EC2 インスタンスを起動して DB インスタンスに接続する](CHAP_Tutorials.WebServerDB.LaunchEC2.md) で作成した EC2 インスタンスにウェブサーバーをインストールします。ウェブサーバーは、[「Amazon RDS DB インスタンスの作成」](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) で作成した Amazon RDS DB インスタンスに接続します。

## PHP と MariaDB を使用する Apache ウェブサーバーのインストール
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.Apache"></a>

EC2 インスタンスに接続し、ウェブサーバーをインストールします。

**EC2 インスタンスに接続し、PHP を使用して Apache ウェブサーバーをインストールするには**

1. 「*Amazon EC2 ユーザーガイド*」の「[Linux インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)」のステップに従って、先ほど作成した EC2 インスタンスに接続します。

   SSH を使用して EC2 インスタンスに接続することをお勧めします。SSH クライアントユーティリティが Windows、Linux、または Mac にインストールされている場合は、次のコマンド形式でインスタンスに接続できます。

   ```
   ssh -i location_of_pem_file ec2-user@ec2-instance-public-dns-name
   ```

   例えば、`ec2-database-connect-key-pair.pem` が Linux の `/dir1` に保存されていて、EC2 インスタンスのパブリック IPv4 DNS が `ec2-12-345-678-90.compute-1.amazonaws.com` であるとします。SSH コマンドは次のようになります。

   ```
   ssh -i /dir1/ec2-database-connect-key-pair.pem ec2-user@ec2-12-345-678-90.compute-1.amazonaws.com
   ```

1. EC2 インスタンスのソフトウェアを更新して、最新のバグ修正とセキュリティ更新を入手します。これを行うには、次のコマンドを使用します。
**注記**  
`-y` オプションを指定すると、確認メッセージを表示せずに更新をインストールします。インストール前に更新を確認するには、このオプションを省略します。

   ```
   sudo dnf update -y
   ```

1. 更新が完了した後、次のコマンドを使用して、Apache ウェブサーバー、PHP、および MariaDB または PostgreSQL ソフトウェアをインストールします。このコマンドは、複数のソフトウェアパッケージおよび関連する依存関係を同時にインストールします。

------
#### [ MariaDB & MySQL ]

   ```
   sudo dnf install -y httpd php php-mysqli mariadb105
   ```

------
#### [ PostgreSQL ]

   ```
   sudo dnf install -y httpd php php-pgsql postgresql15
   ```

------

   エラーが表示された場合、インスタンスはおそらく Amazon Linux 2023 AMI で起動していません。代わりに Amazon Linux 2 AMI を使用している可能性があります。次のコマンドを使用して、Amazon Linux のバージョンを表示できます。

   ```
   cat /etc/system-release
   ```

   詳細については、「[インスタンスソフトウェアの更新](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-updates.html)」を参照してください。

1. 次に示すコマンドを使用してウェブサーバーを起動します。

   ```
   sudo systemctl start httpd
   ```

   ウェブサーバーが正しくインストールされ、起動されているかどうかをテストできます。これを行うには、ウェブブラウザのアドレスバーに EC2 インスタンスのパブリックドメインネームシステム (DNS) 名を入力します (例: `http://ec2-42-8-168-21.us-west-1.compute.amazonaws.com`)。ウェブサーバーが実行中の場合、Apache テストページが表示されます。

   Apache テストページが表示されない場合は、[チュートリアル: DB インスタンスで使用する VPC を作成する (IPv4 専用)](CHAP_Tutorials.WebServerDB.CreateVPC.md) で作成した VPC セキュリティグループのインバウンドルールを確認してください。インバウンドルールに、ウェブサーバーへの接続に使用する IP アドレスに対する HTTP (ポート 80) アクセスを許可するルールが含まれていることを確認します。
**注記**  
Apache テストページは、ドキュメントのルートディレクトリ `/var/www/html` にコンテンツがないときのみ表示されます。ドキュメントルートディレクトリにコンテンツを追加すると、そのコンテンツが EC2 インスタンスのパブリック DNS アドレスに表示されます。これより前では、Apache のテストページに表示されます。

1. `systemctl` コマンドを使用して、システムがブートするたびにウェブサーバーが起動するように設定します。

   ```
   sudo systemctl enable httpd
   ```

`ec2-user` が Apache ウェブサーバーのデフォルトルートディレクトリにあるファイルを管理できるようにするには、`/var/www` ディレクトリの所有権とアクセス許可を変更します。このタスクを行うには、複数の方法があります。このチュートリアルでは、`ec2-user` を `apache` グループに追加し、`apache` ディレクトリの所有権を `/var/www` グループに付与し、グループへの書き込み権限を割り当てます。

**Apache ウェブサーバーのファイルアクセス許可を設定するには**

1. `ec2-user` ユーザーを `apache` グループに追加します。

   ```
   sudo usermod -a -G apache ec2-user
   ```

1. ログアウトしてアクセス許可を更新して新しい `apache` グループを含めます。

   ```
   exit
   ```

1. 再度ログインし、`apache` コマンドを使用して `groups` グループが存在していることを確認します。

   ```
   groups
   ```

   出力は次のようになります。

   ```
   ec2-user adm wheel apache systemd-journal
   ```

1. `/var/www` ディレクトリとそのコンテンツのグループ所有権を `apache` グループに変更します。

   ```
   sudo chown -R ec2-user:apache /var/www
   ```

1. `/var/www` およびそのサブディレクトリのディレクトリアクセス許可を変更して、グループの書き込みアクセス許可を追加し、後で作成するサブディレクトリのグループ ID を設定します。

   ```
   sudo chmod 2775 /var/www
   find /var/www -type d -exec sudo chmod 2775 {} \;
   ```

1. `/var/www` ディレクトリおよびそのサブディレクトリのファイルごとにアクセス許可を繰り返し変更し、グループの書き込みアクセス許可を追加します。

   ```
   find /var/www -type f -exec sudo chmod 0664 {} \;
   ```

これで、`ec2-user` (および `apache` グループの将来のメンバー) は、Apache ドキュメントルートにファイルを追加、削除、編集できるようになります。これにより、静的ウェブサイトや PHP アプリケーションなどのコンテンツを追加できます。

**注記**  
HTTP プロトコルを実行するウェブサーバーは、送受信したデータのトランスポートセキュリティを提供しません。ウェブブラウザを使用して HTTP サーバーに接続すると、ネットワーク経路上のどこからでも、多くの情報が誰でも閲覧できるようになります。この情報には、アクセスした URL、受信したウェブページのコンテンツ、HTML フォームの内容 (パスワードなど) が含まれます。  
ウェブサーバーを保護するためのベストプラクティスとして、HTTPS (HTTP Secure) のサポートをインストールしてください。このプロトコルでは、SSL/TLS を使用してデータを保護します。詳細については、*Amazon EC2 ユーザーガイド*の「[チュートリアル: Amazon Linux AMI を使用した SSL/TLS の設定](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-ami.html)」を参照してください。

## Apache ウェブサーバーを DB インスタンスに接続する
<a name="CHAP_Tutorials.WebServerDB.CreateWebServer.PHPContent"></a>

次に、Amazon RDS DB インスタンスに接続する Apache ウェブサーバーへのコンテンツを追加します。

**DB インスタンスに接続する Apache ウェブサーバーにコンテンツを追加するには**

1. EC2 インスタンスに接続したまま、ディレクトリを `/var/www` に変更し、`inc` という名前の新しいサブディレクトリを作成します。

   ```
   cd /var/www
   mkdir inc
   cd inc
   ```

1. `inc` という `dbinfo.inc` ディレクトリに新しいファイルを作成し、nano を呼び出して (または任意のテキストエディタで) ファイルを編集します。

   ```
   >dbinfo.inc
   nano dbinfo.inc
   ```

1. `dbinfo.inc` ファイルに次のコンテンツを追加します。ここで、*db\$1instance\$1endpoint* は、DB インスタンス の、ポートのない、DB インスタンスエンドポイントです。
**注記**  
ユーザー名とパスワード情報は、ウェブサーバーのドキュメントルートに含まれていないフォルダに配置することをお勧めします。これにより、セキュリティ情報が公開される可能性が低くなります。  
アプリケーションで `master password` を適切なパスワードに変更してください。

   ```
   <?php
   
   define('DB_SERVER', 'db_instance_endpoint');
   define('DB_USERNAME', 'tutorial_user');
   define('DB_PASSWORD', 'master password');
   define('DB_DATABASE', 'sample');
   ?>
   ```

1. `dbinfo.inc` ファイルを保存して閉じます。nano を使用している場合は、Ctrl\$1S と Ctrl\$1X を使用してファイルを保存して閉じます。

1. ディレクトリを `/var/www/html` に変更します。

   ```
   cd /var/www/html
   ```

1. `html` という `SamplePage.php` ディレクトリに新しいファイルを作成し、nano を呼び出して (または任意のテキストエディタで) ファイルを編集します。

   ```
   >SamplePage.php
   nano SamplePage.php
   ```

1. `SamplePage.php` ファイルに次のコンテンツを追加します。

------
#### [ MariaDB & MySQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
     /* Connect to MySQL and select the database. */
     $connection = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD);
   
     if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
   
     $database = mysqli_select_db($connection, DB_DATABASE);
   
     /* Ensure that the EMPLOYEES table exists. */
     VerifyEmployeesTable($connection, DB_DATABASE);
   
     /* If input fields are populated, add a row to the EMPLOYEES table. */
     $employee_name = htmlentities($_POST['NAME']);
     $employee_address = htmlentities($_POST['ADDRESS']);
   
     if (strlen($employee_name) || strlen($employee_address)) {
       AddEmployee($connection, $employee_name, $employee_address);
     }
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
           <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
           <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
           <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = mysqli_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = mysqli_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   
   </table>
   
   <!-- Clean up. -->
   <?php
   
     mysqli_free_result($result);
     mysqli_close($connection);
   
   ?>
   
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = mysqli_real_escape_string($connection, $name);
      $a = mysqli_real_escape_string($connection, $address);
   
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!mysqli_query($connection, $query)) echo("<p>Error adding employee data.</p>");
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID int(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!mysqli_query($connection, $query)) echo("<p>Error creating table.</p>");
     }
   }
   
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = mysqli_real_escape_string($connection, $tableName);
     $d = mysqli_real_escape_string($connection, $dbName);
   
     $checktable = mysqli_query($connection,
         "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t' AND TABLE_SCHEMA = '$d'");
   
     if(mysqli_num_rows($checktable) > 0) return true;
   
     return false;
   }
   ?>
   ```

------
#### [ PostgreSQL ]

   ```
   <?php include "../inc/dbinfo.inc"; ?>
   
   <html>
   <body>
   <h1>Sample page</h1>
   <?php
   
   /* Connect to PostgreSQL and select the database. */
   $constring = "host=" . DB_SERVER . " dbname=" . DB_DATABASE . " user=" . DB_USERNAME . " password=" . DB_PASSWORD ;
   $connection = pg_connect($constring);
   
   if (!$connection){
    echo "Failed to connect to PostgreSQL";
    exit;
   }
   
   /* Ensure that the EMPLOYEES table exists. */
   VerifyEmployeesTable($connection, DB_DATABASE);
   
   /* If input fields are populated, add a row to the EMPLOYEES table. */
   $employee_name = htmlentities($_POST['NAME']);
   $employee_address = htmlentities($_POST['ADDRESS']);
   
   if (strlen($employee_name) || strlen($employee_address)) {
     AddEmployee($connection, $employee_name, $employee_address);
   }
   
   ?>
   
   <!-- Input form -->
   <form action="<?PHP echo $_SERVER['SCRIPT_NAME'] ?>" method="POST">
     <table border="0">
       <tr>
         <td>NAME</td>
         <td>ADDRESS</td>
       </tr>
       <tr>
         <td>
       <input type="text" name="NAME" maxlength="45" size="30" />
         </td>
         <td>
       <input type="text" name="ADDRESS" maxlength="90" size="60" />
         </td>
         <td>
       <input type="submit" value="Add Data" />
         </td>
       </tr>
     </table>
   </form>
   <!-- Display table data. -->
   <table border="1" cellpadding="2" cellspacing="2">
     <tr>
       <td>ID</td>
       <td>NAME</td>
       <td>ADDRESS</td>
     </tr>
   
   <?php
   
   $result = pg_query($connection, "SELECT * FROM EMPLOYEES");
   
   while($query_data = pg_fetch_row($result)) {
     echo "<tr>";
     echo "<td>",$query_data[0], "</td>",
          "<td>",$query_data[1], "</td>",
          "<td>",$query_data[2], "</td>";
     echo "</tr>";
   }
   ?>
   </table>
   
   <!-- Clean up. -->
   <?php
   
     pg_free_result($result);
     pg_close($connection);
   ?>
   </body>
   </html>
   
   
   <?php
   
   /* Add an employee to the table. */
   function AddEmployee($connection, $name, $address) {
      $n = pg_escape_string($name);
      $a = pg_escape_string($address);
      echo "Forming Query";
      $query = "INSERT INTO EMPLOYEES (NAME, ADDRESS) VALUES ('$n', '$a');";
   
      if(!pg_query($connection, $query)) echo("<p>Error adding employee data.</p>"); 
   }
   
   /* Check whether the table exists and, if not, create it. */
   function VerifyEmployeesTable($connection, $dbName) {
     if(!TableExists("EMPLOYEES", $connection, $dbName))
     {
        $query = "CREATE TABLE EMPLOYEES (
            ID serial PRIMARY KEY,
            NAME VARCHAR(45),
            ADDRESS VARCHAR(90)
          )";
   
        if(!pg_query($connection, $query)) echo("<p>Error creating table.</p>"); 
     }
   }
   /* Check for the existence of a table. */
   function TableExists($tableName, $connection, $dbName) {
     $t = strtolower(pg_escape_string($tableName)); //table name is case sensitive
     $d = pg_escape_string($dbName); //schema is 'public' instead of 'sample' db name so not using that
   
     $query = "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = '$t';";
     $checktable = pg_query($connection, $query);
   
     if (pg_num_rows($checktable) >0) return true;
     return false;
   
   }
   ?>
   ```

------

1. `SamplePage.php` ファイルを保存して閉じます。

1. ウェブブラウザを開いて `http://EC2 instance endpoint/SamplePage.php` (例: `http://ec2-12-345-67-890.us-west-2.compute.amazonaws.com/SamplePage.php`) を参照することで、ウェブサーバーが正常に DB インスタンスに接続していることを確認します。

`SamplePage.php` を使用して、DB インスタンスにデータを追加できます。これで、追加したデータがこのページに表示されます。データがテーブルに挿入されたことを確認するには、Amazon EC2 インスタンスに MySQL をインストールします。その後、DB インスタンスに接続し、テーブルにクエリを実行します。

MySQL クライアントをインストールして DB インスタンスに接続する方法については、[MySQL DB インスタンスへの接続](USER_ConnectToInstance.md) を参照してください。

DB インスタンス の安全性を高めるために、VPC の外部にある出典が DB インスタンスに接続できないことを確認します。

ウェブサーバーとデータベースのテストが完了したら、DB インスタンスと Amazon EC2 インスタンスを削除する必要があります。
+ DBインスタンスを削除するには、[DB インスタンスを削除する](USER_DeleteInstance.md)の手順に従います。最終的なスナップショットを作成する必要はありません。
+ Amazon EC2 インスタンスを終了するには、*Amazon EC2 ユーザーガイド*の「[インスタンスの終了](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)」の手順に従います。

# チュートリアル: Lambda 関数を使用して Amazon RDS にアクセスする
<a name="rds-lambda-tutorial"></a>

このチュートリアルでは、Lambda 関数を使用して、[Amazon Relational Database Service](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) (Amazon RDS) データベースに RDS プロキシ経由でデータを書き込みます。Lambda 関数は、メッセージが追加されるたびに Amazon Simple Queue Service (Amazon SQS) キューからレコードを読み取り、データベース内のテーブルに新しい項目を書き込みます。この例では、AWS マネジメントコンソール を使用してキューにメッセージを手動で追加します。次の図は、チュートリアルを完了するために使用する AWS リソースを示しています。

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_1.png)


Amazon RDS では、Microsoft SQL Server、MariaDB、MySQL、Oracle Database、PostgreSQL などの一般的なデータベース製品を使用して、マネージドリレーショナルデータベースをクラウドで実行できます。Lambda を使用してデータベースにアクセスすると、ウェブサイトに新規顧客を登録するなどのイベントに応じてデータを読み書きできます。関数、データベースインスタンス、およびプロキシは、需要の高い時期に合わせて自動的にスケーリングされます。

このチュートリアルを完了するには、次のタスクを実行します。

1. RDS for MySQL データベースインスタンスとプロキシを AWS アカウント のデフォルト VPC で起動します。

1. データベースに新しいテーブルを作成して、データを書き込む Lambda 関数を作成してテストします。

1. Amazon SQS キューを作成して、新しいメッセージが追加されるたびに Lambda 関数を呼び出すように設定します。

1. AWS マネジメントコンソール を使用してキューにメッセージを追加し、CloudWatch ログで結果をモニタリングすることによって、セットアップ全体をテストします。

これらの手順を実行することで、次のことが理解できます。
+ Amazon RDS を使用してデータベースインスタンスとプロキシを作成し、Lambda 関数をプロキシに接続する方法。
+ Lambda を使用して Amazon RDS データベースでの作成および読み取りオペレーションを実行する方法。
+ Amazon SQS を使用して Lambda 関数を呼び出す方法。

AWS マネジメントコンソール または AWS Command Line Interface(AWS CLI) を使って、このチュートリアルを完了できます。

## 前提条件
<a name="vpc-rds-prereqs"></a>

開始する前に、以下のセクションのステップを完了してください。
+ [AWS アカウントへのサインアップ](CHAP_SettingUp.md#sign-up-for-aws)
+ [管理アクセスを持つユーザーを作成する](CHAP_SettingUp.md#create-an-admin)

## Amazon RDS DB インスタンスを作成する
<a name="vpc-rds-create-RDS-instance"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step1.png)


Amazon RDS DB インスタンスは、AWS クラウド で実行される分離されたデータベース環境です。インスタンスには、ユーザーが作成した 1 つ以上のデータベースを含めることができます。特に指定しない限り、Amazon RDS は、AWS アカウント に含まれるデフォルトの VPC に新しいデータベースインスタンスを作成します。Amazon VPC の詳細については、「[Amazon Virtual Private Cloud ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)」を参照してください。

このチュートリアルでは、AWS アカウントのデフォルト VPC に新しいインスタンスを作成し、そのインスタンスに `ExampleDB` という名前のデータベースを作成します。AWS マネジメントコンソール または AWS CLI のいずれかを使用して、DB インスタンスとデータベースを作成できます。

**データベースインスタンスを作成するには**

1. Amazon RDS コンソールを開き、**[データベースの作成]** を選択します。

1. **[標準作成]** オプションを選択したままにし、**[エンジンのオプション]** で **[MySQL]** を選択します。

1. **[テンプレート]** で、**[無料利用枠]** または **[サンドボックス]** を選択します。**[無料利用枠]** は無料利用枠アカウントに表示されます。**[サンドボックス]** は有料プランアカウントに表示されます。

1. **[設定]** で、**[DB インスタンス識別子]** に **MySQLForLambda** を入力します。

1. 以下を実行して、ユーザー名とパスワードを設定します。

   1. **[認証情報の設定]** で、**[マスターユーザー名]** の設定を `admin` のままにします。

   1. **[マスターパスワード]** には、データベースにアクセスするためのパスワードを入力して確認します。

1. 次の操作を実行して、データベース名を指定します。
   + 残りのデフォルトオプションはすべて選択したままにして、**[追加設定]** セクションまで下にスクロールします。
   + このセクションを展開し、**[最初のデータベース名]** として **ExampleDB** を入力します。

1. 残りのデフォルトオプションはすべて選択したままにして、**[データベースの作成]** を選択します。

## Lambda 関数とプロキシを作成する
<a name="auto-create-Lambda"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step2.png)


RDS コンソールを使用して、データベースと同じ VPC に Lambda 関数とプロキシを作成できます。

**注記**  
これらの関連リソースは、データベースの作成が完了し、**[使用可能]** ステータスのときにのみ作成できます。

**関連する関数とプロキシを作成するには**

1. **[データベース]** ページから、データベースが **[使用可能]** ステータスかどうかを確認します。その場合は、次のステップに進みます。そうでない場合は、データベースが使用可能になるまで待ちます。

1. データベースを選択し、**[アクション]** から **[Lambda 接続をセットアップする]** を選択します。

1. **[Lambda 接続をセットアップする]** ページで、**[新しい関数の作成]** を選択します。

   **[新しい Lambda 関数名]** を **LambdaFunctionWithRDS** に設定します。

1. **[RDS プロキシ]** セクションで、**[RDS プロキシを使用して接続]** オプションを選択します。さらに、**[新しいプロキシの作成]** を選択します。
   + **[データベース認証情報]** として、**[データベースのユーザー名とパスワード]** を選択します。
   + **[ユーザー名]** として、`admin` と指定します。
   + **[パスワード]** として、データベースインスタンスのために作成したパスワードを入力します。

1. **[セットアップ]** を選択して、プロキシと Lambda 関数の作成を完了します。

ウィザードがセットアップを完了し、新しい関数を確認するための Lambda コンソールへのリンクが表示されます。Lambda コンソールに切り替える前に、プロキシエンドポイントをメモしておきます。

## 関数実行ロールを作成するには
<a name="vpc-rds-create-execution-role"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step3.png)


Lambda 関数を作成する前に、関数に必要なアクセス権限を与える実行ロールを作成します。このチュートリアルでは、Lambda 二は、データベースインスタンスを含んでいる VPC へのネットワーク接続を管理し、Amazon SQS キューからメッセージをポーリングするためのアクセス許可が必要です。

Lambda 関数に必要なアクセス権限を付与するために、このチュートリアルでは IAM 管理ポリシーを使用します。これらは多くの一般的なユースケースに許可を付与するポリシーであり、AWS アカウントで利用できます。管理ポリシーの使用の詳細については、「[ポリシーのベストプラクティス](security_iam_id-based-policy-examples.md#security_iam_service-with-iam-policy-best-practices)」を参照してください。

**Lambda 実行ロールを作成するには**

1. IAM コンソールの [[ロール]](https://console.aws.amazon.com/iamv2/home#/roles) ページを開いて、**[ロールの作成]** を選択します。

1. **[信頼されるエンティティタイプ]** として、**[AWS サービス]** を選択し、**[ユースケース]** として **[Lambda]** を選択します。

1. [**次へ**] を選択します。

1. 次の手順を実行して IAM 管理ポリシーを追加します。

   1. 検索ボックスで **AWSLambdaSQSQueueExecutionRole** を検索します。

   1. 結果リストで、ロールの横にあるチェックボックスを選択し、**[フィルターをクリア]** を選択します。

   1. 検索ボックスで **AWSLambdaVPCAccessExecutionRole** を検索します。

   1. 結果リストで、ロールの横にあるチェックボックスをオンにし、**[次へ]** を選択します。

1. **[ロール名]** には、**lambda-vpc-sqs-role** を入力して **[ロールの作成]** を選択します。

このチュートリアルの後半で、先ほど作成した実行ロールの Amazon リソースネーム (ARN) が必要になります。

**実行ロール ARN を確認するには**

1. IAM コンソールの [[ロール]](https://console.aws.amazon.com/iamv2/home#/roles) ページを開き、ロール (`lambda-vpc-sqs-role`) を選択します。

1.  **[概要]** セクションに表示されている **[ARN]** をコピーします。

## Lambda デプロイパッケージを作成する
<a name="vpc-rds-create-deployment-package"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step4.png)


次の Python コードの例では、[PyMySQL](https://pymysql.readthedocs.io/en/latest/) パッケージを使用してデータベースへの接続を開始します。関数を初めて呼び出すと、`Customer` という新しいテーブルも作成されます。このテーブルは次のスキーマを使用しており、ここで `CustID` はプライマリキーです。

```
Customer(CustID, Name)
```

また、この関数は PyMySQL を使用してこのテーブルにレコードを追加します。この関数は、Amazon SQS キューに追加するメッセージで指定された顧客 ID と名前を使用してレコードを追加します。

このコードは、ハンドラー関数の外部でデータベースへの接続を作成します。初期化コードで接続を作成すると、その後の関数の呼び出しで接続を再利用できるようになり、パフォーマンスが向上します。本番アプリケーションでは、[プロビジョニングされた同時実行性](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html)を使用して、要求された数のデータベース接続を初期化することもできます。関数が呼び出されると、これらの接続はすぐに利用できます。

```
import sys
import logging
import pymysql
import json
import os

# rds settings
user_name = os.environ['USER_NAME']
password = os.environ['PASSWORD']
rds_proxy_host = os.environ['RDS_PROXY_HOST']
db_name = os.environ['DB_NAME']

logger = logging.getLogger()
logger.setLevel(logging.INFO)

# create the database connection outside of the handler to allow connections to be
# re-used by subsequent function invocations.
try:
        conn = pymysql.connect(host=rds_proxy_host, user=user_name, passwd=password, db=db_name, connect_timeout=5)
except pymysql.MySQLError as e:
    logger.error("ERROR: Unexpected error: Could not connect to MySQL instance.")
    logger.error(e)
    sys.exit(1)

logger.info("SUCCESS: Connection to RDS for MySQL instance succeeded")

def lambda_handler(event, context):
    """
    This function creates a new RDS database table and writes records to it
    """
    message = event['Records'][0]['body']
    data = json.loads(message)
    CustID = data['CustID']
    Name = data['Name']

    item_count = 0
    sql_string = f"insert into Customer (CustID, Name) values(%s, %s)"

    with conn.cursor() as cur:
        cur.execute("create table if not exists Customer ( CustID  int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (CustID))")
        cur.execute(sql_string, (CustID, Name))
        conn.commit()
        cur.execute("select * from Customer")
        logger.info("The following items have been added to the database:")
        for row in cur:
            item_count += 1
            logger.info(row)
    conn.commit()

    return "Added %d items to RDS for MySQL table" %(item_count)
```

**注記**  
この例では、データベースアクセス認証情報は環境変数として保存されます。本番アプリケーションでは、より安全なオプションとして [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) を使用することをお勧めします。Lambda 関数が VPC にある場合、Secrets Manager に接続するには VPC エンドポイントを作成する必要があります。詳細については、「[仮想プライベートクラウド内で Secrets Manager サービスに接続する方法](https://aws.amazon.com/blogs/security/how-to-connect-to-aws-secrets-manager-service-within-a-virtual-private-cloud/)」を参照してください。

 PyMySQL の依存関係を関数コードに含めるには、.zip デプロイパッケージを作成します。次のコマンドは、Linux、macOS、または Unix で動作します。

**.zip デプロイパッケージを作成するには**

1. サンプルコードをファイル名 `lambda_function.py` で保存します。

1. `lambda_function.py` ファイルを作成したのと同じディレクトリに、`package` という名前の新しいディレクトリを作成し、PyMySQL ライブラリをインストールします。

   ```
   mkdir package
   pip install --target package pymysql
   ```

1. アプリケーションコードと PyMySQL ライブラリを含む zip ファイルを作成します。Linux または MacOS では、次の CLI コマンドを実行します。Windows では、任意の zip ツールを使用して、`lambda_function.zip` ファイルを作成します。`lambda_function.py` ソースコードファイルと依存関係を含むフォルダは、.zip ファイルのルートにインストールする必要があります。

   ```
   cd package
   zip -r ../lambda_function.zip .
   cd ..
   zip lambda_function.zip lambda_function.py
   ```

   また、Python 仮想環境を使用してデプロイパッケージを作成することもできます。「[.zip ファイルアーカイブで Python Lambda 関数をデプロイする](https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-create-package-with-dependency)」を参照してください。

## Lambda 関数を更新する
<a name="vpc-rds-update-function"></a>

作成した.zip パッケージを使用して、Lambda コンソールで Lambda 関数を更新します。関数がデータベースにアクセスできるようにするには、アクセス認証情報を使用して環境変数を設定する必要もあります。

**Lambda 関数を更新するには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開き、関数 `LambdaFunctionWithRDS` を選択します。

1. **[ランタイム設定]** タブで、**[編集]** を選択し、関数の **[ランタイム]** を **[Python 3.10]** に変更します。

1. **[ハンドラー]** を `lambda_function.lambda_handler` に変更します。

1. **[コード]** タブで、**[アップロード元]**、**[.zip ファイル]** の順に選択します。

1. 前の段階で作成した `lambda_function.zip` ファイルを選択してから、**[保存]** を選択します。

ここで、以前に作成した実行ロールで関数を設定します。これにより、データベースインスタンスにアクセスして Amazon SQS キューをポーリングするために必要なアクセス権限が関数に付与されます。

**関数の実行ロールを設定するには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページで、**[設定]**、**[アクセス権限]** の順に選択します。

1. **[実行ロール]** で、**[編集]** を選択します。

1. **[既存のロール]** で、実行ロール (`lambda-vpc-sqs-role`) を選択します。

1. **[保存]** を選択します。

**関数の環境変数を設定するには**

1. Lambda コンソールの「[関数](https://console.aws.amazon.com/lambda/home#/functions)」ページで、**[Configuration]** タブ、**[Environment variables]** の順に選択します。

1. **[編集]** を選択します。

1. データベースアクセス認証情報を追加するには、以下を実行してください。

   1. **[Add environment variable]** を選択し、**[Key]** には **USER\$1NAME**、**[Value]** には **admin** を入力します。

   1. **[Add environment variable]** を選択し、**[Key]** には **DB\$1NAME**、**[Value]** には **ExampleDB** を入力します。

   1. **[環境変数の追加]** を選択し、**[キー]** には **PASSWORD**、**[値]** にはデータベースの作成時に選択したパスワードを入力します。

   1. **[環境変数の追加]** を選択し、**[キー]** として **RDS\$1PROXY\$1HOST** を入力し、**[値]** として、先程メモした RDS プロキシのエンドポイントを入力します。

   1. **[保存]** を選択します。

## コンソールで Lambda 関数をテストする
<a name="vpc-rds-test-function"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step5.png)


Lambda コンソールを使用して関数をテストできるようになりました。チュートリアルの最終段階で Amazon SQS を使用して関数を呼び出したときに、関数が受け取るデータを模倣するテストイベントを作成します。テストイベントには、関数が作成する `Customer` テーブルに追加する顧客 ID と顧客名を指定する JSON オブジェクトが含まれています。

**Lambda 関数をテストする**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開き、関数を選択します。

1. **[テスト]** セクションを選択します。

1. **[新しいイベントを作成]** を選択し、イベント名として **myTestEvent** と入力します。

1. 次のコードを **[イベント JSON]** にコピーし、**[保存]** を選択します。

   ```
   {
     "Records": [
       {
         "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d",
         "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...",
         "body": "{\n     \"CustID\": 1021,\n     \"Name\": \"Martha Rivera\"\n}",
         "attributes": {
           "ApproximateReceiveCount": "1",
           "SentTimestamp": "1545082649183",
           "SenderId": "AIDAIENQZJOLO23YVJ4VO",
           "ApproximateFirstReceiveTimestamp": "1545082649185"
         },
         "messageAttributes": {},
         "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
         "eventSource": "aws:sqs",
         "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue",
         "awsRegion": "us-west-2"
       }
     ]
   }
   ```

1. **[テスト]** を選択します。

**[実行結果]** タブに、次の **[関数ログ]** に表示されているのと同様の結果が表示されます。

```
[INFO] 2023-02-14T19:31:35.149Z bdd06682-00c7-4d6f-9abb-89f4bbb4a27f The following items have been added to the database:
[INFO] 2023-02-14T19:31:35.149Z bdd06682-00c7-4d6f-9abb-89f4bbb4a27f (1021, 'Martha Rivera')
```

## Amazon SQS キュー を作成する
<a name="vpc-rds-create-queue"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step6.png)


Lambda 関数と Amazon RDS データベースインスタンスの統合が正常にテストされました。ここで、チュートリアルの最終段階で Lambda 関数を呼び出すために使用する Amazon SQS キューを作成します。

**Amazon SQS を作成するには (コンソール)**

1. Amazon SQS コンソールの [[キュー]](https://console.aws.amazon.com/sqs/v2/home#/queues) ページを開き、**[キューの作成]** を選択します。

1. **[タイプ]** は **[標準]** のままにし、キューの名前に **LambdaRDSQueue** と入力します。

1. デフォルトオプションはすべて選択したままにして、**[キューの作成]** を選択します。

## Lambda 関数を呼び出すためのイベントソースマッピングを作成する
<a name="vpc-rds-create-event-source-mapping"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step7.png)


[イベントソースマッピング](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html)は、ストリームまたはキューからアイテムを読み取り、Lambda 関数を呼び出す Lambda リソースです。イベントソースマッピングを設定するときに、ストリームまたはキューからのレコードが 1 つのペイロードにまとめられるようにバッチサイズを指定できます。この例では、キューにメッセージを送信するたびに Lambda 関数が呼び出されるように、バッチサイズを 1 に設定します。イベントソースマッピングは、AWS CLI または Lambda コンソールを使用して設定できます。

**イベントソースマッピングを作成するには (コンソール)**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開き、(`LambdaFunctionWithRDS`) 関数を選択します。

1. **[関数の概要]** セクションで、**[トリガーを追加]** を選択します。

1. ソースとして **[Amazon SQS]** を選択し、キューの名前 (`LambdaRDSQueue`) を選択します。

1. **[バッチサイズ]** に、**1** を入力します。

1. 他のオプションはすべてデフォルト値のままにして、**[追加]** を選択します。

これで Amazon SQS キューにメッセージを追加して、セットアップ全体をテストする準備ができました。

## セットアップのテストとモニタリング
<a name="vpc-rds-test-setup"></a>

![\[\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/TUT_Lambda_step8.png)


セットアップ全体をテストするには、コンソールを使用して Amazon SQS キューにメッセージを追加します。次に、CloudWatch Logs を使用して、Lambda 関数が予想どおりにレコードをデータベースに書き込んでいることを確認します。

**セットアップをテストおよびモニタリングするには**

1. Amazon SQS コンソールの [[キュー]](https://console.aws.amazon.com/sqs/v2/home#/queues) ページを開き、キュー (`LambdaRDSQueue`) を選択します。

1. **[メッセージを送受信]** を選択し、**[メッセージの送信]** セクションの **[メッセージ本文]** に次の JSON を貼り付けます。

   ```
   {
       "CustID": 1054,
       "Name": "Richard Roe"
   }
   ```

1. **[メッセージの送信]** を選択します。

   メッセージをキューに送信すると、Lambda はイベントソースマッピングを通じて関数を呼び出します。Lambda が予想どおりに関数を呼び出したことを確認するには、CloudWatch Logs を使用して、関数が顧客名と ID をデータベーステーブルに書き込んだことを確認します。

1. CloudWatch コンソールの [[ロググループ]](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups) ページを開き、関数のロググループ (`/aws/lambda/LambdaFunctionWithRDS`) を選択します。

1. **[ログストリーム]** セクションで、最新のログストリームを選択します。

   テーブルには、関数の呼び出しごとに 1 つずつ、合計 2 つの顧客レコードが含まれている必要があります。ログストリームには、次に似たメッセージが表示されます。

   ```
   [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 The following items have been added to the database:
   [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 (1021, 'Martha Rivera')
   [INFO] 2023-02-14T19:06:43.873Z 45368126-3eee-47f7-88ca-3086ae6d3a77 (1054, 'Richard Roe')
   ```

## リソースのクリーンアップ
<a name="rds-tutorial-cleanup"></a>

このチュートリアル用に作成したリソースは、保持しない場合は削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。

**Lambda 関数を削除するには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

1. 作成した関数を選択します。

1. [** Actions**] で、[**Delete **] を選択します。

1. [**削除**] を選択します。

**実行ロールを削除するには**

1. IAM コンソールの [[ロール]](https://console.aws.amazon.com/iam/home#/roles) ページを開きます。

1. 作成した実行ロールを選択します。

1. [**ロールの削除**] を選択します。

1. [**はい、削除します**] を選択します。

**MySQL DB インスタンスを削除するには**

1. Amazon RDS コンソールの [[Databases](https://console.aws.amazon.com//rds/home#databases:)] (データベース) ページを開きます。

1. 作成したデータベースを選択します。

1. [** Actions**] で、[**Delete **] を選択します。

1. [**Create final snapshot**] (最終スナップショットの作成) のチェックボックスをオフにします。

1. テキストボックスに「**delete me**」と入力します。

1. **[削除]** を選択します。

**Amazon SQS キューを削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon SQS コンソール ([https://console.aws.amazon.com/sqs/](https://console.aws.amazon.com/sqs/)) を開きます。

1. 作成したキューを選択します。

1. [**削除**] を選択します。

1. テキストボックスに「**delete**」と入力します。

1. **[Delete]** (削除) をクリックします。