

# デプロイを計画する
<a name="plan-your-deployment"></a>

このセクションでは、このソリューションをデプロイする前に、リージョン、[コスト](cost.md)、[セキュリティ](aws-well-architected-design-considerations.md#security)、その他の考慮事項について説明します。

## サポートしている AWS リージョン
<a name="supported-aws-regions"></a>

このソリューションでは Amazon Cognito サービスを使用していますが、現在すべての AWS リージョンで利用できるわけではありません。リージョン別の AWS サービスの最新情報については、[AWS リージョン別のサービスのリスト](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)を参照してください。

AWS でのワークロード検出は、次の AWS リージョンで利用できます。


| リージョン名 |  | 
| --- | --- | 
|  米国東部 (バージニア北部)  |  カナダ (中部)  | 
|  米国東部 (オハイオ)  |  欧州 (ロンドン)  | 
|  米国西部 (オレゴン）  |  欧州 (フランクフルト)  | 
|  アジアパシフィック (ムンバイ)  |  欧州 (アイルランド)  | 
|  アジアパシフィック (ソウル)  |  欧州 (パリ)  | 
|  アジアパシフィック (シンガポール)  |  欧州 (ストックホルム)  | 
|  アジアパシフィック (シドニー)  |  南米 (サンパウロ）  | 
|  アジアパシフィック (東京)  |  | 

AWS でのワークロード検出は、次の AWS リージョンでは利用できません。


| リージョン名 | 利用できないサービス | 
| --- | --- | 
|  AWS GovCloud (米国東部)  |  AWS AppSync  | 
|  AWS GovCloud (米国西部)  |  AWS AppSync  | 
|  中国 (北京)  |  Amazon Cognito  | 
|  中国 (寧夏)  |  Amazon Cognito  | 

# コスト
<a name="cost"></a>

このソリューションの実行中にプロビジョニングされた AWS サービスのコストは、お客様の負担となります。この改訂の時点で、米国東部 (バージニア北部) リージョンで、単一インスタンスのデプロイオプションを使用してこのソリューションを実行するためのコストは、**1 時間あたり約 0.58 USD**、**1 か月あたり 425.19 USD** です。

**注記**  
AWS でのワークロード検出を AWS クラウドで実行するためのコストは、デプロイ時に選択した設定によって異なることに注意してください。次の例は、米国東部 (バージニア北部) リージョンでの単一インスタンスおよび複数インスタンスのデプロイ設定のコスト内訳を示しています。次表の例に示す AWS のサービスは、月単位で請求されます。

[AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) を使用して[予算](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-create.html)を作成することをお勧めします。これはコスト管理に役立ちます。料金は変更されることがあります。詳細については、このソリューションで使用する AWS のサービスごとに料金ウェブページを参照してください。

## サンプルコスト表
<a name="example-cost-tables"></a>

### オプション 1: 単一インスタンスのデプロイ (デフォルト)
<a name="option-1-single-instance-deployment-default"></a>

AWS CloudFormation テンプレートを使用してこのソリューションをデプロイする場合は、**OpensearchMultiAz** パラメータを `No` に設定すると、OpenSearch Service ドメイン用に単一のインスタンスがデプロイされ、**CreateNeptuneReplica** パラメータを `No` に設定すると、Neptune データストア用に単一のインスタンスをデプロイします。単一のインスタンスのデプロイオプションではコストが低くなりますが、アベイラビリティーゾーンに障害が発生した場合に AWS でのワークロード検出の可用性が低下します。


| AWS のサービス | インスタンスタイプ | 1 時間あたりのコスト [USD] | 月額コスト [USD] | 
| --- | --- | --- | --- | 
|  Amazon Neptune  |   `db.r5.large`   |  0.348 USD  |  254.04 USD  | 
|  Amazon OpenSearch Service  |   `m6g.large.search`   |  0.128 USD  |  93.44 USD  | 
|  Amazon VPC (NAT ゲートウェイ)  |  該当なし  |  0.090 USD  |  65.7 USD  | 
|  AWS Config  |  該当なし  |  リソースごとに 0.003 USD  |  リソースごとに 0.003 USD  | 
|  Amazon ECS (AWS Fargate タスク)  |  該当なし  |  0.02 USD  |  12.01 USD  | 
|  Total  |  |   **0.586 USD**   |   **425.19 USD**   | 

### オプション 2: 複数のインスタンスのデプロイ
<a name="option-2-multiple-instances-deployment"></a>

AWS CloudFormation テンプレートを使用してこのソリューションをデプロイする場合は、**OpensearchMultiAz** パラメータを `Yes` に設定すると、OpenSearch Service ドメイン用に 2 つのアベイラビリティーゾーンに 2 つのインスタンスがデプロイされ、**CreateNeptuneReplica** パラメータを `Yes` に設定すると、Neptune データストア用に 2 つのアベイラビリティーゾーンに 2 つのインスタンスがデプロイされます。複数インスタンスのデプロイオプションは実行コストが高くなりますが、アベイラビリティーゾーンに障害が発生した場合に AWS でのワークロード検出ソリューションの可用性が向上します。


| AWS のサービス | インスタンスタイプ | 1 時間あたりのコスト | 月額コスト [USD] | 
| --- | --- | --- | --- | 
|  Amazon Neptune  |   `db.r5.large`   |  0.696 USD  |  508.08 USD  | 
|  Amazon OpenSearch Service  |   `m6g.large.search`   |  0.256 USD  |  186.88 USD  | 
|  Amazon VPC (NAT ゲートウェイ)  |  該当なし  |  0.090 USD  |  65.7 USD  | 
|  AWS Config  |  該当なし  |  リソースごとに 0.003 USD  |  リソースごとに 0.003 USD  | 
|  Amazon ECS (AWS Fargate タスク)  |  該当なし  |  0.02 USD  |  12.01 USD  | 
|  Total  |  |   **1.062 USD**   |   **772.67 USD**   | 
+ 最終的なコストは、AWS Config が検出したリソースの数によって異なります。表に記載されている金額に加えて、記録されたリソースアイテムにつき 0.003 USD が発生します。

**重要**  
Amazon Neptune と Amazon OpenSearch Service のコストは、デプロイ時に選択したインスタンスタイプによって異なります。

# セキュリティ
<a name="security-1"></a>

AWS インフラストラクチャでシステムを構築すると、お客様と AWS の間でセキュリティ上の責任が分担されます。この[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)により、ホストオペレーティングシステムと仮想化レイヤーからサービスが運用されている施設の物理的なセキュリティに至るまでのコンポーネントを AWS が運用、管理、制御するため、お客様の運用上の負担を軽減するのに役立ちます。AWS セキュリティの詳細については、[AWS セキュリティセンター](https://aws.amazon.com/security/)を参照してください。

## リソースアクセス
<a name="resource-access"></a>

### IAM ロール
<a name="iam-roles"></a>

IAM ロールを使用すると、AWS クラウドのサービスとユーザーに、きめ細かなアクセスポリシーとアクセス許可を割り当てることができます。AWS でのワークロード検出を実行して、AWS アカウントのリソースを検出するには、複数のロールが必要です。

### Amazon Cognito
<a name="amazon-cognito"></a>

Amazon Cognito は、AWS でのワークロード検出に必要なコンポーネントへのアクセスを認証し、一時的で強固な認証情報をしてアクセスを認証するために使用されます。

## ネットワークアクセス
<a name="network-access"></a>

### Amazon VPC
<a name="amazon-vpc"></a>

AWS でのワークロード検出は Amazon VPC 内にデプロイされ、ベストプラクティスに従ってセキュリティと高可用性を実現します。詳細については、「[VPC のセキュリティのベストプラクティス](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html)」を参照してください。VPC エンドポイントは、インターネットを経由しないサービス間の通信を可能とし、使用可能な場合に設定されます。

セキュリティグループは、AWS でのワークロード検出の実行に必要なコンポーネント間のネットワークトラフィックを制御し分離するために使用されます。

デプロイが完了し起動したら、セキュリティグループを確認し、必要に応じてアクセスをさらに制限することをお勧めします。

### Amazon CloudFront
<a name="amazon-cloudfront"></a>

このソリューションでは、Amazon CloudFront によって配布される Amazon S3 バケットに[ホストされる](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)ウェブコンソール UI をデプロイします。オリジンアクセスアイデンティティ機能を使用するとで、この Amazon S3 バケットのコンテンツには CloudFront からのみアクセスできます。詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[Amazon S3 オリジンへのアクセスの制限](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)」を参照してください。

CloudFront は追加のセキュリティ対策を有効にして、各ビューワーのレスポンスに HTTP セキュリティヘッダーを追加します。詳細については、「[CloudFront レスポンスでの HTTP ヘッダーの追加または削除](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-response-headers.html)」を参照してください。

このソリューションでは、デフォルトの CloudFront 証明書を使用しており、サポートされる最小のセキュリティプロトコルは TLS v1.0 です。TLS v1.2 または TLS v1.3 の使用を必ず適用するには、デフォルトの CloudFront 証明書の代わりにカスタム SSL 証明書を使用する必要があります。詳細については、「[SSL/TLS 証明書を使用するように CloudFront ディストリビューションを設定する方法を教えてください](https://aws.amazon.com/premiumsupport/knowledge-center/install-ssl-cloudfront/)」を参照してください。

## アプリケーションの設定
<a name="application-configuration"></a>

### AWS AppSync
<a name="aws-appsync"></a>

AWS でのワークロード検出の GraphQL API には、[GraphQL 仕様](https://spec.graphql.org/June2018/#sec-Validation)に従って、AWS AppSync によってリクエスト検証が行われます。さらに、認証と許可は IAM と Amazon Cognito を使用して実装されます。これにより、ユーザーがウェブ UI で正常に認証されたときに Amazon Cognito が提供する JWT を使用します。

### AWS Lambda
<a name="aws-lambda"></a>

デフォルトでは、Lambda 関数は最新の安定したバージョンの言語ランタイムで設定されます。機密データやシークレットは記録されません。サービスのやり取りは、必要最小限の権限で実行されます。これらの権限を定義するロールは、関数間で共有されません。

### Amazon OpenSearch Service
<a name="amazon-opensearch-service"></a>

Amazon OpenSearch Service ドメインには、OpenSearch Service クラスターに対して行われた署名されていないリクエストを停止するために、アクセスを制限するアクセスポリシーが設定されています。これは単一の Lambda 関数に制限されています。

OpenSearch Service クラスターは、ノード間の暗号化を有効にして構築されており、既存の OpenSearch Service の[セキュリティ機能](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/security.html)の上にデータ保護の層を追加します。

# クォータ
<a name="quotas"></a>

サービスクォータ (制限とも呼ばれます) は、AWS アカウントのサービスリソースまたはオペレーションの最大数です。

## このソリューション内の AWS サービスのクォータ
<a name="quotas-for-aws-services-in-this-solution"></a>

[このソリューションに実装されている各サービス](aws-services-in-this-solution.md)に十分なクォータがあることを確認してください。詳細については、「[AWS のサービスクォータ](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)」を参照してください。

次のリンクを使用して、そのサービスのページに移動します。ページを切り替えずに、ドキュメント内のすべての AWS サービスのサービスクォータを表示するには、この PDF の「[Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-general.pdf#aws-service-information)」ページの情報を参照してください。


|  |  | 
| --- |--- |
|   [Amplify](https://docs.aws.amazon.com/general/latest/gr/amplify.html)   |   [Amazon ECR](https://docs.aws.amazon.com/general/latest/gr/ecr.html)   | 
|   [Athena](https://docs.aws.amazon.com/general/latest/gr/athena.html)   |   [Lambda](https://docs.aws.amazon.com/general/latest/gr/lambda-service.html)   | 
|   [CloudFront](https://docs.aws.amazon.com/general/latest/gr/cf_region.html)   |   [OpenSearch Service](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html)   | 
|   [Cognito](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)   |   [Neptune](https://docs.aws.amazon.com/general/latest/gr/neptune.html)   | 
|   [設定](https://docs.aws.amazon.com/general/latest/gr/awsconfig.html)   |   [Amazon S3](https://docs.aws.amazon.com/general/latest/gr/s3.html)   | 
|   [Amazon ECS](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html)   |  | 

## AWS CloudFormation のクォータ
<a name="aws-cloudformation-quotas"></a>

ご使用の AWS アカウントには AWS CloudFormation のクォータがあり、このソリューションで[スタックを起動する](launch-the-stack.md)際に注意する必要があります。これらのクォータを理解することで、このソリューションを正常にデプロイできなくなるような制限エラーを回避できます。詳細については、「*AWS CloudFormation ユーザーガイド*」の「[CloudFormation クォータを理解する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html)」を参照してください。

## AWS Lambda のクォータ
<a name="aws-lambda-quotas"></a>

ご使用のアカウントでは AWS Lambda 同時実行クォータは 1,000 になります。Lambda を実行して使用している他のワークロードがあるアカウントでソリューションを使用する場合は、このクォータを適切な値に設定します。この値は調整可能です。詳細については、「*AWS Lambda ユーザーガイド*」の「[AWS Lambda クォータ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)」を参照してください。

**注記**  
このソリューションでは、ソリューションがデプロイされるアカウントに同時実行クォータから 150 の実行が利用可能である必要があります。そのアカウントで利用可能な実行数が 150 未満の場合、CloudFormation デプロイは失敗します。

## Amazon VPC クォータ
<a name="amazon-vpc-quotas"></a>

ご使用の AWS アカウントには、5 つの VPC と 2 つの Elastic IP (EIP) を含めることができます。他の VPC または EIP のアカウントでソリューションを使用する場合は、このソリューションを正常にデプロイできない可能性があります。このクォータに達するリスクがある場合は、「[スタックを起動する](launch-the-stack.md)」セクションの手順に従って VPC を設定することで、デプロイにご自分の VPC を使用できます。詳細については、「*[Amazon VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html)*」の「[Amazon VPC クォータ](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html)」を参照してください。

# デプロイするアカウントを選択する
<a name="choosing-the-deployment-account"></a>

AWS Organizations に AWS でのワークロード検出をデプロイする場合は、[StackSets](https://aws.amazon.com/blogs/mt/cloudformation-stacksets-delegated-administration/) と[マルチリージョン AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/aggregated-register-delegated-administrator.html) 機能が有効になっている委任管理者アカウントにこのソリューションをインストールする必要があります。

AWS Organizations を使用していない場合は、このソリューションのために作成された専用の AWS アカウントに AWS でのワークロード検出をデプロイすることをお勧めします。このアプローチにより、AWS でのワークロード検出は既存のワークロードから分離され、ユーザーの追加や新しい AWS リージョンのインポートなど、このソリューションを設定するための単一の場所を提供します。また、このソリューションの実行中に発生したコストを追跡しやすくなります。

AWS でのワークロード検出ソリューションがデプロイされると、プロビジョニング済みのアカウントから AWS リージョンをインポートできるようになります。