この文書ではサードパーティツールでNHN Cloudオブジェクトストレージサービスを使用する方法を説明します。
Cyberduckはオープンソースのクラウドストレージブラウザです。
Cyberduckダウンロードページから使用しているOSに合ったインストールファイルをダウンロードしてインストールします。
オブジェクトストレージに接続するには、接続情報を保存するブックマークを作成する必要があります。ブラウザ上部の新しい接続をクリックした後、ドロップダウンメニューからOpenStack Swift(Keystone 2.0)を選択します。必要な情報を入力した後、接続をクリックすると新しいブックマークが作成されます。
項目 | 説明 |
---|---|
別名 | ブックマークのエイリアスです。好きな値を自由に設定できます。 |
サーバー | アイデンティティサービス(identity)のアドレスです。オブジェクトストレージサービスページの API Endpoint設定 ダイアログボックスで確認できます。 |
Tenant ID:Access Key | Tenant ID:ユーザーのプロジェクトIDです。Webコンソールの プロジェクト管理 > プロジェクト基本情報で確認できます。 |
Access ID: NHN Cloud会員ID(メール形式)またはIAMメンバーIDを入力します。 | |
Secret Key | オブジェクトストレージサービスページの API Endpoint設定 ダイアログボックスで設定したAPIパスワードを入力します。 |
[参考] APIパスワードの設定方法はAPIガイドのAPIパスワード設定項目を参照してください。
接続するブックマークをダブルクリックしてオブジェクトストレージに接続します。
オブジェクトストレージに接続すると、すべてのリージョンのコンテナリストがブラウザに表示されます。コンテナをダブルクリックしてコンテナのオブジェクトリストを照会できます。
[参考] 異なるリージョンに同じ名前のコンテナがある場合、同じ名前のコンテナが複数表示されます。 メニューから表示 > 列 > 地域を選択すると、列項目にリージョンを表示できます。
コンテナリストの空きスペースで右クリックし、新規フォルダ...を選択して新しいコンテナを作成できます。コンテナの名前とリージョンを入力し、作成をクリックすると、コンテナが作成されます。
[参考] コンテナリストの空きスペースで右クリックし、再表示を選択すると、コンテナリストを更新できます。
コンテナを選択した後、ブラウザ上部のアクション > アップロード...をクリックするか、オブジェクトリストで右クリックした後、アップロード。..をクリックしてファイルを選択してアップロードします。
[参考] Cyberduckでフォルダをアップロードまたは作成すると、フォルダ名と同じ0バイトのオブジェクトがもう一つ作成されます。これはコンソールまたはオブジェクトストレージAPIで確認でき、削除しても構いません。
ダウンロードするオブジェクトを選択した後、右クリックしてダウンロードを選択します。ドラッグ&ドロップでオブジェクトをダウンロードすることもできます。
[参考] オブジェクトをダウンロードすると、基本的にローカルのダウンロードフォルダに保存されます。右クリックして指定した場所にダウンロードを選択すると、指定したパスにダウンロードできます。 オブジェクトをアップロードまたはダウンロードすると、転送ウィンドウがポップアップして進行状況を把握できます。
削除するコンテナを選択し、右クリックして削除を選択します。
[注意] コンテナを削除すると、、コンテナ内のオブジェクトも全て削除されるので注意が必要です。
削除するオブジェクトを選択し、右クリックして削除を選択します。
ローカルフォルダをコンテナまたはフォルダと同期できます。コンテナまたはフォルダを選択した後、右クリックして同期を選択します。 フォルダ同期は、ダウンロード、アップロード、ミラーリングの3つの方法を提供します。
オブジェクトストレージで変更または追加されたオブジェクトをローカルにダウンロードします。
ローカルで変更または追加されたファイルをオブジェクトストレージにアップロードします。
ローカルとオブジェクトストレージを比較して変更または不足しているファイルまたはオブジェクトをアップロードまたはダウンロードします。
[参考] 同期の詳細についてはCyberduckのSynchronize Folders文書を参照してください。
Terraformはインフラを簡単に構築して安全に変更し、効率的にインフラの形状を管理できるオープンソースツールです。基本的な使い方はユーザーガイド > Compute > Instance > Terraform使用ガイドを参照してください。
一般的に各リソースは独立していますが、他の特定のリソースに依存関係を持つこともできます。リソースのラベルを通じて他のリソースの情報を参照すると、Terraformは自動的に依存関係を設定します。
例えば、conatiner1
コンテナに含まれるobject1
オブジェクトは次のように表現できます。
# コンテナリソース
resource "nhncloud_objectstorage_container_v1" "container_1" {
name = "container1"
}
# オブジェクトリソース
resource "nhncloud_objectstorage_object_v1" "object_1" {
container_name = nhncloud_objectstorage_container_v1.container_1.name
name = "object1"
source = "/tmp/dummy"
}
[参考] 明示的なリソースの依存関係指定方法はTerraformのResource dependencies文書を参照してください。
# 基本コンテナの作成
resource "nhncloud_objectstorage_container_v1" "container_1" {
region = "KR1"
name = "tf-test-container-1"
}
# オブジェクトバージョン管理コンテナの作成
resource "nhncloud_objectstorage_container_v1" "container_2" {
region = "KR1"
name = "tf-test-container-2"
versioning_legacy {
type = "history"
location = resource.nhncloud_objectstorage_container_v1.container_1.name
}
}
# パブリックコンテナの作成
resource "nhncloud_objectstorage_container_v1" "container_3" {
region = "KR1"
name = "tf-test-container-3"
container_read = ".r:*,.rlistings"
}
名前 | タイプ | 必須 | 説明 |
---|---|---|---|
region | String | NHN Cloudリソースを管理するリージョン | |
name | String | O | コンテナ名 |
container_read | String | コンテナの読み取りに対する役割ベースのアクセスルールを設定 | |
container_write | String | コンテナの書き込みに対するロールベースアクセスルール | |
force_destroy | Boolean | コンテナを強制的に削除するかどうか、 true またはfalse 一緒に削除されたオブジェクトは復元できません。 |
|
versioning_legacy | Object | オブジェクトバージョン管理設定 | |
versioning_legacy.type | String | history に指定 |
|
versioning_legacy.location | String | オブジェクトの旧バージョンを保管するコンテナ名 |
# オブジェクトの作成
resource "nhncloud_objectstorage_object_v1" "object_1" {
region = "KR1"
container_name = nhncloud_objectstorage_container_v1.container_1.name
name = "test/test1.json"
content_type = "application/json"
content = <<JSON
{
"key" : "value"
}
JSON
}
# ファイルアップロード
resource "nhncloud_objectstorage_object_v1" "object_2" {
region = "KR2"
container_name = nhncloud_objectstorage_container_v1.container_1.name
name = "test/test2.json"
source = "./test2.txt"
}
名前 | タイプ | 必須 | 説明 |
---|---|---|---|
name | String | O | オブジェクト名 |
container_name | String | O | コンテナ名 |
source | String | O | アップロードするローカルファイルシステム上のファイルパスcontent , copy_from または object_manifest と一緒に使用できません。source , content , copy_from または object_manifest のいずれかを必ず指定する必要があります。 |
content | String | O | 作成するオブジェクトの内容source , copy_from または object_manifest と一緒に使用できません。 |
copy_from | String | O | コピーする原本オブジェクト、 {コンテナ}/{オブジェクト} source , content または object_manifest と一緒に使用できません。 |
object_manifest | String | O | 分割したセグメントオブジェクトをアップロードしたパス、 {Segment-Container}/{Segment-Object}/ source , content または copy_from と一緒に使用できません。 |
content_disposition | String | Content-Disposition ヘッダを指定 |
|
content_encoding | String | Content-Encoding ヘッダを指定 |
|
content_type | String | Content-Type ヘッダを指定 |
|
delete_after | Integer | オブジェクト有効時間、 UNIX時間(秒) | |
delete_at | String | オブジェクトの有効期限、 UNIX時間(秒), RFC3339フォーマット文字列 | |
detect_content_type | Boolean | コンテンツタイプを推論するかどうか設定するとcontent_type が無視されます。 |
Cyberduck - https://docs.cyberduck.io/cyberduck/ Terraform - https://www.terraform.io/ Terraform Registry - https://registry.terraform.io/