プロキシ経由でAmazon S3へファイルをアップロードする方法(Java編)

java

前回は、Amazon S3 へファイルをアップロードする方法を紹介しました。
今回は、前回のソースにひと手間加えて、プロキシ経由でS3へファイルをアップロードする方法を紹介します。

[スポンサーリンク]

個人の開発であれば、プロキシを通す必要はあまりないと思います。
しかし企業のシステムであれば、プロキシ経由でインターネットに接続するという場面も少なくはないと思います。

この章でやること

AmazonS3Clientを使って、プロキシ経由で、S3にファイルをアップロードします。

aws-java-sdkの設定

Mavenを使っている方はこちらをpom.xmlに追加してください。

<dependency>
	<groupId>com.amazonaws</groupId>
	<artifactId>aws-java-sdk</artifactId>
	<version>1.4.6</version>
</dependency>

S3へファイルアップロードするプログラム

AWS SDKに梱包されているサンプルプログラムをベースにしています。
サンプルプログラムの読み方はこちらを参照して下さい。
S3のサービス概要はこちら、amazon本家をどうぞ

public static void main(String[] args) throws IOException {
	String bucketName = "bucket-name";
	String filePath = "/test/";
	String fileName = "upload.jpeg";
	
	// ここでproxyの設定をします。
	ClientConfiguration conf = new ClientConfiguration();
	conf.setProtocol(Protocol.HTTPS);
	conf.setProxyHost("proxy.com");
	conf.setProxyPort(80);

	// ここで、accessKeyとsecretKeyを設定しています。
	// Keyは、AwsCredentials.propertiesに設定しています
	AmazonS3 s3 = new AmazonS3Client(
						new ClasspathPropertiesFileCredentialsProvider(),
						conf);

	File file = new File("./test.jpeg");
	// 既にバケット名が登録されている場合は不要です。
	// 既にバケット名が登録されている状態だと、ここで409エラーとなるのでコメントアウトしています
	// s3.createBucket(bucketName);
	s3.putObject(new PutObjectRequest(bucketName, filePath+fileName, file));
}

AwsCredentials.properties

accessKeysecretKey を設定します。

# Fill in your AWS Access Key ID and Secret Access Key
# http://aws.amazon.com/security-credentials
accessKey =XXXX
secretKey =XXX

解説

8~10行目で、ClientConfigurationへプロキシの設定をしています。
プロキシサーバは、各自のプロキシサーバの設定情報を入れて下さい。
サンプルソースでは、プロキシサーバのプロトコルをHTTPSにしていますが、こちらも各自のプロキシサーバに依存します。
HTTPでOKな場合は、HTTPを指定して下さい。

ClientConfigurationは、AmazonS3Clientをインスタンス化する時に第二引数として設定します。

実行結果

プロキシ経由で、こちらへファイルがアップされます。
http://S3ドメイン/bucket-name/test/upload.jpeg

bucket-nameはバケット名。
testは、ファイルアップロード時に指定したディレクトリ。
upload.jpegは、ファイルアップロードしたファイルになります。

最後に

プロキシ経由にする方法はいかがでしたか?
意外と簡単で拍子抜けしたのではないでしょうか。私は当初拍子抜けしました(^^;

冒頭でも触れましたが、企業のシステム(ネットワーク)では、インターネットに接続する際、プロキシサーバを経由するネットワーク設計となっていることが多いと思います。
AmazonS3Clientでは、プロキシの設定も簡単ですので、しっかりとおさえておきましょう!
それでは!