

# ステップ 4: デプロイ後の設定
<a name="step-4-post-deployment-configuration"></a>

このセクションでは、デプロイ後にソリューションを設定する際の推奨事項を説明します。

## Amazon S3 バケットのバージョニング、ライフサイクルポリシー、クロスリージョンレプリケーション
<a name="amazon-s3-bucket-versioning-lifecycle-policies-and-cross-region-replication"></a>

このソリューションでは、作成したバケットにライフサイクル設定を適用しません。次の構成を推奨します。
+ 本番デプロイのライフサイクル設定を指定する。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットに S3 ライフサイクル設定を設定する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」を参照してください。
+ ソリューションをデプロイするユースケースに基づいて、Amazon S3 バケットの[バージョニング](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)と[クロスリージョンレプリケーション](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)を有効にする。

## Amazon DynamoDB のバックアップ
<a name="amazon-dynamodb-backups"></a>

このソリューションでは、複数の目的で DynamoDB を使用します (「[このソリューションで使用している AWS のサービス](architecture-details.md#aws-services-in-this-solution)」を参照)。このソリューションでは、作成したテーブルのバックアップは有効にしません。本番デプロイでは、この機能のバックアップを作成することをお勧めします。詳細については、「[DynamoDB テーブルのバックアップ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup.Tutorial.html)」と「[DynamoDB での AWS Backup の使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/backuprestore_HowItWorksAWS.html)」を参照してください。

## Amazon CloudWatch のダッシュボードとアラーム
<a name="amazon-cloudwatch-dashboard-and-alarms"></a>

このソリューションは、CloudWatch にカスタムダッシュボードをデプロイして、カスタムの発行済みメトリクスと AWS サービスメトリクスからグラフをレンダリングします。CloudWatch [アラーム](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)を作成し、ソリューションをデプロイするユースケースに基づいて通知を追加することをお勧めします。

## Amazon CloudWatch Logs
<a name="amazon-cloudwatch-logs"></a>

Lambda ログは有効期限が切れないように設定され、API Gateway ログは有効期限が 10 年に設定されています。各ロググループの有効期限は、企業のレコード保持ポリシーに合わせて更新することができます。

## TLS v1.2 以降の証明書を使用するカスタムウェブドメイン
<a name="custom-web-domains-with-tls-v1.2-or-higher-certificates"></a>

このソリューションは、CloudFront を使用してウェブ UI とエッジ最適化 API Gateway をデプロイします。CloudFront のドメインでは TLS v1.2 以降の証明書は適用されません。[Amazon Route 53](https://aws.amazon.com/route53/) を使用してカスタムドメインを作成する、[AWS Certificate Manager](https://aws.amazon.com/certificate-manager/) を使用して証明書を作成する、または組織に既存の証明書がある場合はその証明書を使用することをお勧めします。

詳細については、[Amazon Route 53 デベロッパーガイド](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)および「[API Gateway で REST API カスタムドメインのセキュリティポリシーを選択する](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-custom-domain-tls-version.html)」を参照してください。

## Amazon Kendra によるスケーリング
<a name="scaling-with-amazon-kendra"></a>

このソリューションでは、Amazon Kendra を使用して、取り込まれたドキュメント全体で NLP を活用したインテリジェント検索を実行できます。大規模なワークロードの場合は、次の CloudFormation パラメータを使用して Amazon Kendra の容量を増やすことができます。


| パラメータ  | デフォルト | 説明  | 
| --- | --- | --- | 
|   [Amazon Kendra additional query capacity](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-capacityunitsconfiguration.html#cfn-kendra-index-capacityunitsconfiguration-querycapacityunits)   |   `0`   |  インデックスの余分なクエリキャパシティおよび [GetQuerySuggestions](https://docs.aws.amazon.com/kendra/latest/dg/API_GetQuerySuggestions.html) キャパシティの量。インデックス用の追加キャパシティユニット 1 つにつき、1 日あたり約 8,000 件のクエリに対応します。  | 
|   [Amazon Kendra additional storage capacity](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-capacityunitsconfiguration.html#cfn-kendra-index-capacityunitsconfiguration-storagecapacityunits)   |   `0`   |  インデックスの余分なストレージキャパシティーの量。キャパシティユニット 1 つにつき 30 GB のストレージキャパシティまたは 100,000 件のドキュメント (いずれか早く達した方) に対応します。  | 
|   [Amazon Kendra edition](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html)   |   `Developer`   |  Amazon Kendra には、インデックスを作成するための Developer と Enterprise のエディションが用意されています。Amazon Kendra の各エディションの違いの詳細については、[Amazon Kendra の料金表](https://aws.amazon.com/kendra/pricing/)を参照してください。  | 

これらの CloudFormation パラメータの値を変更するには、スタックのデプロイ時に適切な値を選択します。クエリとストレージのキャパシティユニットの詳細については、「[Adjusting capacity](https://docs.aws.amazon.com/kendra/latest/dg/adjusting-capacity.html)」を参照してください。

**注記**  
Text ユースケースのデプロイで RAG を有効にしない場合、Amazon Kendra インデックスは使用も作成もされません。

## Idp フェデレーションを使用する SSO のセットアップ
<a name="setting-up-sso-using-idp-federation"></a>

このソリューションでは、SAML または OIDC ベースの ID フェデレーションをサポートする外部 ID プロバイダーとの統合が可能です。ソリューションのデプロイ時に、デプロイダッシュボードと各ユースケース用に、Amazon Cognito ユーザープールと個別のアプリケーションクライアント統合が作成されます。外部 Idp に基づいて、*Amazon Cognito デベロッパーガイド*の「[Configuring identity providers for your user pool](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-provider.html)」セクションに記載されている手順に従い、SSO をセットアップするデプロイダッシュボードまたはユースケースのアプリクライアント統合を選択します。

ユーザーグループ情報を RAG ベースのアーキテクチャのナレッジベースまたはベクトルストアに渡すには、外部 Idp のユーザーグループを Amazon Cognito ユーザーグループにマッピングする必要があります。このソリューションでは、初期構成としての [Lambda 関数](https://github.com/aws-solutions/generative-ai-application-builder-on-aws/tree/main/source/lambda/ext-idp-group-mapper)トリガーが提供されており、[トークン生成前](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html)フェーズにマッピングされます。この Lambda 関数には [group\$1mapping.json](https://github.com/aws-solutions/generative-ai-application-builder-on-aws/tree/main/source/lambda/ext-idp-group-mapper/config/group_mapping.json) ファイルが含まれており、グループマッピングを行うにはこのファイルを更新する必要があります。Amazon Cognito でサポートされている Lambda トリガーについては、「[Customizing user pool workflows with Lambda triggers](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html)」を参照してください。

## ユーザープールの手動設定
<a name="manual-user-pool-configuration"></a>

デプロイ中に管理者またはデフォルトのユーザー E メールを渡さないことを選択した場合は、Amazon Cognito で適切なユーザーグループを手動で作成して、正しいアクセス許可を確保する必要があります。

1. デプロイダッシュボードで、Cognito ユーザープールに `Admin` という名前のグループを作成します。

1. ユースケースごとに、Cognito ユーザープールに `${UseCaseName}-Users` という名前のグループを作成します。ここで、`${UseCaseName}` はデプロイされたユースケースの名前です。

これらのグループは、承認メカニズムが正しく機能するために必要です。アクセスを許可するユーザーは、適切なグループに追加する必要があります。

`placeholder@example.com` が渡された場合、Cognito グループが作成されますが、関連付けられたユーザーを作成してグループに割り当てる必要があります。

## ログイン画面のカスタマイズ
<a name="customizing-login-screen"></a>

このソリューションでは、[Amazon Cognito がホストする UI](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-integration.html) を使用してログインページをレンダリングします。組み込みのサインインページをカスタマイズするには、「*Amazon Cognito デベロッパーガイド*」の「[Customizing the built-in sign-in and sign-up webpages](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-ui-customization.html)」を参照してください。

## セキュリティに関するその他の考慮事項
<a name="additional-security-considerations"></a>

ソリューションをデプロイするユースケースに基づいて、次のセキュリティ上の推奨事項を確認してください。
+  **カスタマーマネージド AWS KMS 暗号化キー** - このソリューションでは、追加費用のかからない AWS マネージド AWS KMS キーがデフォルトで使用されます。ユースケースを確認して、[カスタマーマネージド AWS KMS キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を使用するようにソリューションを更新する必要があるかどうかを判断してください。
+  **API Gateway スロットリングルール** - このソリューションは、API Gateway にデフォルトのスロットリングルールを設定してデプロイされます。ユースケースと予想されるトランザクション量に基づいて、API のスロットリングを設定することをお勧めします。詳細については、「*Amazon API Gateway デベロッパーガイド*」の「[API Gateway のスループットを向上させるために REST API へのリクエストをスロットリングする](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html)」を参照してください。
+  **AWS CloudTrail を有効にする** - 推奨されるセキュリティ対策として、ソリューションがデプロイされている AWS アカウントで [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) を有効にして、AWS アカウントで API コールをログ記録することを検討してください。詳細については、「[CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)」を参照してください。
+  **ドリフト検出** - CloudFormation スタックでドリフト検出を設定して、デプロイされたソリューションスタックへの意図しない変更や悪意のある変更を特定し、通知を受け取ることをお勧めします。詳細については、「[Implementing an alarm to automatically detect drift in AWS CloudFormation stacks](https://aws.amazon.com/blogs/mt/implementing-an-alarm-to-automatically-detect-drift-in-aws-cloudformation-stacks/)」を参照してください。
+  **Cognito JSON ウェブトークン (JWT)** - このソリューションは、Amazon Cognito が発行した JWT を使用して REST API エンドポイントで認証を行います。このソリューションでは、[ID トークン](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html)と[アクセストークン](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html)の有効期限は 5 分に設定されています。ユーザーがログアウトすると、新しいトークンを生成できなくなります ([更新トークン](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html)は失効します)。ただし、現在のトークンの有効期限が切れるまでは、API エンドポイントへのリクエストは有効なトークンがあるため正常に認証されます。ユースケースのセキュリティ上の考慮事項を確認し、トークンの有効期間を調整してください。

 **ライフサイクルポリシーのカスタマイズ:** 

本番環境デプロイの場合は、保持要件に基づいてライフサイクルポリシーを確認して調整します。「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットのライフサイクル設定の指定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」を参照してください。

## マルチモーダルファイルストレージとライフサイクル
<a name="multimodal-file-storage-and-lifecycle"></a>

ユースケースでマルチモーダル入力機能を有効にした場合 (**MultimodalEnabled** を `Yes` に設定)、ソリューションはアップロードされたファイルを保存する Amazon S3 バケットと、ファイルメタデータを追跡する DynamoDB テーブルを作成します。

 **デフォルトのライフサイクルポリシー:** 
+  **S3 ファイル:** 48 時間後に自動的に削除されます
+  **DynamoDB メタデータ:** レコードは 24 時間後に期限切れになります (会話履歴 TTL)

 **セキュリティに関する考慮事項:** 
+ ファイルはユースケース ID、ユーザー ID、会話 ID、メッセージ ID でパーティション化され、代わりに UUID 名でファイルが保存されます。UUID とファイル名のマッピングは、DynamoDB メタデータテーブルで確認できます
+ ユーザーは、自分の会話内でアップロードしたファイルにのみアクセスできます
+ ファイルタイプの検証は、マジックナンバー検出を使用して実行されます
+ [Amazon GuardDuty Malware Protection for S3](https://docs.aws.amazon.com/guardduty/latest/ug/gdu-malware-protection-s3.html) を有効にして、アップロードされたファイルをスキャンして悪意のあるコンテンツがないか確認することをお勧めします。