2014年9月27日

Java SDKでリージョンを判断する方法

AWS Java Development Blog にリージョンを判断する方法が Post されていました。

API を呼び出すときは通常リージョンを指定する必要があります。
通常はリージョンをハードコーディングしたり、プロパティファイルに設定していますでしょうか?

こちらを動的にリージョンを判断することで、どのリージョンにデプロイしてもそのリージョンに限定した API を実行することができます。
たとえば東京リージョンのバックアップとしてシンガポールリージョンで動かそうとする場合、東京リージョンの API を呼び出すと意味が無くなります。

方法としてはブログにある通り、com.amazonaws.regions.Regions#getCurrentRegion() を呼び出すことになります。

Regions クラスのソースを確認すると、com.amazonaws.regions.EC2MetadataUtils#getInstanceInfo() を呼び出しています。
https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/regions/Regions.java

こちらを見ると、EC2 のメタデータ http://169.254.169.254//latest/dynamic/instance-identity/document/ から取得できる json の region を取得しているようです。
https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/util/EC2MetadataUtils.java

EC2 の MetaData はこんな感じで確認できます。確かに region がありますね。

$ curl 169.254.169.254/latest/dynamic/instance-identity/document/
{
"instanceId" : "i-12345678",
"billingProducts" : null,
"imageId" : "ami-12345678",
"pendingTime" : "2014-09-31T24:00:00Z",
"instanceType" : "t2.micro",
"architecture" : "x86_64",
"accountId" : "123456789012",
"ramdiskId" : null,
"kernelId" : "aki-12345678",
"region" : "ap-northeast-1",
"version" : "2010-08-31",
"privateIp" : "10.0.0.10",
"availabilityZone" : "ap-northeast-1c",
"devpayProductCodes" : null
}

JavaDoc に EC2 インスタンス上ではない場所で実行した場合には null となります。
これはインスタンスのメタデータが取れないからです。

これを活用してマルチリージョンでのデプロイを楽しみましょう~

2014年9月20日

ICONIA A500 を簡単に公式 ICS 4.0.3 にアップデートする方法

日本以外ではICSにアップデートされているICONIA A500ですが、簡単にアップデートする方法がわかったのでメモしておきます。

1. まずSDカードを用意します。

2. 公式ホームページからオペレーションシステムをダウンロードします。こちらからダウンロードできました。
ドライバのダウンロードページからO.S. を選択すると Android 4.0 Ice Cream Sandwich が選択肢にあります。一覧に出てくるファイルをダウンロードします。


3. ダウンロードしたファイル回答すると「update.zip」というファイルがあるので、SDカードのルートにコピーします。

4. ICONIAの電源を切り、SDカードを入れます。

5. 音量の左側を押しながら電源を入れます。自動的にアップデートが始まります。

以上となります。

メニューが英語になったり、アイコンが変わったりしましたが、無事にICSにアップデートできました。システムアップデートは日本語ですね。


びっくりするくらい簡単です。
Root化したり、よくわからないイメージをひろって入れる必要がありません。

パフォーマンスはあまり実感していませんが、Chromeが使えるようになるなど、使えるアプリが増えますので是非お試しください!
(あくまでも自己責任でお願いします)

2014年9月17日

CloudTrail で記録されるもの

みんな大好き CloudTrail でログを記録しましょう。
サポートされているリージョンはこちらの通り、通常使うことができるリージョンすべてでサポートされています。
  • US East (Northern Virginia)
  • US West (Oregon)
  • US West (Northern California)
  • EU (Frankfurt) Region (2014/10/23 追加)
  • EU West (Ireland)
  • AP Northeast (Tokyo)
  • AP Southeast (Sydney)
  • AP Southeast (Singapore)
  • SA East (Sao Paulo)
対応サービスはこちらにあります。サポートされていない API があったのでまとめてみました。対象サービスはドキュメントの一覧を参考にしています。
サービスサポート有無対象 Action備考
Compute & Networking
Amazon EC2すべてのAPIVPC、EBSと同じ
Auto ScalingすべてのAPI
Elastic Load BalancingすべてのAPI
Amazon VPCすべてのAPIEC2、EBSと同じ
Amazon Route 53×-
AWS Direct ConnectすべてのAPI
Storage & Content Delivery
Amazon S3×-Access Log あり
Amazon Glacier×-
Amazon EBSすべてのAPIEC2、VPCと同じ
AWS Import/Export×-
AWS Storage Gateway×-
CloudFrontすべてのAPI
Database
Amazon RDS不明明記なし
Amazon DynamoDB×-
Amazon ElastiCacheすべてのAPI
Amazon RedshiftすべてのAPI
Amazon SimpleDB×-
Analytics
Amazon EMRすべてのAPI
Amazon KinesisCreateStream
DeleteStream
DescribeStream
ListStreams
MergeShards
SplitShard
以下は対象外
AddTagsToStream
GetRecords
GetShardIterator
ListTagsForStream
PutRecord
RemoveTagsFromStream
AWS Data Pipeline×-
Applications
Amazon WorkSpaces×-
Amazon Zocalo明記なし
Deployment & Management
AWS Identity & Access ManagementすべてのAPI
AWS Security Token ServiceすべてのAPI
AWS CloudTrailすべてのAPI
Amazon CloudWatchPutMetricAlarm
DescribeAlarms
DescribeAlarmHistory
DescribeAlarmsForMetric
DisableAlarmActions
EnableAlarmActions
SetAlarmState
DeleteAlarms
以下は対象外
GetMetricStatistics
ListMetrics
PutMetricData
AWS Elastic Beanstalk明記なし
AWS CloudFormationすべてのAPI
AWS OpsWorksすべてのAPI
AWS CloudHSM×-
App Services
Amazon AppStream×-
Amazon CloudSearchすべてのConfiguration API
BuildSuggesters
CreateDomain
DefineAnalysisScheme
DefineExpression
DefineIndexField
DefineSuggester
DeleteAnalysisScheme
DeleteDomain
DeleteExpression
DeleteIndexField
DeleteSuggester
DescribeAnalysisSchemes
DescribeAvailabilityOptions
DescribeDomains
DescribeExpressions
DescribeIndexFields
DescribeScalingParameters
DescribeServiceAccessPolicies
DescribeSuggesters
IndexDocuments
ListDomainNames
UpdateAvailabilityOptions
UpdateScalingParameters
UpdateServiceAccessPolicies
2014/10/16 追加
Document Service APISearch APIは対象外
Amazon Elastic TranscoderすべてのAPI2014/10/27
Amazon SES×-
Amazon SQSAddPermission
CreateQueue
DeleteQueue
RemovePermission
SetQueueAttributes
以下は対象外
ChangeMessageVisibility
ChangeMessageVisibilityBatch
DeleteMessage
DeleteMessageBatch
GetQueueAttributes
GetQueueUrl
ListDeadLetterSourceQueues
ListQueues
ReceiveMessage
SendMessage
SendMessageBatch
Amazon SWFDeprecateActivityType
DeprecateDomain
DeprecateWorkflowType
RegisterActivityType
RegisterDomain
RegisterWorkflowType
以下は対象外
CountClosedWorkflowExecutions
CountOpenWorkflowExecutions
CountPendingActivityTasks
CountPendingDecisionTasks
DescribeActivityType
DescribeDomain
DescribeWorkflowExecution
DescribeWorkflowType
GetWorkflowExecutionHistory
ListActivityTypes
ListClosedWorkflowExecutions
ListDomains
ListOpenWorkflowExecutions
ListWorkflowTypes
PollForActivityTask
PollForDecisionTask
RecordActivityTaskHeartbeat
RequestCancelWorkflowExecution
RespondActivityTaskCanceled
RespondActivityTaskCompleted
RespondActivityTaskFailed
RespondDecisionTaskCompleted
SignalWorkflowExecution
StartWorkflowExecution
TerminateWorkflowExecution
Mobile Services
Amazon Cognito×-
Amazon Mobile Analytics×-
Amazon SNSAddPermission
ConfirmSubscription
CreatePlatformApplication
CreatePlatformEndpoint
CreateTopic
DeleteEndpoint
DeletePlatformApplication
DeleteTopic
GetEndpointAttributes
GetPlatformApplicationAttributes
GetSubscriptionAttributes
GetTopicAttributes
ListEndpointsByPlatformApplication
ListPlatformApplications
ListSubscriptions
ListSubscriptionsByTopic
ListTopics
RemovePermission
SetEndpointAttributes
SetPlatformApplicationAttributes
SetSubscriptionAttributes
SetTopicAttributes
Subscribe
Unsubscribe
2014/10/09 追加
Publish は対象外
こうしてみると、サポートされているサービスはまだ半分程度ですし、サポートされているものでも、対応外の API があるようですので、事前にチェックをしておきましょう!