[アップデート] AMI でも時間ベースのコピー機能がサポートされました

[アップデート] AMI でも時間ベースのコピー機能がサポートされました

Clock Icon2025.02.28

いわさです。

昨年の re:Invent 前に EBS が時間ベースの EBS スナップショットコピー機能をサポートしていたのをご存知でしょうか。
この機能を使うと、別リージョンや別アカウントへスナップショットをコピーする際に完了までの時間を保証させることができます。

https://dev.classmethod.jp/articles/update-amazon-ebs-time-base-snapshot-copy/

追加料金が発生したり、スループットの上限を意識する必要はあったりするのですが、RPO/RTO の関係で確実に保証させたい場合に役に立ちます。
この機能、リリース時は EBS スナップショットのみがサポートされており、AMI のコピーについてはサポートされていませんでした。

私は AutoScalingGroup の関係で AMI コピーでこの機能を使いたかったのですが、あれから 3 ヶ月、ついに AMI コピーでもこの機能が使えるようになりました。

https://aws.amazon.com/about-aws/whats-new/2025/02/amazon-ec2-time-based-copy-amis/

早速試してみましたので紹介します。
私の場合は API 経由で自動化したかったので、API(今回は AWS CLI)経由での実行についても確認してみます。

マネジメントコンソール

まずは作成済みの AMI のコピーを開始します。

538B6D9C-F808-4B60-AF9A-D09777896356.png

EBS スナップショットと同じですね。
コピー設定画面にて Time-based copy の欄が追加されています。
Enable time-based copy にチェックを入れてみましょう。

7B3865C9-3418-4564-81DE-D0F90F94F31F.png

設定できる時間も EBS スナップショットと同じで、15 分から 48 時間までです。
また、コピー時間計算ツールについても同様に使えるみたいですね。

3DBE52D5-6A8C-4FCD-8C71-4D99F67EAE7B_4_5005_c.jpeg

API(AWS CLI)

私は EventBridge + Lambda の中で AMI の作成やコピー、起動テンプレートの更新を行うことがあったのでその中で使ってみます。
AWS CLI の v1.38.1 以上からサポートされています。対象はcopy-imageコマンドです。

https://github.com/aws/aws-cli/commit/8aedde77c32f2295921633cdea8a3bb34af62bcd

https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html

新たにsnapshot-copy-completion-duration-minutesというオプションが追加されていまして、ここで完了までの時間を分で指定します。

大阪リージョンに 15 分の完了を指定して東京リージョンからコピーさせます。

% aws-v1 --version
aws-cli/1.38.3 Python/3.9.8 Darwin/23.6.0 botocore/1.37.3
% cat hoge.json
{
    "Encrypted": true,
    "Name": "hoge-0228-ami",
    "SourceImageId": "ami-0545ab28f4b9ac0a8",
    "SourceRegion": "ap-northeast-1",
    "CopyImageTags": true,
    "SnapshotCopyCompletionDurationMinutes": 15
}
% aws-v1 ec2 copy-image --cli-input-json file://hoge.json --profile hoge --region ap-northeast-3
{
    "ImageId": "ami-084205edef9184aa3"
}

問題なく作成出来ましたね。良さそうです。

BF246D67-6A1F-4D58-9D27-FA2812478238_4_5005_c.jpeg

さいごに

本日は AMI でも時間ベースのコピー機能がサポートされたので使ってみました。

私の場合は今までコピー完了までの余裕を持ってからバックアップリージョンでの起動テンプレート更新を行うか、あるいは AMI 作成イベントを拾ってイベント駆動で更新を行う(イベントはベストエフォート)必要がありました。
保証されるなら時間ベースで設定するのもありだなと思いました。

AMI でも時間ベースのコピーを使いたかった人は是非お試しを。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.