Amazon Web Services ブログ

Amazon RDS for SQL Server での Microsoft SQL Server Reporting Services の設定

Microsoft SQL Server Reporting Services (SSRS) を Amazon Relational Database Service (RDS) for SQL Server DB インスタンスで直接実行できるようになりました。SSRS は、SQL Server 2017 Standard または Enterprise エディションの シングル AZ またはマルチ AZ インスタンスでアクティブ化できます。SSRS を Amazon Elastic Compute Cloud (Amazon EC2) で実行する場合は、SSRS を Amazon RDS for SQL Server で直接実行することによってコストを節約できるようになります。Amazon RDS for SQL Server は、SQL Server データベースと同じ RDS DB インスタンスで Report Server Web ポータルをホストします。また、SSRS 暗号化キーの管理、ボタンをクリックするだけで実行できる SSRS 設定の変更、ソフトウェアのパッチ適用、および SSRS に高可用性を提供する Amazon Relational Database Service (Amazon RDS) マルチ AZ 構成などのメリットを得ることもできます。

SSRS は、レポートの生成と配布のためのツールです。SSRS のインターフェイスは Web ポータルで、レポートを作成、表示、編集、および削除するために活用できます。レポートは、物事を判断するためにデータを視覚化し、理解することを可能にします。

この記事では、SSRS を使って以下のタスクを実行する方法を説明します。

  • Amazon RDS SQL Server DB インスタンスでの SSRS の有効化
  • SSRS のポートとメモリの設定
  • アクセス許可の付与と取り消し
  • Web ポータルへの接続
  • レポートのデプロイメント
  • SSRS の無効化

前提条件

Amazon RDS for SQL Server で SSRS を設定するには、RDS インスタンスが以下の要件を満たしている必要があります。

  • SQL Server 2017 Standard または Enterprise エディション (14.00.3223.3.v1 以上) である
  • AWS Directory Service for Microsoft Active Directory に参加している

オプショングループの作成と関連付け

RDS インスタンスでの SSRS の有効化はオプショングループを使って行われ、RDS インスタンスのエディションに基づいて、SQL Server 2017 用の既存グループオプションを使用する必要があります。詳細については、「オプショングループを使用する」を参照してください。オプショングループを使って SSRS をアクティブ化するには、以下の手順を実行してください。

  1. Amazon RDS コンソールで [オプショングループ] を選択します。
  2. [オプションの追加] を選択します。
  3. オプション名 には [SSRS] を選択します。
  4. 以下のオプション設定が表示されます。
    • ポート – 予約済みのポートと競合しなければ、1150 から 49152 までの任意の値を設定できます。443 および 80 などの一般的な SSRS ポートは予約されており、Amazon RDS では使用できません。
    • VpcSecurityGroupMembership – DB インスタンスに関連付けられているセキュリティグループを選択します。このセキュリティグループには、設定したポートに SSRS へのインバウンドアクセスを許可するルールが必要です。
    • MAX_MEMORY – SSRS サービスの最大メモリを設定します。SSRS サービスが設定された最大メモリに到達すると、上限を超過しないようにメモリを解放、またはリクエストを拒否しようとします。SSRS の使用状況に応じて、同じインスタンスにある SQL Server データベースエンジンなどのその他アプリケーションの妨げとならない値を検討してください。有効な値は 10~80% です。
  5. [オプションの追加] を選択して、SSRS オプションをオプショングループに関連付けます。
    これで、このオプショングループを RDS インスタンスに関連付けて、SSRS をアクティブ化できるようになりました。

Report Server データベース

SSRS オプションを初めて追加するときは、RDS インスタンスに rdsadmin_ReportServerrdsadmin_ReportServerTempDB の 2 つの新しいデーベースが表示されます。

SSRS は、これらのデータベースを使用するように設定されています。マルチ AZ RDS インスタンスの場合、rdsadmin_ReportServerTempDB がミラーリングされていない、または可用性グループの一部となっていませんが、これは正常です。RDS オートメーションは、フェイルオーバー中、またはホスト交換時にこれらのデータベースを管理して、SSRS サービスに影響が及ばないようにします。

Report Server Web ポータルへの接続

SSRS をオプショングループに追加して、RDS インスタンスに関連付けたら、Report Server Web ポータルに接続できます。Web ポータルには、RDS インスタンスのドメインに参加している任意のコンピュータを使って、ブラウザでアクセスできます。

Web ポータルを表示するには、ドメインユーザーアクセス許可を付与する必要があります。これを実行するには、以下の手順を実行してください。

  1. SSMS を起動します。
  2. SSRS がアクティブ化されている RDS インスタンスの SQL Server エンジンに接続します。
  3. 適切な引数を入力して、ストアドプロシージャを実行します。
    exec msdb.dbo.rds_msbi_task
     @task_type='SSRS_GRANT_PORTAL_PERMISSION',
     @ssrs_group_or_username=N'AD\user'

    AD はドメインの名前で、user は Web ポータルへのアクセスに使用するユーザーまたはグループの名前です。

  4. 以下のコードを使って、ストアドプロシージャのステータスを追跡します。
    SELECT * FROM dbo.rds_fn_task_status(NULL,task_id)

    task_id 値は、タスクの ID です。task_id0 を入力すると、すべてのタスクが表示されます。

以下の画像は、ストアドプロシージャコールの結果です。task_id はカスタマータスク ID、task_type はタスクのタイプ、lifecycle はタスクの状態で、task_info はタスクの状態に関する追加情報を提供します。

タスクの lifecycleSUCCESS である場合は、タスクが完了しており、次の手順に進むことができます。

SSRS は Report Server への接続に HTTPS SSL を使用するため、クライアントインスタンスに Amazon RDS 証明書 をインポートする必要があります。SQL Server での SSL の使用に関する詳細については、「Microsoft SQL Server DB インスタンスでの SSL の使用」を参照してください。

任意のブラウザを使用して、Web ポータルに接続できます。Web ポータルの URL は https://<rds-endpoint>:<port>/Reports です。ここで、<rds-endpoint> は RDS インスタンスのエンドポイント、<port> はオプションの追加時に SSRS に設定したポートです。

SSRS アクセス許可の管理

ドメインユーザーでポータルに接続したら、アイテムレベルのアクセス許可を設定して管理することができます。

  1. ブラウザで Web ポータルを開きます。
  2. ポータルのメインページで [Manage Folder] を選択します。
  3. [Security] タブで、ロール割り当ての追加、編集、および削除を行います。
    ポータルのアクセス許可を付与したユーザーには、すでにコンテンツマネージャーロールがあるはずです。以下のスクリーンショットは、msbiDomain\Admin に対してポータルへのアクセス許可を付与するストアドプロシージャが実行された後の結果です。
    ユーザーまたはグループをさらに追加する場合は、ここから直接実行できるため、ストアドプロシージャは必要ありません。

システムレベルのアクセス許可の削除

SSRS のシステムレベルのアクセス許可は、Web ポータルでは表示できせん。システムレベルの割り当てがあるのは、ストアドプロシージャを使ってポータルへのアクセス許可を付与されたユーザーまたはグループのみです。それらを削除しなければならない場合は、以下のコードを使用して実行する必要があります。

exec msdb.dbo.rds_msbi_task
 @task_type='SSRS_REVOKE_PORTAL_PERMISSION',
 @ssrs_group_or_username=N'AD\user'

ユーザーのシステムレベルのアクセス許可について、lifecycle タスクに SUCCESS が表示されていることを確認してください。これは、ユーザーのアイテムレベルのロール割り当ても削除します。

レポートでの作業

ポータルのアクセス許可が付与されたら、Web ポータルを使ってレポートをデプロイできます。以下のスクリーンショットにあるように、Web ポータルの [Upload] ツールを選択できます。

レポートは、SQL Server Data Tools (SSDT) を使ってデプロイすることも可能です。Report Server プロジェクトを作成して、そのレポートを RDS インスタンスで実行されている SSRS に直接デプロイするには、以下の手順を実行してください。

  1. 以下のスクリーンショットにあるように、SSDT を開いて、新しい Report Server プロジェクトを選択または作成します。
    SSDT は、ストアドプロシージャによって SSRS にアクセス許可が付与された Windows ログインとして開くようにしてください。これは、レポートのデプロイメントが失敗しないようにするためのものです。ユーザーはレポートを直接デプロイするために十分なアクセス許可を持っている必要があるからです。これに加えて、コンテンツマネージャーロールが割り当てられたユーザーも、レポートをデプロイできます。
    レポートをデザインしたら、デプロイメントのターゲットを RDS インスタンスのエンドポイントにすることができます。
  2. [File] を選択します。
  3. [SSRSProject Properties] を選択します。(この記事では、プロジェクトの名前が SSRSProject になっています。)
  4. [TargetServerURL] を、SSRS がリッスンしているポートと /ReportServer が末尾に付けられた RDS インスタンスの HTTPS エンドポイントに設定します (例: https://my-instance-endpoint.amazonaws.com:8443/ReportServer)。
    これで、このソリューションをデプロイすると、レポートが RDS インスタンスの SSRS に直接アップロードされるようになります。

データソースでの作業

レポートでは、SSRS が実行されているものと同じ RDS インスタンスにあるデータベースがデータソースになっている場合があります。データソースにログインするためのレポートの認証情報に Windows 認証を使用すると、認証問題が発生する可能性があります。

この問題は、接続文字列のデータソースがループバックインターフェイス (例: localhost または .)、または RDS インスタンスの完全修飾ドメイン名 (FQDN) に設定されているようにすることで解決できます。RDS インスタンスの FQDN は、ドメインの FQDN が末尾に付けられたインスタンス名です (例えば、my-instance がインスタンス名で、my.domain.com がドメインの名前である my-instance.my.domain.com)。以下のスクリーンショットは、RDS DB インスタンスの FQDN を使ったデータベース testDB へのデータソース接続を示しています

SSRS の無効化

RDS インスタンスで SSRS を実行する必要がなくなった場合は、オプションを削除してサービスを無効化できます。

オプションの削除は Report Server データベースを削除しないため、SSRS に保存したレポートを失うことなく、オプションを安全に削除することが可能です。削除した後で SSRS オプションを追加すると SSRS サービスが再度アクティブ化され、以前アップロードしたすべてのレポートにアクセスできます。

また、SSRS を使用する必要がなくなり、データベースに場所を取らせたくない場合は、Report Server データベースをドロップしてもよいでしょう。この場合は、オプションの削除後に、rdsadmin_ReportServerrdsadmin_ReportServerTempDB の各データベースをドロップするストアドプロシージャを使用できます。以下のコードを参照してください。

exec msdb.dbo.rds_drop_ssrs_databases;

まとめ

この記事では、Amazon RDS for SQL Server で SSRS を設定する方法を説明しました。Amazon EC2 で SSAS を実行する場合は、これらのワークロードを統合して SQL Server データベースと同じ RDS DB インスタンスで実行されるようにすることでコストを節約できます。Report Server Web ポータルを RDS インスタンスでアクティブ化した後は、これを使ってレポートを簡単にデプロイ、保存、およびダウンロードできます。今すぐ AWS マネジメントコンソールで SSRS を試して、コメント欄からご意見およびご経験をお聞かせください。

 

 


著者について

 

Christian Iambrogno は、アマゾン ウェブ サービスのソフトウェア開発エンジニアです。