1
1

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 1 year has passed since last update.

【OCI】オブジェクトストレージにJavaでファイルをアップロードしてみる

Last updated at Posted at 2023-07-03

はじめに

今回はOracle Cloud Infrastructure(OCI)のオブジェクトストレージに
Java SDKを使ってファイルをアップロードする方法を紹介したいと思います。

■実行環境(クライアントPC)
Windows10, Eclipse, Java

■参考サイト
https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/javasdk.htm#SDK_for_Java

当記事は公式サイトや外部情報を見ただけだと内容を理解するのが難しく、
手っ取り早くJavaでOCIオブジェクトストレージにファイルをアップしたい
という初心者の方向けの内容となっています。
まずは動かしてみるというところにフォーカスしているため
詳細については触れていないため、予めご了承ください。

■構成
image.png

◆目次
1.事前準備
2.Eclipse上でJavaのソースコードを作成
3.ファイルをアップロード

1. 事前準備

①OCIアカウントを用意する

OCIコンソールにログインし、オブジェクトストレージのバケットを作成し、
ファイルをアップロードできる権限(ポリシーが適用された)ユーザを用意します。

※今回は管理者ユーザ(IDCS_Administrators権限)を利用します。

②APIキーを作成する

外部のプログラムからOCIにアクセスするには認証が必要となります。
OCIにはいくつかの認証方法がありますが、今回はAPIキーを使用します。

・OCIコンソールにログインした後、画面右上の人型アイコンからユーザ設定を選択
image.png

・左下にあるリソースからAPIキーを選択し、APIキーの追加ボタンを押します。
image.png

・APIキー・ペアの生成を選択し、秘密キーと公開キーの両方をダウンロードし、
最後に追加ボタンを押します。
image.png

・追加ボタンを押すと、次のような構成ファイルのプレビューが表示されますので、
こちらをコピーしてテキストに保存しておきます。
image.png

・構成ファイルをコピーし忘れても後で再表示することはできます。
image.png

※秘密キーと構成ファイルは後で使用するので分かりやすいところに保存しておきます。

③オブジェクトストレージのバケットを作成する

左上のナビゲーションメニュー ( Ξ ) から[ストレージ] - [バケット]を選択
image.png

バケットの作成ボタンを押します。
image.png

今回はバケット名にbuckettestと入れてそのまま作成ボタンを押します。
image.png

これで正常にバケットが作成できました。
※可視性はデフォルトのプライベートとなっています。
(プライベートの場合は認証がないとアクセスできません)
image.png

④Eclipseをインストールする

下記のサイト等から自分の使いたいEclipse(Javaを含む)のバージョンを
ダウンロードし、インストールしておく。
https://mergedoc.osdn.jp/

2. Eclipse上でJavaのソースコードを作成

①プロジェクトを作成する

今回はOCIのSDKを使用するため、Mavenプロジェクトで作成します。
image.png

シンプルなプロジェクトの作成
デフォルト・ワークスペース・ロケーションの使用
の2つにチェックが入った状態で次に進みます。
image.png

グループIDとアーティファクトIDに任意の名前を入れて完了ボタンを押します。
image.png
ここでは以下を入力します。
グループID: com.ocitest.objectstrage
アーティファクトID: objectstorage

完了すると次のような階層のプロジェクトが作成されるので
pom.xmlを丸ごと差し替えます。
image.png

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ocitest.objectstrage</groupId>
  <artifactId>objectstrage</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>objectstrage</name>
    <dependency>
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-core</artifactId>
        <version>2.12.0</version>
    </dependency>        
    <dependencies>
    	<dependency>
        	<groupId>com.oracle.oci.sdk</groupId>
        	<artifactId>oci-java-sdk-objectstorage</artifactId>
        	<version>2.38.0</version>
    	</dependency>
	</dependencies>
</project>

続いてプロジェクトにJavaのクラスファイルを追加します。
image.png

ソースフォルダ、パッケージ、名前をつけて
Public static void mainをチェックし、完了ボタンを押します。
ここでは以下のように登録します。
ソース・フォルダー: objectstorage/src/main/java
パッケージ: objectstorage
名前: UploadFile
image.png

UploadFile.javaが生成されるので、こちらも丸ごとコードを書き換えます。

package objectstorage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.oracle.bmc.auth.AuthenticationDetailsProvider;
import com.oracle.bmc.auth.ConfigFileAuthenticationDetailsProvider;
import com.oracle.bmc.objectstorage.ObjectStorage;
import com.oracle.bmc.objectstorage.ObjectStorageClient;
import com.oracle.bmc.objectstorage.requests.PutObjectRequest;
import com.oracle.bmc.objectstorage.responses.PutObjectResponse;
public class UploadFile {

	public static void main(String[] args) throws Exception {
		
        String configurationFilePath = "<構成ファイルのフルパス>";
        String profile = "DEFAULT";
        String namespaceName = "<ネームスペース>";
        String bucketName = "<バケット名>";
        String objectName = "<アップロードファイル名>";
        String contentType = "application/octet-stream";
        String filePath = "<アップロードファイルのフルパス>";
        
        // 認証情報の取得
        AuthenticationDetailsProvider provider = new ConfigFileAuthenticationDetailsProvider(configurationFilePath, profile);

        // Object Storageクライアントの作成
        ObjectStorage client = new ObjectStorageClient(provider);
        client.setRegion("ap-tokyo-1");

        // ファイルの読み込み
        File file = new File(filePath);
        InputStream stream = new FileInputStream(file);

        // アップロードのリクエストの作成
        PutObjectRequest request = PutObjectRequest.builder()
                .namespaceName(namespaceName)
                .bucketName(bucketName)
                .objectName(objectName)
                .contentType(contentType)
                .putObjectBody(stream)
                .build();

        // アップロードの実行
        PutObjectResponse response = client.putObject(request);
        client.close();

        System.out.println("Object was uploaded with etag: " + response.getETag());

	}

}

次の変数に関しては実行環境に合わせて変更します。
*入力サンプル
String configurationFilePath = "C:¥¥Users¥¥config";
String profile = "DEFAULT";
String namespaceName = "<ネームスペース>";
String bucketName = "buckettest";
String objectName = "data.txt";
String contentType = "application/octet-stream";
String filePath = "C:¥¥Users¥¥data.txt";

※注意事項
①APIキーの作成で生成されたファイルは以下ファイル名、パスとして保存しています。
-構成ファイル: C:¥Users¥config
-秘密キー: C:¥Users¥oci.pem

②アップロードファイルも①と同階層に保存しています。
C:¥Users¥data.txt

③Javaでファイルパスを指定する際は以下のように円マークを重ねる必要があります。
例. C:¥¥Users¥¥config

④<ネームスペース>はオブジェクトストレージのバケット情報から確認できます。
image.png
⑤構成ファイル(config)の内容について
APIキーを作成した際に構成ファイルをそのまま保存しましたが、
key_fileは何も設定されていないため秘密キーが保存されている
フルパスに書き換えてください。

[DEFAULT]
user=ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxx
fingerprint=1f:12:xxxxxxxxxxxxxxxxxxxxxxxxxx
tenancy=ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxx
region=ap-tokyo-1
key_file=C:¥¥Users¥¥oci.pem

pom.xml、Javaのソースコード、構成ファイル(config)、秘密キー、
アップロードファイルの準備が整ったら、Mavenのプロジェクトの更新を選択
image.png
対象のプロジェクトを選択して、OKを押します。
image.png
ここまでの作業で準備が全て整いました。

3. ファイルをアップロード

あとはEclipseからJavaを実行するだけでオブジェクトストレージに
ファイルがアップロードされます。
image.png
image.png

おわり

以上、OCI SDKを使ってオブジェクトストレージに
ファイルを簡単にアップロードすることができました。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?