[アップデート] Application Migration Service (AWS MGN)にApp2Container Replatformingというアクションが追加されました

Post-launch actionsが充実していくのを感じる(2023/11)

こんにちは、AWS事業本部の荒平(@0Air)です。

タイトル通りで、 Application Migration Service (AWS MGN)にApp2Container Replatformingというアクションが追加されました。
これは、.NET Frameworkのアプリケーションを仮想マシンからWindowsコンテナに再構築したい場合に利用できる機能です。

AWS テクニカルガイドでも紹介されていたため、添付します。
元々、App2Containerという考え方はあったものの、このアップデートではAWS MGNを用いた移行時に同時実行できるというのが特徴です。

試してみた

モノは試しで、早速触ってみることにします。
今回、事前準備としてはWindows_Server-2022-English-Full-Base-2023.11.15 のEC2を利用しました。

1. IAMポリシーの準備

App2Container for Replatformingには、AWSアカウント内に、IAMポリシー名 ApplicationTransformationAnalyzerPolicy で以下の定義が存在する必要があります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3BucketAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "S3ObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::*/application-transformation*"
            ]
        },
        {
            "Sid": "KmsAccess",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:*:*:key/*"
            ],
            "Condition": {
                "StringLike": {
                    "kms:ViaService": [
                        "s3.*.amazonaws.com"
                    ]
                }
            }
        },
        {
            "Sid": "TelemetryAccess",
            "Effect": "Allow",
            "Action": [
                "application-transformation:PutMetricData",
                "application-transformation:PutLogData"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

環境に無い場合は新規で作成します。

2. Application Migration Service (AWS MGN)の設定

起動後テンプレートの画面にApp2Container for Replatformingが登場しています。
検索から見つけ、こちらを編集します。

なお、アクションの説明文は以下の通りです:

Containerize .NET and Java applications running on migrated servers. Create container image, Dockerfiles and AWS CloudFormation deployment artifacts in an Amazon S3 bucket. Deploy to Amazon ECS, Amazon EKS, or AWS App Runner using AWS CloudFormation.

(筆者訳) 移行したサーバー上で動作する.NETおよびJavaアプリケーションをコンテナ化します。Amazon S3バケットにコンテナイメージ、Dockerfile、AWS CloudFormationデプロイメントアーティファクトを作成します。AWS CloudFormationを使用して、Amazon ECS、Amazon EKS、またはAWS App Runnerにデプロイします。

App2Container for Replatforming を有効化します。

アクションパラメータは多くありませんでした。
必須項目は OutputLocationなので、出力先のS3バケットを s3://my-bucket/my-prefix の形式で指定します。

3. IAMユーザーの払い出し

既に移行用IAMユーザーが存在する場合は不要です。
ApplicationMigrationAgentInstallationPolicy を持つユーザーを作成し、アクセスキーを1つ発行します。

4. Application Migration Service (AWS MGN)を用いて移行

MGNコンソール上のReplication Agent ダウンロードリンクから入手し、仮想マシンへインストーラーを配置します。

配置したディレクトリにてPowerShellを開き、以下のコマンドを利用してレプリケーションを開始します。
ここで、前の手順で作成したIAMユーザーの認証情報を利用します。

.\AwsReplicationWindowsInstaller.exe --region ap-northeast-1 --aws-access-key-id AKIAXXXXXXXXXXXXX --aws-secret-access-key xxxxxxxxxxxxxxxxxxx --no-prompt

正常にインストールできていれば、The AWS Replication Agent was successfully installed. と表示されます。

起動後アクションの実行ステータスが「成功」になっていれば問題ありません。

指定したS3バケットにecs-xxx.ymlのような名称でファイルが生成されます。
以降のデプロイに関しては以下の記事をご参考ください。

おわりに

Application Migration Service (AWS MGN)と連携したApp2Container Replatformingという機能を試してみました。
AWSが提唱する7Rの移行パスに幅が広がるのは、ユーザー体験としてとても良いですね。

既にアプリケーションをお持ちの方を対象とする機能なので、記事上は割愛しましたが、検証用に.NET Framework製のアプリケーションを作ってサービスに登録するまでの道のりが(知見がゼロのため)長かった気がします。

このエントリが誰かの助けになれば幸いです。

それでは、AWS事業本部 コンサルティング部の荒平(@0Air)がお送りしました!

参考