AWS CLIによるAWS MGN初期化の方法
大家好、AWS事業本部の西野です。
AWS Application Migration Service (AWS MGN) のコンソールに初めてアクセスすると、まず始めにReplication Settingsのテンプレート作成が求められます。 このテンプレートを作成したタイミングでAWS MGNがその動作に必要なIAMロールを自動的に作成してくれます。これがAWS MGNの初期化(Initializing)です。
必要な作業をすべてサービス(マネジメントコンソール)が実行してくれるので便利である一方、自動化には不向きです。 そこで、AWS CLIによるAWS MGNの初期化を試してみました。
前提条件
AWS CLI 2.7.7を使用しました。
作業の流れ
- IAMロールの作成
- IAMロールへのIAMポリシーアタッチ
InitializeService
の実行- Replication Settingsテンプレートの作成
やってみた
IAMロールの作成
必要なIAMロールは下記の6つです。1
IAM Role | Path | Trusted Entity |
---|---|---|
AWSApplicationMigrationReplicationServerRole | /service-role/ | ec2.amazonaws.com |
AWSApplicationMigrationConversionServerRole | /service-role/ | ec2.amazonaws.com |
AWSApplicationMigrationMGHRole | /service-role/ | mgn.amazonaws.com |
AWSApplicationMigrationLaunchInstanceWithDrsRole | /service-role/ | ec2.amazonaws.com |
AWSApplicationMigrationLaunchInstanceWithSsmRole | /service-role/ | ec2.amazonaws.com |
AWSApplicationMigrationAgentRole | /service-role/ | mgn.amazonaws.com |
以下のコマンドを実行してIAMロールを作成します。
# AWSApplicationMigrationReplicationServerRole $ aws iam create-role --path "/service-role/" --role-name AWSApplicationMigrationReplicationServerRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal": {"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]}' # AWSApplicationMigrationConversionServerRole $ aws iam create-role --path "/service-role/" --role-name AWSApplicationMigrationConversionServerRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal": {"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]}' # AWSApplicationMigrationMGHRole $ aws iam create-role --path "/service-role/" --role-name AWSApplicationMigrationMGHRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal": {"Service":"mgn.amazonaws.com"},"Action":"sts:AssumeRole"}]}' # AWSApplicationMigrationLaunchInstanceWithDrsRole $ aws iam create-role --path "/service-role/" --role-name AWSApplicationMigrationLaunchInstanceWithDrsRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal": {"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]}' # AWSApplicationMigrationLaunchInstanceWithSsmRole $ aws iam create-role --path "/service-role/" --role-name AWSApplicationMigrationLaunchInstanceWithSsmRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal": {"Service":"ec2.amazonaws.com"},"Action":"sts:AssumeRole"}]}' # AWSApplicationMigrationAgentRole $ aws iam create-role --path "/service-role/" --role-name AWSApplicationMigrationAgentRole --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal": {"Service":"mgn.amazonaws.com"},"Action":"sts:AssumeRole"}]}'
IAMロールへのIAMポリシーアタッチ
IAMロールへのアタッチが必要なIAMポリシーは下表のとおりです。
すべてAWS管理ポリシーであるため、新規にIAMポリシーを作成する必要はありません。
IAM Role | IAM Policy |
---|---|
AWSApplicationMigrationReplicationServerRole | AWSApplicationMigrationReplicationServerPolicy |
AWSApplicationMigrationConversionServerRole | AWSApplicationMigrationConversionServerPolicy |
AWSApplicationMigrationMGHRole | AWSApplicationMigrationMGHAccess |
AWSApplicationMigrationLaunchInstanceWithDrsRole | AmazonSSMManagedInstanceCore AWSElasticDisasterRecoveryEc2InstancePolicy |
AWSApplicationMigrationLaunchInstanceWithSsmRole | AmazonSSMManagedInstanceCore |
AWSApplicationMigrationAgentRole | AWSApplicationMigrationAgentPolicy_v2 |
以下のコマンドを実行してIAMロールにIAMポリシーをアタッチします
# AWSApplicationMigrationReplicationServerRole $ aws iam attach-role-policy --role-name AWSApplicationMigrationReplicationServerRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationReplicationServerPolicy # AWSApplicationMigrationConversionServerRole $ aws iam attach-role-policy --role-name AWSApplicationMigrationConversionServerRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationConversionServerPolicy # AWSApplicationMigrationMGHRole $ aws iam attach-role-policy --role-name AWSApplicationMigrationMGHRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationMGHAccess # AWSApplicationMigrationLaunchInstanceWithDrsRole $ aws iam attach-role-policy --role-name AWSApplicationMigrationLaunchInstanceWithDrsRole --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore $ aws iam attach-role-policy --role-name AWSApplicationMigrationLaunchInstanceWithDrsRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryEc2InstancePolicy # AWSApplicationMigrationLaunchInstanceWithSsmRole $ aws iam attach-role-policy --role-name AWSApplicationMigrationLaunchInstanceWithSsmRole --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore # AWSApplicationMigrationAgentRole $ aws iam attach-role-policy --role-name AWSApplicationMigrationAgentRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationAgentPolicy_v2
InitializeService
の実行
以下のコマンドを実行します。
$ aws mgn initialize-service
このコマンドの実行によりAWS MGNのサービスロール(AWSServiceRoleForApplicationMigrationService
)が作成されます。
Replication Settingsテンプレートの作成
最後に、以下のコマンドを実行しReplication Settingsのテンプレートを作成します。
必要なパラメータについては下記のドキュメントなどを参照してください。
create-replication-configuration-template
$ aws mgn create-replication-configuration-template \ --associate-default-security-group \ --bandwidth-throttling 0 \ --create-public-ip \ --data-plane-routing PUBLIC_IP \ --default-large-staging-disk-type GP3 \ --ebs-encryption DEFAULT \ --replication-server-instance-type t3.small \ --replication-servers-security-groups-ids '[]' \ --staging-area-subnet-id subnet-01010101abcd0101 \ --staging-area-tags Name=ReplicationServer \ --no-use-dedicated-replication-server
参考
Manually initializing Application Migration Service - Application Migration Service
終わりに
このブログがほんの少しでも世界を良くできれば嬉しいです。
AWS事業本部の西野 (@xiyegen) がお送りしました。
- 2022年6月17日現在、公式ドキュメントには必要なIAMロールが網羅されていません。そのため、別アカウントでマネジメントコンソール経由の初期化を実施し必要なIAMロールおよびIAMポリシーを洗い出しています。(2022年7月5日追記: 公式ドキュメントに更新があったためそちらにあわせて手順を修正しました。) ↩