DR Orchestrator Framework を使用してクロスリージョンのフェイルオーバーとフェイルバックを自動化 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DR Orchestrator Framework を使用してクロスリージョンのフェイルオーバーとフェイルバックを自動化

Amazon Web Services、Jitendra Kumar、Pavithra Balasubramanian、Oliver Francis

概要

本パターンでは、DR Orchestrator Framework を使用して、エラーが発生しやすい手動ステップをオーケストレーションおよび自動化し、Amazon Web Services (AWS) リージョン全体でディザスタリカバリを実行する方法について説明します。本パターンでは以下のデータベースがカバーされています。

  • Amazon Relational Database Service (Amazon RDS) for MySQL、Amazon RDS for PostgreSQL、または Amazon RDS for MariaDB

  • Amazon Aurora MySQL 互換エディションまたは Amazon Aurora PostgreSQL 互換エディション (一元化されたファイルを使用)

  • Amazon ElastiCache (Redis OSS)

DR Orchestrator Framework の機能を実際に使ってみるため、2 つの DB インスタンスまたはクラスターを作成します。プライマリは にあり AWS リージョン us-east-1、セカンダリは にありますus-west-2。これらのリソースを作成するには、aws-cross-region-dr-databases GitHub リポジトリの App-Stackフォルダにある AWS CloudFormation テンプレートを使用します。

前提条件と制限事項

一般的な前提条件

エンジンに固有の前提条件

  • Amazon Aurora – 少なくとも 1 つの Aurora グローバルデータベースを 2 つで利用できる必要があります AWS リージョン。us-east-1 をプライマリリージョンとして、us-west-2 をセカンダリリージョンとして使用できます。

  • Amazon ElastiCache (Redis OSS) – ElastiCache グローバルデータストアは 2 つで利用できる必要があります AWS リージョン。use us-east-1 をプライマリリージョンとして、us-west-2 をセカンダリリージョンとして使用できます。

Amazon RDS の制限事項

  • DR Orchestrator Framework は、フェイルオーバーまたはフェイルバックの実行前にレプリケーションラグをチェックしません。レプリケーションラグは手動でチェックする必要があります。

  • このソリューションは、1 つのリードレプリカを持つプライマリデータベースインスタンスを使用してテストされています。複数のリードレプリカを使用する場合は、本番環境に実装する前にソリューションを十分にテストします。

Aurora の制限事項

  • 機能の可用性とサポートは、各データベースエンジンの特定のバージョン、および AWS リージョンによって異なります。クロスリージョンレプリケーションの機能およびリージョンの可用性の詳細については、「クロスリージョンリードレプリカ」を参照してください。

  • Aurora グローバルデータベースには、サポートされている Aurora DB インスタンスクラスと の最大数に関する特定の設定要件があります AWS リージョン。詳細については、「Amazon Aurora Global Database の構成要件」を参照してください。

  • このソリューションは、1 つのリードレプリカを持つプライマリデータベースインスタンスを使用してテストされています。複数のリードレプリカを使用する場合は、本番環境に実装する前にソリューションを十分にテストします。

ElastiCache の制限事項

  • Global Datastore と ElastiCache の設定要件のリージョンの可用性については、ElastiCache ドキュメントの「前提条件と制限」を参照してください。

Amazon RDS 製品バージョン

Amazon RDS は、以下のエンジンバージョンをサポートしています。

  • MySQL – Amazon RDS は、MySQL 8.0 および MySQL 5.7 バージョンを実行している DB インスタンスをサポートしています。

  • PostgreSQL – Amazon RDS for PostgreSQL のサポートされているバージョンについては、「利用可能な PostgreSQL データベースバージョン」を参照してください。

  • MariaDB – は、以下のバージョンの MariaDB を実行する DB インスタンスをサポートしています。

    • MariaDB 10.11

    • MariaDB 10.6

    • MariaDB 10.5

Aurora 製品バージョン

  • MySQL 5.7 と互換性のある Aurora MySQL の場合、Amazon Aurora Global Database のスイッチオーバーにはバージョン 2.09.1 以降のマイナーバージョンが必要になります。

    詳細については、「Amazon Aurora Global Database の制限」を参照してください。

ElastiCache (Redis OSS) 製品バージョン

Amazon ElastiCache (Redis OSS) は、次の Redis バージョンをサポートしています。

  • Redis 7.1 (拡張)

  • Redis 7.0 (拡張)

  • Redis 6.2 (拡張)

  • Redis 6.0 (拡張)

  • Redis 5.0.6 (拡張)

詳細については、「Supported ElastiCache (Redis OSS) version」を参照してください。

アーキテクチャ

Amazon RDS アーキテクチャ

Amazon RDS のアーキテクチャには、以下のリソースが含まれています。

  • クライアントの読み取り/書き込みアクセス権限を持つプライマリリージョン (us-east-1) で作成された、プライマリ Amazon RDS DB インスタンス

  • クライアントの読み取り専用アクセス権限を持つセカンダリリージョン (us-west-2) で作成された Amazon RDS リードレプリカ

  • プライマリとセカンダリ両方のリージョンにデプロイされた DR オーケストレーターフレームワーク

1 つの AWS アカウントにある 2 つのリージョン RDS アーキテクチャの図。

図に示す内容は以下のとおりです。

  1. プライマリインスタンスとセカンダリインスタンス間の非同期レプリケーション

  2. プライマリリージョンのクライアントの読み取り/書き込みアクセス

  3. セカンダリリージョンのクライアントの読み取り専用アクセス

Aurora のアーキテクチャ

Amazon Aurora のアーキテクチャには、以下のリソースが含まれています。

  • アクティブライターエンドポイントを使用してプライマリリージョン (us-east-1) で作成されたプライマリ Aurora DB クラスター

  • 非アクティブライターエンドポイントを持つセカンダリリージョン (us-west-2) で作成された Aurora DB クラスター

  • プライマリとセカンダリ両方のリージョンにデプロイされた DR オーケストレーターフレームワーク

1 つの AWS アカウントにある 2 つのリージョンの Aurora デプロイの図。

図に示す内容は以下のとおりです。

  1. プライマリクラスターとセカンダリクラスター間の非同期レプリケーション

  2. アクティブライターエンドポイントを持つプライマリ DB クラスター

  3. 非アクティブライターエンドポイントを持つセカンダリ DB クラスター

ElastiCache (Redis OSS) のアーキテクチャ

Amazon ElastiCache (Redis OSS) のアーキテクチャには以下のリソースが含まれています。

  • 2 つのクラスターで作成された ElastiCache (Redis OSS) グローバルデータストア

    1. プライマリリージョンのプライマリクラスター (us-east-1)

    2. セカンダリリージョン (us-west-2) のセカンダリクラスター

  • 2 つのクラスター間の TLS 1.2 暗号化を使用した Amazon クロスリージョンリンク

  • プライマリとセカンダリ両方のリージョンにデプロイされた DR オーケストレーターフレームワーク

Amazon クロスリージョンリンクを使用した 2 つのリージョンの ElastiCache デプロイの図。

自動化とスケール

DR Orchestrator Framework はスケーラブルで、複数の AWS データベースのフェイルオーバーまたはフェイルバックを並行してサポートします。

次のペイロードコードを使用して、アカウント内の複数の AWS データベースをフェイルオーバーできます。この例では、3 つの AWS データベース (Aurora MySQL 互換または Aurora PostgreSQL 互換などの 2 つのグローバルデータベース、および 1 つの Amazon RDS for MySQL インスタンス) が DR リージョンにフェイルオーバーします。

{ "StatePayload": [ { "layer": 1, "resources": [ { "resourceType": "PlannedFailoverAurora", "resourceName": "Switchover (planned failover) of Amazon Aurora global databases (MySQL)", "parameters": { "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier", "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier" } }, { "resourceType": "PlannedFailoverAurora", "resourceName": "Switchover (planned failover) of Amazon Aurora global databases (PostgreSQL)", "parameters": { "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-postgres-global-identifier", "DBClusterIdentifier": "!Import dr-globaldb-cluster-postgres-cluster-identifier" } }, { "resourceType": "PromoteRDSReadReplica", "resourceName": "Promote RDS for MySQL Read Replica", "parameters": { "RDSInstanceIdentifier": "!Import rds-mysql-instance-identifier", "TargetClusterIdentifier": "!Import rds-mysql-instance-global-arn" } } ] } ] }

ツール

AWS サービス

  • Amazon Aurora」はクラウド用に構築されたフルマネージド型のリレーショナルデータベースエンジンで、MySQL および PostgreSQL と互換性があります。

  • Amazon ElastiCache は、 AWS クラウドにある分散したインメモリキャッシュ環境のセットアップ、管理、スケールに役立ちます。このパターンでは、Amazon ElastiCache (Redis OSS) を使用します。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。このパターンでは、Lambda 関数は AWS Step Functions によってステップの実行に使用されます。

  • Amazon Relational Database Service (Amazon RDS) を使用して、 AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。このパターンは、Amazon RDS for MySQL、Amazon RDS for PostgreSQL、Amazon RDS for MariaDB をサポートしています。

  • AWS SDK for Python (Boto3) は、Python アプリケーション、ライブラリ、またはスクリプトを と統合するのに役立ちます AWS のサービス。このパターンでは、Boto3 API はデータベースインスタンスまたはグローバルデータベースとの通信に使用されます。

  • AWS Step Functions は、 AWS Lambda 関数やその他の を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。このパターンでは、Step Functions ステートマシンを使用して、データベースインスタンスまたはグローバルデータベースの、クロスリージョンフェイルオーバーとフェイルバックをオーケストレーションして実行します。

コードリポジトリ

このパターンのコードは、GitHub の aws-cross-region-dr-databases リポジトリで入手できます。

エピック

タスク説明必要なスキル

GitHub リポジトリのクローン作成

リポジトリを複製するには、次のコマンドを実行します。

git clone https://github.com/aws-samples/aws-cross-region-dr-databases.git
AWS DevOps、AWS 管理者

Lambda 関数コードを .zip ファイルアーカイブにパッケージ化します。

Lambda 関数のアーカイブファイルを作成して、DR Orchestrator Framework の依存関係を含めます。

cd <YOUR-LOCAL-GIT-FOLDER>/DR-Orchestration-artifacts bash scripts/deploy-orchestrator-sh.sh
AWS 管理者

S3 バケットを作成します。

DR Orchestrator Framework を最新の設定で保存するには S3 バケットが必要です。2 つの S3 バケットを作成します。1 つはプライマリリージョン (us-east-1)、もう 1 つはセカンダリリージョン (us-west-2) です。

  • dr-orchestrator-xxxxxx-us-east-1

  • dr-orchestrator-xxxxxx-us-west-2

xxxxxx をランダムな値に置き換えて、バケット名を一意にします。

AWS 管理者

サブネットとセキュリティグループを選択します。

プライマリリージョン (us-east-1) とセカンダリリージョン (us-west-2) の両方で、VPC に Lambda 関数をデプロイするための 2 つのサブネットと 1 つのセキュリティグループを作成します。

  • subnet-XXXXXXX

  • subnet-YYYYYYY

  • sg-XXXXXXXXXXXX

AWS 管理者

DR Orchestrator のパラメータファイルを更新します。

<YOUR-LOCAL-GIT-FOLDER>/DR-Orchestration-artifacts/cloudformation フォルダで、次の DR Orchestrator パラメータファイルを更新します。

  • Orchestrator-Deployer-parameters-us-east-1.json

  • Orchestrator-Deployer-parameters-us-west-2.json

次のパラメータ値を使用して、xy をリソースの名前に置き換えます。

[ { "ParameterKey": "TemplateStoreS3BucketName", "ParameterValue": "dr-orchestrator-xxxxxx-us-east-1" }, { "ParameterKey": "TemplateVPCId", "ParameterValue": "vpc-xxxxxx" }, { "ParameterKey": "TemplateLambdaSubnetID1", "ParameterValue": "subnet-xxxxxx" }, { "ParameterKey": "TemplateLambdaSubnetID2", "ParameterValue": "subnet-yyyyyy" }, { "ParameterKey": "TemplateLambdaSecurityGroupID", "ParameterValue": "sg-xxxxxxxxxx" } ]
AWS 管理者

DR Orchestrator Framework コードを S3 バケットにアップロードします。

このコードは、ローカルディレクトリよりも S3 バケットにアップロードする方が安全です。すべてのファイルとサブフォルダを含む DR-Orchestration-artifacts ディレクトリを S3 バケットにアップロードします。

コードをアップロードするには、次の操作を行います。

  1. AWS マネジメントコンソールにサインインします。

  2. Amazon S3 コンソールに移動します。

  3. dr-orchestrator-xxxxxx-us-east-1 bucket を選択します。

  4. [アップロード] を選択し、[フォルダを追加] を選択します。

  5. DR-Orchestration-artifacts フォルダを選択します。

  6. アップロード を選択します。

  7. dr-orchestrator-xxxxxx-us-west-2 バケットを選択します。

  8. ステップ 4~7 を繰り返します。

AWS 管理者

DR オーケストレーターフレームワークをプライマリリージョンにデプロイします。

次のコマンドを実行し、DR Orchestrator Framework をプライマリリージョン (us-east-1) にデプロイします。

cd <YOUR-LOCAL-GIT-FOLDER>/DR-Orchestration-artifacts/cloudformation aws cloudformation deploy \ --region us-east-1 \ --stack-name dr-orchestrator \ --template-file Orchestrator-Deployer.yaml \ --parameter-overrides file://Orchestrator-Deployer-parameters-us-east-1.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback
AWS 管理者

DR Orchestrator Framework をセカンダリリージョンにデプロイします。

セカンダリリージョン (us-west-2) で、次のコマンドを実行します。

cd <YOUR-LOCAL-GIT-FOLDER>/DR-Orchestration-artifacts/cloudformation aws cloudformation deploy \ --region us-west-2 \ --stack-name dr-orchestrator \ --template-file Orchestrator-Deployer.yaml \ --parameter-overrides file://Orchestrator-Deployer-parameters-us-west-2.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback
AWS 管理者

デプロイメントを確認する。

CloudFormation コマンドが正常に実行されると、次の出力が返されます。

Successfully created/updated stack - dr-orchestrator

または、 CloudFormation コンソールに移動し、dr-orchestratorスタックのステータスを確認できます。

AWS 管理者
タスク説明必要なスキル

データベースサブネットとセキュリティグループを作成します。

VPC で、プライマリ (us-east-1) リージョンとセカンダリ (us-west-2) リージョンの両方に、DB インスタンスまたはグローバルデータベース用に 2 つのサブネットと 1 つのセキュリティグループを作成します。

  • subnet-XXXXXX

  • subnet-XXXXXX

  • sg-XXXXXXXXXX

AWS 管理者

プライマリ DB インスタンスまたはクラスターの、パラメータファイルを更新します。

<YOUR LOCAL GIT FOLDER>/App-Stack フォルダで、プライマリリージョンのパラメータファイルを更新します。

Amazon RDS

RDS-MySQL-parameter-us-east-1.json ファイルで、作成したリソースの名前を付けて SubnetIdsDBSecurityGroup を更新します。

{ "Parameters": { "SubnetIds": "subnet-xxxxxx,subnet-xxxxxx", "DBSecurityGroup": "sg-xxxxxxxxxx", "MySqlGlobalIdentifier":"rds-mysql-instance", "InitialDatabaseName": "mysqldb", "DBPortNumber": "3789", "PrimaryRegion": "us-east-1", "SecondaryRegion": "us-west-2", "KMSKeyAliasName": "rds/rds-mysql-instance-KmsKeyId" } }

Amazon Aurora

Aurora-MySQL-parameter-us-east-1.json ファイルで、作成したリソースの名前を付けて SubnetIdsDBSecurityGroup を更新します。

{ "Parameters": { "SubnetIds": "subnet1-xxxxxx,subnet2-xxxxxx", "DBSecurityGroup": "sg-xxxxxxxxxx", "GlobalClusterIdentifier":"dr-globaldb-cluster-mysql", "DBClusterName":"dbcluster-01", "SourceDBClusterName":"dbcluster-02", "DBPortNumber": "3787", "DBInstanceClass":"db.r5.large", "InitialDatabaseName": "sampledb", "PrimaryRegion": "us-east-1", "SecondaryRegion": "us-west-2", "KMSKeyAliasName": "rds/dr-globaldb-cluster-mysql-KmsKeyId" } }

Amazon ElastiCache (Redis OSS)

ElastiCache-parameter-us-east-1.json ファイルで、作成したリソースの名前を付けて SubnetIdsDBSecurityGroup を更新します。

{ "Parameters": { "CacheNodeType": "cache.m5.large", "DBSecurityGroup": "sg-xxxxxxxxxx", "SubnetIds": "subnet-xxxxxx,subnet-xxxxxx", "EngineVersion": "5.0.6", "GlobalReplicationGroupIdSuffix": "demo-redis-global-datastore", "NumReplicas": "1", "NumShards": "1", "ReplicationGroupId": "demo-redis-cluster", "DBPortNumber": "3788", "TransitEncryption": "true", "KMSKeyAliasName": "elasticache/demo-redis-global-datastore-KmsKeyId", "PrimaryRegion": "us-east-1", "SecondaryRegion": "us-west-2" } }
AWS 管理者

DB インスタンスまたはクラスターをプライマリリージョンにデプロイします。

インスタンスまたはクラスターをプライマリリージョン (us-east-1) にデプロイするには、データベースエンジンに基づいて次のコマンドを実行します。

Amazon RDS

cd <YOUR-LOCAL-GIT-FOLDER>/App-Stack aws cloudformation deploy \ --region us-east-1 \ --stack-name rds-mysql-app-stack \ --template-file RDS-MySQL-Primary.yaml \ --parameter-overrides file://RDS-MySQL-parameter-us-east-1.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback

Amazon Aurora

cd <YOUR-LOCAL-GIT-FOLDER>/App-Stack aws cloudformation deploy \ --region us-east-1 \ --stack-name aurora-mysql-app-stack \ --template-file Aurora-MySQL-Primary.yaml \ --parameter-overrides file://Aurora-MySQL-parameter-us-east-1.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback

Amazon ElastiCache (Redis OSS)

cd <YOUR-LOCAL-GIT-FOLDER>/App-Stack aws cloudformation deploy \ --region us-east-1 --stack-name elasticache-ds-app-stack \ --template-file ElastiCache-Primary.yaml \ --parameter-overrides file://ElastiCache-parameter-us-east-1.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback

CloudFormation リソースが正常にデプロイされたことを確認します。

AWS 管理者

セカンダリ DB インスタンスまたはクラスターのパラメータファイルを更新します。

<YOUR LOCAL GIT FOLDER>/App-Stack フォルダで、セカンダリリージョンのパラメータファイルを更新します。

Amazon RDS

RDS-MySQL-parameter-us-west-2.json ファイルで、作成したリソースの名前を付けて SubnetIDsDBSecurityGroup を更新します。を、プライマリ DB インスタンスの CloudFormation スタックの Outputs セクションからMySQLKmsKeyId取得した の値PrimaryRegionKMSKeyArnで更新します。

{ "Parameters": { "SubnetIds": "subnet-aaaaaaaaa,subnet-bbbbbbbbb", "DBSecurityGroup": "sg-cccccccccc", "MySqlGlobalIdentifier":"rds-mysql-instance", "InitialDatabaseName": "mysqldb", "DBPortNumber": "3789", "PrimaryRegion": "us-east-1", "SecondaryRegion": "us-west-2", "KMSKeyAliasName": "rds/rds-mysql-instance-KmsKeyId", "PrimaryRegionKMSKeyArn":"arn:aws:kms:us-east-1:xxxxxxxxx:key/mrk-xxxxxxxxxxxxxxxxxxxxx" } }

Amazon Aurora

Aurora-MySQL-parameter-us-west-2.json ファイルで、作成したリソースの名前を付けて SubnetIDsDBSecurityGroup を更新します。を、プライマリ DB インスタンスの CloudFormation スタックの Outputs セクションからAuroraKmsKeyId取得した の値PrimaryRegionKMSKeyArnで更新します。

{ "Parameters": { "SubnetIds": "subnet1-aaaaaaaaa,subnet2-bbbbbbbbb", "DBSecurityGroup": "sg-cccccccccc", "GlobalClusterIdentifier":"dr-globaldb-cluster-mysql", "DBClusterName":"dbcluster-01", "SourceDBClusterName":"dbcluster-02", "DBPortNumber": "3787", "DBInstanceClass":"db.r5.large", "InitialDatabaseName": "sampledb", "PrimaryRegion": "us-east-1", "SecondaryRegion": "us-west-2", "KMSKeyAliasName": "rds/dr-globaldb-cluster-mysql-KmsKeyId" } }

Amazon ElastiCache (Redis OSS)

ElastiCache-parameter-us-west-2.json ファイルで、作成したリソースの名前を付けて SubnetIDsDBSecurityGroup を更新します。を、プライマリ DB インスタンスの CloudFormation スタックの Outputs セクションからElastiCacheKmsKeyId取得した の値PrimaryRegionKMSKeyArnで更新します。

{ "Parameters": { "CacheNodeType": "cache.m5.large", "DBSecurityGroup": "sg-cccccccccc", "SubnetIds": "subnet-aaaaaaaaa,subnet-bbbbbbbbb", "EngineVersion": "5.0.6", "GlobalReplicationGroupIdSuffix": "demo-redis-global-datastore", "NumReplicas": "1", "NumShards": "1", "ReplicationGroupId": "demo-redis-cluster", "DBPortNumber": "3788", "TransitEncryption": "true", "KMSKeyAliasName": "elasticache/demo-redis-global-datastore-KmsKeyId", "PrimaryRegion": "us-east-1", "SecondaryRegion": "us-west-2" } }
AWS 管理者

DB インスタンスまたはクラスターをセカンダリリージョンにデプロイします。

データベースエンジンに基づいて、次のコマンドを実行します。

Amazon RDS

cd <YOUR-LOCAL-GIT-FOLDER>/App-Stack aws cloudformation deploy \ --region us-west-2 \ --stack-name rds-mysql-app-stack \ --template-file RDS-MySQL-DR.yaml \ --parameter-overrides file://RDS-MySQL-parameter-us-west-2.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback

Amazon Aurora

cd <YOUR-LOCAL-GIT-FOLDER>/App-Stack aws cloudformation deploy \ --region us-west-2 \ --stack-name aurora-mysql-app-stack \ --template-file Aurora-MySQL-DR.yaml \ --parameter-overrides file://Aurora-MySQL-parameter-us-west-2.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback

Amazon ElastiCache (Redis OSS)

cd <YOUR-LOCAL-GIT-FOLDER>/App-Stack aws cloudformation deploy \ --region us-west-2 \ --stack-name elasticache-ds-app-stack \ --template-file ElastiCache-DR.yaml \ --parameter-overrides file://ElastiCache-parameter-us-west-2.json \ --capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_NAMED_IAM CAPABILITY_IAM \ --disable-rollback

CloudFormation リソースが正常にデプロイされたことを確認します。

AWS 管理者

関連リソース