AMI を Amazon S3 バケットへ保存する際に、フォルダを指定することは可能ですか?

AMI を Amazon S3 バケットへ保存する際に、プレフィックスを含めることは可能です。また、復元時にもプレフィックスを含めたキー名を指定することが可能です。
2023.06.13

困っていること

AWS CLI コマンド create-store-image-task を使用して、AMI を Amazon S3 バケットに保存したいです。

Amazon S3 バケットの特定のフォルダへ保管することはできますか?

どう対応すればいいの?

Amazon S3 バケットへ AMI を保存する際に、プレフィックスを含めたキー名の指定が可能です。

プレフィックスを含めたキー名を指定して、AMI を復元することも可能です。

やってみた

AWS CLI コマンド create-store-image-task--bucket オプションに、バケット名/プレフィックス名を追加することで、プレフィックス名を含めたキー名として保管できました。

$ aws ec2 create-store-image-task --image-id ami-<amiid> --bucket <バケット名>/test
{
    "ObjectKey": "test/ami-<amiid>.bin"
}

また、AWS CLI コマンドcreate-restore-image-task--object-keyオプションにプレフィックス名/オブジェクト名と指定しても、リストアが可能であることを確認しました。

$ aws ec2 create-restore-image-task --bucket <バケット名> --object-key test/ami-<amiid>.bin --name "New AMI Name"
{
    "ImageId": "ami-<AMIID>"
}

なお、Amazon S3 においてはフォルダという概念はなく、"/" は区切り文字として扱われます。"/" で区切ることで、Amazon S3 マネジメントコンソール上ではフォルダのように見せることができます。

参考資料

create-store-image-task — AWS CLI 1.27.152 Command Reference

create-restore-image-task — AWS CLI 1.27.152 Command Reference

Amazon S3における「フォルダ」という幻想をぶち壊し、その実体を明らかにする | DevelopersIO

Amazon S3 のプレフィックスとネストされたフォルダの違い | AWS re:Post