3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

S3 ( minio ) と プロキシサーバ ( nginx ) の構築、クライアント( AWS CLI, AWS SDK for Java ) の設定・実装

Last updated at Posted at 2020-04-09

概要

以下構成を構築してみます。

+-------------------------------------------+
| S3クライアント ( AWS CLI , AWS SDK for Java ) |
+----+--------------------------------------+
     |
+----v--------------------------------------+
| プロキシサーバ ( nginx ) 192.168.0.100:10080 |
+----+--------------------------------------+
     |
+----v--------------------------------------+
| S3 ( minio )          192.168.1.100:9000  |
+-------------------------------------------+

S3互換オブジェクトストレージ ( minio )

ワンコマンドで起動。

$ docker run -p 9000:9000 --name minio1 \
  -e "MINIO_ACCESS_KEY=minio" \
  -e "MINIO_SECRET_KEY=miniotest" \
  -v /mnt/data:/data \
  minio/minio server /data

AccessKey、SecretAccessKeyは以下となります。

key value
AccessKey minio
SecretAccessKey miniotest

nginx

192.168.0.100:10080でlistenし、
minio(192.168.1.100:9000)にproxyする設定例です。

server {
    listen  10080;
    server_name  192.168.0.100;
    ignore_invalid_headers off;
    location / {
        proxy_pass http://192.168.1.100:9000;
        proxy_http_version 1.1;
    }
}

S3クライアント

プロキシサーバ経由でS3にアクセスする設定、実装例を紹介します。

AWS CLI

profileを設定しておきます。

$ aws configure --profile minio
AWS Access Key ID [None]: minio
AWS Secret Access Key [None]: miniotest
Default region name [None]:
Default output format [None]:
$

環境変数HTTP_PROXYでプロキシサーバを指定できます。
参考 : HTTP プロキシを使用する - AWS Command Line Interface

$ HTTP_PROXY=http://192.168.0.100:10080 aws --profile minio --endpoint-url http://192.168.1.100:9000 s3api create-bucket --bucket example

AWS SDK for Java

ClientConfigurationにプロキシサーバのHost, Portを設定できます。
参考 : クライアント側の設定 - AWS SDK for Java

import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;

public class Example {

    private static final String endpoint = "http://192.168.1.100:9000"; 
    private static final String region = "ap-northeast-1";
    private static final String accessKey = "minio";
    private static final String secretAccessKey = "miniotest";

    // proxy
    private static final String http_proxy = "http://192.168.0.100";
    private static final int http_proxy_port = 10080;

	public void exemple(){

        ClientConfiguration clientConf = new ClientConfiguration();
        clientConf.setProxyHost(http_proxy);
        clientConf.setProxyPort(http_proxy_port);
        
        AmazonS3 client = AmazonS3ClientBuilder.standard()
            .withEndpointConfiguration(new EndpointConfiguration(endpoint, region))
            .withClientConfiguration(clientConf)
            .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretAccessKey)))
            .build();

        client.createBucket("test");
    }
}

まとめ

S3 ( minio ) とプロキシサーバ ( nginx ) を構築しクライアント ( AWS CLI , AWS SDK ) からアクセスする手順を紹介しました。
S3を利用する開発環境の構築などに役立ちましたら幸いです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?