2011年09月22日

android開発 AWS SDK for Android AMI取得編

今回はAMI(Amazon Machine Image)のリストを取得します。

以下サンプルコード

/*
*amazonEC2ClientはAmazonEC2Clientのインスタンスという前提
*/

//AMI抽出の条件
DescribeImagesRequest describeImagesRequest = new DescribeImagesRequest();
List<String> ownersList = new ArrayList();

//OwnerIDを指定する ※ダミーなので注意
ownersList.add("0000000000");
describeImagesRequest.setOwners(ownersList);

//AMIのみ取得するために、Filterを定義する
ArrayList filters = new ArrayList();

Filter filter = new Filter();
filter.setName("image-type");

//machineを指定
List valueList = new ArrayList();
valueList.add("machine");
filter.setValues(valueList);

//Filterを定義
filters.add(filter);

//所持しているAMIのリストを取得
DescribeImagesResult describeImagesResult = amazonEC2Client.describeImages(describeImagesRequest);

//AMIのListを取得(Imageはcom.amazonaws.services.ec2.modelのImageクラスのこと)
List<Image> amiList = describeImagesResult.getImages();

//各AMIの中身を確認
for(Image image :amiList)
{
//AMIのID
Log.i("ImageId",image.getImageId());

//AMIの名前
Log.i("Name",image.getName());

//AMIの詳細
Log.i("Description",image.getDescription());

//AMIがカーネルイメージかラムディスクイメージかマシンイメージか
Log.i("ImageType",image.getImageType());

}

describeImagesの注意点として引数に条件であるDescribeImagesRequest を指定せずとも
実行可能ですが、公開されているAWSのAMIすべてが取得対象となり、レスポンスが返ってこなくなったり例外が発生したりします。

AmazonEC2Clientの関数なので、アカウントとの紐付きが当然のように感じますが、AWSのコンソールにもあるようにAMIはオフィシャルのものから、各ユーザーが公開しているものまであるので条件の指定は必要です。
今回はOwnerIDを指定して自分のアカウントのAMIを取得する形にしました。

OwnerID = 自分のアカウントIDなのですが、これってSDKから取得できるのだろうか。

※2011年9月27日追記修正
AMIの取得といいながら、ImageTypeのFilterが入っていませんでした。
カーネルイメージ、ラムディスクである、AKIとARIも含まれてしまいます。

hiroki0907 at 02:14トラックバック(0)Google Android | AWS 

トラックバックURL


現在の戦闘力
ドラゴンボール改 3 [DVD]

このブログの戦闘力

3919

「ナッパ」
クラスです。

by ブログ戦闘力チェッカー

  • ライブドアブログ