2012年01月20日
android開発 AWS SDK for Android 利用可能な地域を取得する
今回は利用可能な地域(リージョン)を取得する方法について書きます。
AmazonEC2ClientのdescribeRegionsにてアカウント毎に取得可能です。
Regionクラスはこれまたs3等と名前が混在しますが、こちらが該当します。
AmazonEC2ClientのdescribeRegionsにてアカウント毎に取得可能です。
//利用可能な地域をListで取得
DescribeRegionsResult describeRegionsResult = amazonEC2Client.describeRegions();
List<Region> regionList = describeRegionsResult.getRegions();
//コンソールに出力
for(Region region :regionList)
{
//地域名称とエンドポイントを出力
Log.i("Name:",region.getRegionName());
Log.i("Endpoint:",region.getEndpoint());
}
Regionクラスはこれまたs3等と名前が混在しますが、こちらが該当します。
2012年01月09日
android開発 AWS SDK for Android ELB配下の各インスタンスの状態を確認する
今回はELBに紐づいたインスタンスの状態を確認する方法です。
describeInstanceHealthで取得しますが、他の関数と同じくリクエスト用に値を定義するクラス、DescribeInstanceHealthRequestがあります。
InstanceStateクラスはec2のものではなく、elasticloadbalancingのものが該当するので注意が必要です。
ReferenceによるとELBの名前指定による配下のインスタンス全件取得も可能のようですが、インスタンスをListで個別指定して取得することも可能のようです。
describeInstanceHealthで取得しますが、他の関数と同じくリクエスト用に値を定義するクラス、DescribeInstanceHealthRequestがあります。
//DescribeInstanceHealthRequestのインスタンス
DescribeInstanceHealthRequest describeInstanceHealthRequest = new DescribeInstanceHealthRequest();
//取得対象となるELBの名前を定義
describeInstanceHealthRequest.setLoadBalancerName("hogehoge-Default-Environment");
//ELBに紐づいたインスタンスの状態を取得
DescribeInstanceHealthResult describeInstanceHealthResult = amazonElasticLoadBalancingClient.describeInstanceHealth(describeInstanceHealthRequest);
//DescribeInstanceHealthResultからInstanceStateのListを取得
List<com.amazonaws.services.elasticloadbalancing.model.InstanceState> instanceStates = describeInstanceHealthResult.getInstanceStates();
//状態を出力して確認
for(com.amazonaws.services.elasticloadbalancing.model.InstanceState instanceState :instanceStates)
{
//各インスタンスのIDと状態を確認
Log.i("InstanceId:State", instanceState.getInstanceId() + ":" + instanceState.getState());
}
InstanceStateクラスはec2のものではなく、elasticloadbalancingのものが該当するので注意が必要です。
ReferenceによるとELBの名前指定による配下のインスタンス全件取得も可能のようですが、インスタンスをListで個別指定して取得することも可能のようです。
2012年01月06日
android開発 AWS SDK for Android ELBにインスタンスを追加する
今回はELBにインスタンスを追加します。
registerInstancesWithLoadBalancerの引数となる、RegisterInstancesWithLoadBalancerRequestに必要な情報を定義する形になります。
対象となるインスタンスを定義するInstanceクラスはec2のものではなく、こちらのelasticloadbalancingのクラスになります。クラス名がぶつかるので、サンプルはパッケージも書いています。
Referenceはこちら。
registerInstancesWithLoadBalancerの引数となる、RegisterInstancesWithLoadBalancerRequestに必要な情報を定義する形になります。
//ELBにインスタンスを追加
RegisterInstancesWithLoadBalancerRequest registerInstancesWithLoadBalancerRequest = new RegisterInstancesWithLoadBalancerRequest();
//対象のELBと追加するインスタンスを定義
registerInstancesWithLoadBalancerRequest.setLoadBalancerName("awseb-Default-hogehoge");
com.amazonaws.services.elasticloadbalancing.model.Instance instance = new com.amazonaws.services.elasticloadbalancing.model.Instance("i-hogehoge");
registerInstancesWithLoadBalancerRequest.withInstances(instance);
//登録処理
RegisterInstancesWithLoadBalancerResult registerInstancesWithLoadBalancerResult = amazonElasticLoadBalancingClient.registerInstancesWithLoadBalancer(registerInstancesWithLoadBalancerRequest);
対象となるインスタンスを定義するInstanceクラスはec2のものではなく、こちらのelasticloadbalancingのクラスになります。クラス名がぶつかるので、サンプルはパッケージも書いています。
Referenceはこちら。
2011年12月24日
Graph APIからのウォール投稿で画像が反映されない
ELBを使ってFacebookアプリを作った場合に発生する特殊なケースです。
ウォール投稿の際にpictureに有効なURLを指定しているのに、なぜか反映されない場合があります。
現象は以下の通りです。
ELBに対しroute 53を使いAレコードでドメインを割り当てる
↓
割り当てたドメインで画像の参照を確認
↓
Grapth APIから投稿しても反映されない
原因はELBに割り当てたドメインからFacebook側が引けていないようです。(おそらく)
CNameだったら反映するのかなど細かい検証はしていませんが、解決方法としては
Grapth APIからの投稿時にELBのデフォルトドメインにすることで、Facebook側が取得、保存してくれます。
ウォール投稿の際にpictureに有効なURLを指定しているのに、なぜか反映されない場合があります。
現象は以下の通りです。
ELBに対しroute 53を使いAレコードでドメインを割り当てる
↓
割り当てたドメインで画像の参照を確認
↓
Grapth APIから投稿しても反映されない
原因はELBに割り当てたドメインからFacebook側が引けていないようです。(おそらく)
CNameだったら反映するのかなど細かい検証はしていませんが、解決方法としては
Grapth APIからの投稿時にELBのデフォルトドメインにすることで、Facebook側が取得、保存してくれます。
2011年12月20日
android開発 AWS SDK for Android ELBのリストを取得する
今回はアカウントが保持しているロードバランサのリストを取得します。
describeLoadBalancersの戻り値以降は、EC2と似たような形でgetLoadBalancerDescriptionsというメソッドでLoadBalancerDescriptionのListが取得可能です。
//AmazonElasticLoadBalancingClientのインスタンス
AmazonElasticLoadBalancingClient amazonElasticLoadBalancingClient = new AmazonElasticLoadBalancingClient(basiAwsCredentials);
//ELBのリスト取得
DescribeLoadBalancersResult describeLoadBalancersResult = amazonElasticLoadBalancingClient.describeLoadBalancers();
List<LoadBalancerDescription> elbList = describeLoadBalancersResult.getLoadBalancerDescriptions();
//コンソールに出力
for(LoadBalancerDescription description :elbList)
{
Log.i("LoadBalancerName:",description.getLoadBalancerName());
}
describeLoadBalancersの戻り値以降は、EC2と似たような形でgetLoadBalancerDescriptionsというメソッドでLoadBalancerDescriptionのListが取得可能です。
2011年12月19日
android開発 AWS SDK for Android ELBを削除する
今回はELBを削除するパターンです。
サンプルは前回作成したELBを削除します。
deleteLoadBalancerは戻り値のクラスが無いので、結果は再度リストを取得するかコンソールで確認する形になります。
DeleteLoadBalancerRequestクラスは実質削除対象のロードバランサの名前を指定するだけなので、コンストラクタの引数に入れることも可能です。Referenceはこちら。
サンプルは前回作成したELBを削除します。
//AmazonElasticLoadBalancingClientのインスタンス
AmazonElasticLoadBalancingClient amazonElasticLoadBalancingClient = new AmazonElasticLoadBalancingClient(basiAwsCredentials);
//DeleteLoadBalancerRequestのインスタンス
DeleteLoadBalancerRequest deleteLoadBalancerRequest = new DeleteLoadBalancerRequest();
//削除対象となるロードバランサの名前を指定
deleteLoadBalancerRequest.setLoadBalancerName("hogehogeELB");
//削除を実行
amazonElasticLoadBalancingClient.deleteLoadBalancer(deleteLoadBalancerRequest);
deleteLoadBalancerは戻り値のクラスが無いので、結果は再度リストを取得するかコンソールで確認する形になります。
DeleteLoadBalancerRequestクラスは実質削除対象のロードバランサの名前を指定するだけなので、コンストラクタの引数に入れることも可能です。Referenceはこちら。
2011年12月17日
android開発 AWS SDK for Android ELBを作成する
AWS SDKはずっとEC2周辺をやっていましたが、ELB(Elastic Load Balancing)についても試してみました。
今回はロードバランサを作成するサンプルです。
名前と地域(AvailabilityZone)だけでなく、ポートも設定しないと作成する際にエラーになります。
ポートはListで複数指定が可能です。
今回はロードバランサを作成するサンプルです。
//AmazonElasticLoadBalancingClientのインスタンス
AmazonElasticLoadBalancingClient amazonElasticLoadBalancingClient = new AmazonElasticLoadBalancingClient(basiAwsCredentials);
//CreateLoadBalancerRequestのインスタンス
CreateLoadBalancerRequest createLoadBalancerRequest = new CreateLoadBalancerRequest();
//名前を指定
createLoadBalancerRequest.withLoadBalancerName("hogehogeELB");
//地域を指定
createLoadBalancerRequest.withAvailabilityZones("us-east-1a");
//ポートを指定
Listener listener = new Listener("HTTP", 80, 80);
createLoadBalancerRequest.withListeners(listener);
//ロードバランサを作成
CreateLoadBalancerResult createLoadBalancerResult = amazonElasticLoadBalancingClient.createLoadBalancer(createLoadBalancerRequest);
名前と地域(AvailabilityZone)だけでなく、ポートも設定しないと作成する際にエラーになります。
ポートはListで複数指定が可能です。

![ドラゴンボール改 3 [DVD]](http://ecx.images-amazon.com/images/I/51JrvvDeouL._SX339_CR27,119,140,140_.jpg)