2013年11月15日金曜日

【AWS】SimpleQueueServiceクイックスタート for Java

■環境
Windows7 64bit
eclipse 3.7(Indigo)
Java 1.7.0_03
AWS SDK for Java 1.6.5

■クイックスタート
1. AWS のSDKをダウンロードする
http://aws.amazon.com/jp/tools/
ダウンロードしたSDKでSQSも使えるようになっています

2. eclipseでJavaプロジェクトを作成する
特に設定する項目はなし
プロジェクト名を適当に設定して作成する
プロジェクトを作成した各種ライブラリを配置するようのディレクトリ「lib」を作成する

3. ダウンロードしたzipファイルを解凍しjarファイルをeclipse上のプロジェクトにコピーする
解凍したファイルの中に「lib/aws-java-sdk-1.6.5.jar」があるのでそれを先ほど作成したeclipseのプロジェクト「lib」ディレクトリにコピーする
同様に「third-party/*」内のファイルをすべてプロジェクトの「lib」配下にコピーする

4. ビルドパスを通す
先ほどlib配下に配置したaws-java-sdk-1.6.5.jarとthird-party配下のjarファイルをビルドパスに追加します
プロジェクトを右クリックして「ビルド・パス」->「ビルド・パスの構成」から追加するか
jarファイルを右クリックし「ビルド・パス」->「ビルド・パスに追加」を実行してビルドパスを追加します

5. サンプル実行クラスと設定ファイルのコピー
解凍したファイルの中に「samples/AmazonSimpleQueueService/SimpleQueueServiceSample.java」をeclipseプロジェクトの「src」内にコピーします
解凍したファイルの中に「samples/AmazonSimpleQueueService/AwsCredentials.properties」をeclipseプロジェクトの「src」内にコピーします

6. アクセスキーとシークレットキーの取得
https://portal.aws.amazon.com/gp/aws/securityCredentials
アクセスしawsのアカウントでログインします
プロジェクト内にコピーしたAwsCredentials.propertiesを開き「accessKey」「secretKey」に上記で取得したアクセスキーとシークレットキーを入力します

7. サンプルクラスの実行
eclipseからSimpleQueueServiceSample.javaを実行します
キューの作成 -> キュー一覧の表示 -> メッセージの送信 -> メッセージの受信 -> メッセージの削除 -> キューの削除
という順にリクエストが呼ばれていきます

以上でサンプルの実行は完了です
サンプルクラスに対して適宜コメントを入れることでキューの削除やメッセージの削除を抑制することが可能です

■Tips
プロキシの設定
sqsオブジェクトを作成している部分で以下のようにconfを設定しオブジェクト生成するように変更します
ClientConfiguration conf = new ClientConfiguration();
conf.setProxyHost("proxyhostname");
conf.setProxyPort(8080);
AWSCredentialsProvider credentialsProvider = new ClasspathPropertiesFileCredentialsProvider();
AmazonSQS sqs = new AmazonSQSClient(credentialsProvider, conf);

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
がcloudfrontとs3の部分で警告表示されますが特にsqsでは問題なくキューやメッセージは作成、送信されます

リクエストの投げ方は基本的に「hogehogeRequest」クラスのオブジェクトを作成しパラメータ等を設定した上でAmazonSQSのhogehogeメソッドで呼び出す感じになります
ex) SetQueueAttributesを呼び出す場合
SetQueueAttributesRequest sqaRequest = new SetQueueAttributesRequest();
sqaRequest.setQueueUrl(queueUrl);
HashMap attributes = new HashMap();
attributes.put("DelaySeconds", "900");
sqaRequest.setAttributes(attributes);
sqs.setQueueAttributes(sqaRequest);

0 件のコメント:

コメントを投稿