AWS運用課題解決メモ


EC2からRDS(SQLserverExpress)に接続できない

原因はセキュリティグループでポートが開放できていなかったから。

EC2とRDS(SQLserverExpress)を同じセキュリティグループに変更し、SQLserverのポートを開放することで解決。下記サイトを参考にさせて頂きました。
https://hacknote.jp/archives/39927/

RDS(SQLserverExpress)に作成したDBが削除できない

RDS(SQLserverExpress)ではオンプレのようにsysdba権限が付与できないようで、作成したDB自体の削除ができませんでした。下記の権限を付与することでDB削除可能になったのでメモ。

権限の変更でDBも削除可能に

サーバのプロパティ - 権限 - サーバーロールの変更 に「許可」のチェックを入れるとDBも削除可能となった。

sqlcmd(Oracleで言うところのsqlplus)が使えない

原因はSSMSインストール時に、sqlcmdユーティリティがインストールされないよう仕様が変わっていたから。こちらのサイトを参考に、sqlcmdユーティリティをインストールし、使用できる状態となりました。

定期的にDBのフルバックアップを取りたい

下記のバッチをEC2からキックしてS3にバックアップできることも確認済み。

※事前にIAMユーザーに権限が付与されていることが必要

DB_BACKUP_ALL_RDS.bat

echo off

rem **********************
rem 初期化処理
rem **********************

SET COMPUTERNAME=エンドポイント名
SET UID=ユーザID
SET PASS=パスワード
SET DATABASE=データベース名
SET BASEDIR=%~dp0
SET LOG=%BASEDIR%log\DB_BACKUP_ALL_%date:~0,4%%date:~5,2%%date:~8,2%.log

sqlcmd -S %COMPUTERNAME% -U %UID% -P %PASS% -d %DATABASE% -Q "EXEC [dbo].[USP_DB_BACKUP_ALL];"

Rem SQL実行結果判定
IF %ERRORLEVEL% NEQ 0 GOTO ERROR

REM 正常終了
goto NORMAL

Rem **********************
Rem 正常終了
Rem **********************
:NORMAL
ECHO バッチを正常終了します >> %LOG%
ECHO 終了時刻:%DATE%%TIME% >> %LOG%
ECHO エラーコード:%ERRORLEVEL% >> %LOG%
ECHO ********************** >> %LOG%
EXIT /B

Rem **********************
Rem 異常終了
Rem **********************
:ERROR
ECHO バッチを異常終了します >> %LOG%
ECHO 終了時刻:%DATE%%TIME% >> %LOG%
ECHO エラーコード:%ERRORLEVEL% >> %LOG%
ECHO ********************** >> %LOG%
EXIT /B

echo on

社内からRDSに接続できない(DirectConnect接続済み)

DirectConnectで社内とAWSを接続したが、社内からRDSに接続できない。
RDSのエンドポイントに対してtracertを行ってみると、グローバルIPでRDSに接続を行っており、セキュリティグループの設定で弾かれていることが判明。

RDSのパブリックアクセスをOFFに変更してみる

RDSはエンドポイントの指定しかできない為、ローカルIPからRDSにアクセスする方法が不明であったが、RDSのパブリックアクセスをOFFに変更したところ、ローカルIPで接続するようになった。
内部の動作が不明だが、ローカルIPでエンドポイントに接続するにはRDSのパブリックアクセスがOFFになっている必要がある様子。

以上