• 検索結果がありません。

データ アクセス ガイド

N/A
N/A
Protected

Academic year: 2021

シェア "データ アクセス ガイド"

Copied!
201
0
0

読み込み中.... (全文を見る)

全文

(1)

Elastic Cloud Storage (ECS)

バージョン 2.2.1

データ

アクセス ガイド

302-002-791 03

(2)

Copyright © 2013-2016 EMC ジャパン株式会社. All rights reserved. (不許複製・禁無断転載) Published in the USA. 2016 年 8 月発行 EMC Corporation は、この資料に記載される情報が、発行日時点で正確であるとみなしています。この情報は予告なく変更される ことがあります。 この資料に記載される情報は、「現状有姿」の条件で提供されています。EMC Corporation は、この資料に記載される情報に関す る、どのような内容についても表明保証条項を設けず、特に、商品性や特定の目的に対する適応性に対する黙示の保証はいたし ません。

EMC²、EMC、および EMC ロゴは、米国およびその他の国における EMC Corporation の登録商標または商標です。他のすべての 名称ならびに製品についての商標は、それぞれの所有者の商標または登録商標です。 ご使用の製品に関する規制等についての最新情報は、EMC オンライン サポート(https://support.emc.com)を参照してください。 EMC ジャパン株式会社 〒151-0053 東京都渋谷区代々木 2-1-1新宿マインズタワー http://japan.emc.com お問い合わせは http://japan.emc.com/contact

(3)

9 11

S3 13

ECS の Amazon S3 サポートの概要 15

ECS の Amazon S3 API サポート... 16

S3 のサポート機能 17 S3 API のサポート対象およびサポート対象外の機能... 18 S3 の拡張機能 21 API の拡張機能... 22 オブジェクト内でのバイト範囲の更新... 22 オブジェクトの一部を上書き...23 オブジェクトにデータを追加...24 オブジェクト内での複数のバイト範囲の読み取り... 25 メタデータ検索拡張機能 27 メタデータ検索の使用...28 バケットへのメタデータ インデックス値の割り当て...28

ECS 管理 REST API を使用したインデックス値の設定...28

S3 API を使用した値の設定... 30 S3 プロトコルによるメタデータのオブジェクトへの割り当て...31 メタデータ検索クエリーの使用... 31 Datetime クエリー...33 メタデータ検索の例... 34 ECS のシステム メタデータとオプション属性...35 秘密キーの作成と管理 37 秘密キーの作成と管理...38 オブジェクト ユーザーのキーの作成...38 ECS ポータルからの秘密キーの作成... 38

ECS 管理 REST API を使用した S3 秘密キーの作成...38

S3 秘密キーの作成: セルフ サービス...39 セルフ サービス キーの操作...39 S3 サービスでの認証 43 S3 サービスでの認証... 44 図 表 第 1 章 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章

目次

Elastic Cloud Storage (ECS)2.2.1 データ アクセス ガイド 3

(4)

Java クライアント アクセス 45

SDK を使って S3 サービスにアクセス... 46

Java Amazon SDK の使用... 46

ECS の Java SDK クライアント ...48

OpenStack Swift 49 ECS の OpenStack Swift サポートの概要 51 ECS の OpenStack Swift API サポート... 52

Swift のサポート機能 53 サポート対象のOpenStack Swift 機能...54 Swift の拡張機能 57 Swift API の拡張機能... 58 オブジェクト内でのバイト範囲の更新... 58 オブジェクトの一部を上書き...59 オブジェクトにデータを追加...60 オブジェクト内での複数のバイト範囲の読み取り... 61 認証 63 OpenStack Swift の認証...64 ECS ポータルでの Swift ユーザーの作成... 64 OpenStack バージョン 1.0 認証 ... 65 OpenStack バージョン 2.0 認証... 67 ECS Keystone V3 統合を使用した認証... 69 Keystone ユーザー認証のための ECS 構成... 70 許可 71 コンテナーに対する認証...72 EMC Atmos 75 ECS の EMC Atmos サポートの概要 77 ECS の EMC Atmos API サポート... 78

Atmos のサポート機能 79 サポート対象のEMC Atmos REST API コール...80

サポート対象外のEMC Atmos REST API コール...81

EMC Atmos REST API コールのサブテナント サポート...82

Atmos API の拡張機能 83 API の拡張機能... 84 オブジェクトにデータを追加... 84 第 7 章 第 8 章 第 9 章 第 10 章 第 11 章 第 12 章 第 3 部 第 13 章 第 14 章 第 15 章 目次 第 2 部

(5)

CAS 87 ECS ポータルを使用した CAS SDK アプリケーション サポートの構成 89 ECS の CAS サポートの設定...90 コールド ストレージ... 90 コンプライアンス... 91 プラットフォーム ハードニング... 92 コンプライアンスと保存ポリシー... 92 コンプライアンス エージェント... 93 ECS の CAS の保存...94 ネームスペースの保存ポリシーの設定... 95 CAS のバケットの設定... 96 CAS オブジェクト ユーザーの設定... 97 ユーザーのバケットACL の設定...98

CAS ユーザーをサポートする ECSREST API...100

CAS(コンテンツ アドレス ストレージ)SDK API サポート... 101

ECS 管理 API 103 ECS 管理 REST API の概要 105 ECS 管理 REST API...106

ECS 管理サービスを使用した認証 107 ECS 管理 REST API を使用した認証...108

AUTH-TOKEN を使用した認証 ...108

cookie を使用した認証... 109

ログアウト... 110

whoami...110

ECS 管理 REST API のサマリー 113 ECS 管理 REST API サマリー... 114

HDFS 119 ECS HDFS の概要 121 ECS HDFS とは...122 ECS HDFS を使用するための Hadoop の構成 ...123 ファイル システム アクセスのための ECSHDFS URI... 124 Hadoop 認証モード... 124 ファイル システムとしてのバケットへのアクセス...125 バケットのカスタム グループ ACL とデフォルト グループ... 125 Hadoop のスーパーユーザーとスーパーグループ... 126 マルチ プロトコル(クロス ヘッド)アクセス... 126 Hadoop Kerberos 認証モード...127 プロキシ ユーザー...127 同等ユーザー...127 SymLink のサポート... 128

シンプルなHadoop クラスターから Kerberos Hadoop クラスターへの移行....128 第 4 部 第 16 章 第 5 部 第 17 章 第 18 章 第 19 章 第 6 部 第 20 章 目次

(6)

ファイル システムとの対話操作... 129 サポート対象とサポート対象外のHadoop アプリケーション...129 HDFS ファイル システムのバケットの作成 131 ECS ポータルを使用した HDFS バケットの作成... 132 カスタム グループ バケット ACL の設定... 134 ユーザーのバケットACL 権限の設定... 135 Hadoop 権限と ECS バケット権限の例... 136

Hortonworks Ambari を使用した Hadoop と ECS HDFS の統合 139 Ambari による Hortonworks クラスターの導入... 140

Ambari のダウンロード... 140

ECS HDFS Client Library のダウンロード... 140

ECS クライアント ライブラリを導入するローカル リポジトリのセットアップ...140

Ambari サーバーのインストール... 141

Ambari Hadoop ECS スタックの有効化... 141

Ambari エージェントの手動インストール... 142 Hadoop のインストール ...142 ECS HDFS とシンプルな Hadoop クラスターの統合の構成 147 ECS HDFS とシンプルな Hadoop クラスターの統合の構成... 148 ECS HDFS と Hadoop との統合の計画...148 ECS HDFS インストールおよびサポート パッケージの取得...149 ECS HDFS クライアント ライブラリの導入...149 Pivotal HAWQ の構成... 151 Hadoop core-site.xml ファイルの編集...152 HAWQ データベースの初期化 ...155 HBASE hbase-site.xml の編集... 156 再起動とアクセスの確認...157

ECS HDFS と安全な(Kerberos 対応)Hadoop クラスターの統合の構成 159 安全Hadoop クラスターと ECSHDFS の統合 ...160

シンプルなクラスターからKerberos クラスターへの移行のプランニング...160

Kerberos 環境の Pivotal HAWQ の構成...161

ECS サービス プリンシパルを使用した ECS データ ノードの構成... 162

メタデータを使用したECS バケットの保護... 165

管理REST API を使用した ECS へのメタデータ値のロード... 167

core-site.xml の編集... 168 HAWQ データベースの初期化 ...172 再起動とアクセスの確認...173 Kerberos の構成について 175 Kerberos の構成について...176 Kerberos KDC のセットアップ... 176 Kerberos の AD ユーザー認証の構成... 177 ECS サービス プリンシパルを使用した 1 つ以上の新規 ECS データ ノードの構成 ... 178 第 21 章 第 22 章 第 23 章 第 24 章 第 25 章 目次

(7)

トラブルシューティング 181 トラブルシューティング... 182 安全なHadoop クラスターを使用した正しい AD/LDAP 構成の確認... 182 hbase 構成後のサービスの再起動...182 Pig テストの失敗: Kerberos プリンシパルを取得できない... 183 AD ユーザーの権限が拒否される... 183 権限エラー... 183 INSUFFICIENT_PERMISSIONS エラー... 183 認証情報取得の失敗... 184 バケット アクセス エラー...184 オブジェクト アクセス エラー...184 リクエストの処理の失敗...186 Kerberos クライアント側のログおよびデバッグの有効化...187 KDC での Kerberos のデバッグ... 187 クロック スキューの排除... 187

ECS HDFS の Hadoop core-site.xml プロパティ 189 ECS HDFS の Hadoop core-site.xml のプロパティ... 190

単純認証モードのcore-site.xml の例... 193 安全なバケット メタデータの例 195 安全なバケット メタデータ... 196 第 26 章 第 27 章 第 28 章 目次

(8)
(9)

ECS ポータルの新しいネームスペースでコンプライアンスを有効化します。... 93

新しい保存ポリシー... 96

ネームスペースの保存ポリシー...96

オブジェクト ユーザーの CAS 設定...97

バケットACL の編集... 98

[Bucket ACLs Management]...99

ECS HDFS の Hadoop クラスターとの統合...122 1 2 3 4 5 6 7

(10)
(11)

サポートされているS3 API... 18 追加機能... 19 サポートされていないS3 API...19 オブジェクトAPI の拡張機能...22 サポート対象のOpenStack Swift コール... 54 サポート対象外のOpenStack Swift コール...55 Swift API の拡張機能...58

サポート対象のAtmos REST API コール...80

サポート対象外のAtmos REST API コール... 81

オブジェクトAPI の拡張機能...84

通常のアーカイブとコールド アーカイブの要件の比較... 91

保存に使用するECS REST API リソース... 95

バケットのACL... 99

バケットACL グループ... 100

ECS 管理 REST API:メソッドのサマリー...114

シンプル モードでのファイル システム アクセスのバケット権限例... 137 Kerberos モードでのファイル システム アクセスのバケット権限例...138 ECS HDFS 構成の動作条件... 148 ECS HDFS クライアント ライブラリ... 149 ECS HAWQ コネクタ... 151 core-site.xml の場所...152 hbase-site.xml の場所...156 ECS HAWQ コネクタ... 161 core-site.xml ファイルの場所... 169 Hadoop core-site.xml のプロパティ... 190 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

(12)
(13)

1 部

S3

第 1 章「ECS の Amazon S3 サポートの概要」 第 2 章「S3 のサポート機能」 第 3 章「 "S3 の拡張機能」 第 4 章「メタデータ検索拡張機能」 第 5 章「秘密キーの作成と管理」 第 6 章「S3 サービスでの認証」 第 7 章「Java クライアント アクセス」 S3 13

(14)
(15)

1 章

ECS の Amazon S3 サポートの概要

l ECS の Amazon S3 API サポート... 16

(16)

ECS の Amazon S3 API サポート

ここでは、ECS での Amazon S3 API サポートについて説明します。 Amazon S3 オブジェクト サービスは、次のポートで使用できます。 プロトコル ポート HTTP 9020 HTTPS 9021 以降のトピックでは、S3 API のサポートについてと ECS で提供される拡張機能について説 明し、サービスでの認証方法と、サービスにアクセスするクライアントの開発にSDK を使用 する方法についても説明します。 l S3 API のサポート対象およびサポート対象外の機能(18 ページ) l API の拡張機能(22 ページ) l メタデータ検索の使用(28 ページ) l 秘密キーの作成と管理(38 ページ) l S3 サービスでの認証(44 ページ) l SDK を使って S3 サービスにアクセス(46 ページ) バケットのアドレス指定や認証には、ECS 特有のものがあります。既存のアプリケーションを ECS と通信するよう構成する場合、または S3 API を使う新しいアプリケーションを開発して ECS との通信に使用する場合は、次のトピックを参照してください。 l [管理者ガイド:ECS オブジェクト ストレージのアドレス指定とベース URL の使用] ECS の Amazon S3 サポートの概要

(17)

2 章

S3 のサポート機能

l S3 API のサポート対象およびサポート対象外の機能... 18

(18)

S3 API のサポート対象およびサポート対象外の機能

ECS は、Amazon S3 REST API のサブセットをサポートしています。

以下のセクションでは、サポートされているAPI とサポートされていない API について詳しく 説明します。 l サポートされているS3 API(18 ページ) l サポートされていないS3 API(19 ページ) サポートされているS3 API サポートされているS3 API メソッドを次の表に示します。 表 1 サポートされている S3 API 機能 注意事項

GET service ECS はバケット リストのページングを有効化する marker および max-keys パラメーターをサポートします。

GET /?marker=<bucket>&max-keys=<num>

例:

GET /?marker=mybucket&max-keys=40

DELETE Bucket DELETE Bucket cors

DELETE Bucket lifecycle ライフサイクルでサポートされるのは有効期限部分のみです。 ア ーカイブ(AWS Glacier)に関連するポリシーはサポートされませ ん。

GET Bucket (List Objects) GET Bucket cors

GET Bucket acl

GET Bucket lifecycle ライフサイクルでサポートされるのは有効期限部分のみです。 ア ーカイブ(AWS Glacier)に関連するポリシーはサポートされませ ん。

GET Bucket Object versions GET Bucket versioning HEAD Bucket

List Multipart Uploads PUT Bucket

PUT Bucket cors PUT Bucket acl

PUT Bucket lifecycle ライフサイクルでサポートされるのは有効期限部分のみです。 ア ーカイブ(AWS Glacier)に関連するポリシーはサポートされませ ん。

(19)

表 1 サポートされている S3 API (続き)

機能 注意事項

PUT Bucket versioning DELETE Object

Delete Multiple Objects GET Object

GET Object ACL HEAD Object

PUT Object チャンクにしたPUT をサポートします。 PUT Object acl

PUT Object - Copy OPTIONS object Initiate Multipart Upload Upload Part

Upload Part - Copy

Complete Multipart Upload ECS はこのリクエストに対して「00」の ETag を返します。 これは Amazon S3 レスポンスとは異なります。

Abort Multipart Upload List Parts

表 2 追加機能

機能 注意事項

Pre-signed URLs ECS は署名済み URL の使用をサポートします。これにより、ユー ザーは認証情報なしでオブジェクトにアクセスできます。 詳細については、こちらを参照してください。

Chunked PUT PUT 操作を使用して、オブジェクトをチャンクでアップロードできま す。 チャンクにした転送では、Transfer-Encoding ヘッダー (Transfer-Encoding: chunked)を使用して、コンテンツをチャンク で転送するように指定します。 これにより、ペイロードの総サイズ がわかる前に、コンテンツを送信できます。 サポートされていないS3 API サポートされていないS3 API メソッドを次の表に示します。 表 3 サポートされていない S3 API 機能 注意事項

DELETE Bucket policy

S3 のサポート機能

(20)

表 3 サポートされていない S3 API (続き)

機能 注意事項

DELETE Bucket tagging DELETE Bucket website GET Bucket policy

GET Bucket location ECS は単一の仮想データセンターのみを認識します。 GET Bucket logging

GET Bucket notification 通知はS3 の低冗長化機能に対してのみ定義されます。ECS は 現在、通知をサポートしていません。

GET Bucket tagging

GET Bucket requestPayment ECS には独自の支払いモデルがあります。 GET Bucket website

PUT Bucket policy PUT Bucket logging

PUT Bucket notification 通知はS3 の低冗長化機能に対してのみ定義されます。ECS は 現在、通知をサポートしていません。

PUT Bucket tagging

PUT Bucket requestPayment ECS には独自の支払いモデルがあります。 PUT Bucket website

オブジェクトAPIs GET Object torrent POST Object

POST Object restore この操作はAWS Glacier に関連しているため、ECS ではサポート されません。

(21)

3 章

S3 の拡張機能

l API の拡張機能... 22 l オブジェクト内でのバイト範囲の更新... 22 l オブジェクトの一部を上書き...23 l オブジェクトにデータを追加...24 l オブジェクト内での複数のバイト範囲の読み取り... 25 S3 の拡張機能 21

(22)

API の拡張機能

オブジェクトAPI の複数の拡張機能がサポートされています。

拡張機能とそれらをサポートするAPI は以下の表に一覧表示されています。

表 4 オブジェクト API の拡張機能

機能 注

Object Range Update 範囲ヘッダーを使用して更新するオブジェクト範囲を指定します。 「オブジェクト内でのバイト範囲の更新(22 ページ)」を参照 Object Range

Overwrite

範囲ヘッダーを使用して上書きするオブジェクト範囲を指定します。 「オブジェクトの一部を上書き(23 ページ)」を参照

Object Range Append 範囲ヘッダーを使用して追加するオブジェクト範囲を指定します。

オブジェクトにデータを追加(24 ページ)

Object Range Read 範囲ヘッダーを使用して読み取りするオブジェクトバイト範囲を指定しま す。 「オブジェクト内での複数のバイト範囲の読み取り(25 ページ)」を参 照 Metadata Search 以前にインデックス付けされたメタデータに基づくオブジェクト検索を有効 にします。 メタデータ検索の使用(28 ページ)を参照

オブジェクト内でのバイト範囲の更新

ECS API の拡張機能を使用してオブジェクトのバイト範囲を更新する例を以下に示します。 初めに object1 located in bucket1 という名前のオブジェクトで GET リクエストを行い、 オブジェクトを確認します。 object1 には次の値があります。 The quick brown fox jumps over the lazy dog.

GET /bucket1/object1 HTTP/1.1

Date: Mon, 17 Jun 2013 20:04:40 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:9qxKiHt2H7upUDPF86dvGp8VdvI= Accept-Encoding: gzip, deflate, compress

HTTP/1.1 200 OK

Date: Mon, 17 Jun 2013 20:04:40 GMT Content-Type: application/octet-stream Last-Modified: Mon, 17 Jun 2013 20:04:28 GMT ETag: 6

Content-Type: application/json Content-Length: 43

(23)

The quick brown fox jumps over the lazy dog. このオブジェクト内の特定のバイト範囲を更新したいとします。 これを行うには、オブジェクト データ リクエストの範囲ヘッダーに、更新したいオブジェクトの開始および終了オフセットが 含まれている必要があります。 形式は以下のとおりです。 Range: bytes=<startOffset>-<endOffset> 以下の例では、10、11、12、13、14 バイトがリクエストで送信された値によって置き換えら れることを示す値 bytes=10-14 での範囲ヘッダーが PUT リクエストに含まれています。 ここで、新しい値 green が送信されます。 PUT /bucket1/object1 HTTP/1.1 Content-Length: 5 Range: bytes=10-14 ACCEPT: application/json,application/xml,text/html,application/octet-stream

Date: Mon, 17 Jun 2013 20:15:16 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:xHJcAYAEQansKLaF+/4PdLBHyaM= Accept-Encoding: gzip, deflate, compress

green HTTP/1.1 204 No Content ETag: 10 x-amz-id-2: object1 x-amz-request-id: 027f037c-29ea-4670-8670-de82d0e9f52a Content-Length: 0

Date: Mon, 17 Jun 2013 20:15:16 GMT

オブジェクトを再度読み取ると、新しい値は The quick green fox jumps over the lazy dog.になります(単語 brown を green に置き換え)。このオブジェクト内の 特定のバイト範囲が更新されました。

GET /bucket1/object1 HTTP/1.1

Cookie: JSESSIONID=wdit99359t8rnvipinz4tbtu

ACCEPT: application/json,application/xml,text/html,application/octet-stream

Date: Mon, 17 Jun 2013 20:16:00 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:OGVN4z8NV5vnSAilQTdpv/fcQzU= Accept-Encoding: gzip, deflate, compress

HTTP/1.1 200 OK

Date: Mon, 17 Jun 2013 20:16:00 GMT Content-Type: application/octet-stream Last-Modified: Mon, 17 Jun 2013 20:15:16 GMT ETag: 10

Content-Type: application/json Content-Length: 43

The quick green fox jumps over the lazy dog.

オブジェクトの一部を上書き

ECS API の拡張機能を使用してオブジェクトの一部を上書きする例を以下に示します。

S3 の拡張機能

(24)

データ リクエストで開始オフセットを提供するだけで、オブジェクトの一部を上書きできます。 書き込まれるリクエストのデータは提供されたオフセットで開始されます。 形式は以下のと おりです。 Range:

<startingOffset>-たとえば、オフセット10 でデータ brown cat の書き込みを開始する場合、この PUT リク エストを発行することになります。 PUT /bucket1/object1 HTTP/1.1 Content-Length: 9 Range: bytes=10-ACCEPT: application/json,application/xml,text/html,application/octet-stream

Date: Mon, 17 Jun 2013 20:51:41 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:uwPjDAgmazCP5lu77Zvbo+CiT4Q= Accept-Encoding: gzip, deflate, compress

brown cat HTTP/1.1 204 No Content ETag: 25 x-amz-id-2: object1 x-amz-request-id: 65be45c2-0ee8-448a-a5a0-fff82573aa3b Content-Length: 0

Date: Mon, 17 Jun 2013 20:51:41 GMT

オブジェクトを取得すると、最終的な値 The quick brown cat jumps over the lazy dog and cat.を見ることができます(green fox は brown cat で置き換えら れています)。 このオブジェクトのデータの一部を提供された開始オフセットで上書きしまし た。

GET /bucket1/object1 HTTP/1.1

Date: Mon, 17 Jun 2013 20:51:55 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:/UQpdxNqZtyDkzGbK169GzhZmt4= Accept-Encoding: gzip, deflate, compress

HTTP/1.1 200 OK

Date: Mon, 17 Jun 2013 20:51:55 GMT Content-Type: application/octet-stream Last-Modified: Mon, 17 Jun 2013 20:51:41 GMT ETag: 25

Content-Type: application/json Content-Length: 51

The quick brown cat jumps over the lazy dog and cat.

オブジェクトにデータを追加

ECS API の拡張機能を使用してオブジェクトにデータを追加する例を以下に示します。 オブジェクトに追加したいものの、正確なバイト オフセットの決定が不十分または不便な場 合があるかもしれません。 このシナリオでは、オフセットを指定せずに(正しいオフセットは 応答で返されます)、オブジェクトにデータをアトミックに追加する機能を、ECS が提供しま す。 オブジェクトにデータを追加するために特別な値 bytes=-1-の範囲ヘッダーを使用でき ます。 この方法で、既存のオブジェクト サイズを知らなくてもオブジェクトを拡張できます。 形式は以下のとおりです。 Range: bytes=-1-S3 の拡張機能

(25)

サンプルのリクエストで、bytes=-1-の範囲の値を使用して既存のオブジェクトに追加する 方法を示します。値 and cat がリクエストで送信されます。 PUT /bucket1/object1 HTTP/1.1 Content-Length: 8 Range: bytes=-1-ACCEPT: application/json,application/xml,text/html,application/octet-stream

Date: Mon, 17 Jun 2013 20:46:01 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:/sqOFL65riEBSWLg6t8hL0DFW4c= Accept-Encoding: gzip, deflate, compress

and cat HTTP/1.1 204 No Content ETag: 24 x-amz-id-2: object1 x-amz-request-id: 087ac237-6ff5-43e3-b587-0c8fe5c08732 Content-Length: 0

Date: Mon, 17 Jun 2013 20:46:01 GMT

オブジェクトを再度取得すると、完全な値 The quick green fox jumps over the lazy dog and cat.を見ることができます。このオブジェクトにデータが追加されまし た。

GET /bucket1/object1 HTTP/1.1

ACCEPT: application/json,application/xml,text/html,application/octet-stream

Date: Mon, 17 Jun 2013 20:46:56 -0000 x-emc-namespace: emc

Content-Type: application/octet-stream

Authorization: AWS wuser1:D8FSE8JoLl0MTQcFmd4nG1gMDTg= Accept-Encoding: gzip, deflate, compress

HTTP/1.1 200 OK

Date: Mon, 17 Jun 2013 20:46:56 GMT Content-Type: application/octet-stream Last-Modified: Mon, 17 Jun 2013 20:46:01 GMT ETag: 24

Content-Type: application/json Content-Length: 51

The quick green fox jumps over the lazy dog and cat.

オブジェクト内での複数のバイト範囲の読み取り

ECS API の拡張機能を使用してオブジェクト内の複数のバイト範囲を読み取る例を以下に示 します。

object1 という名前のオブジェクト内で 2 つの特定のバイト範囲を読み取るために、 Range: bytes==4-8,41-44 に以下の GET リクエストを発行します。読み取りレスポン スは、quick と lazy が対象になります。

Amazon S3 の API は読み取りに HTTP ヘッダー Range を使用する場合は 1 つの範囲しか サポートしませんが、ECS は複数のバイト範囲をサポートします。

GET /bucket1/object1 HTTP/1.1

Date: Mon, 17 Jun 2013 20:51:55 -0000

S3 の拡張機能

(26)

x-emc-namespace: emc Range: bytes==4-8,41-44

Content-Type: application/octet-stream

Authorization: AWS wuser1:/UQpdxNqZtyDkzGbK169GzhZmt4= Accept-Encoding: gzip, deflate, compress

HTTP/1.1 206 Partial Content

Date: Mon, 17 Jun 2013 20:51:55 GMT

Content-Type: multipart/byteranges;boundary=bound04acf7f0ae3ccc Last-Modified: Mon, 17 Jun 2013 20:51:41 GMT

Content-Length: 230 --bound04acf7f0ae3ccc Content-Type: application/octet-stream Content-Range: bytes 4-8/50 quick --bound04acf7f0ae3ccc Content-Type: application/octet-stream Content-Range: bytes 41-44/50 lazy --bound04acf7f0ae3ccc--S3 の拡張機能

(27)

4 章

メタデータ検索拡張機能

l メタデータ検索の使用...28 l バケットへのメタデータ インデックス値の割り当て...28 l S3 プロトコルによるメタデータのオブジェクトへの割り当て...31 l メタデータ検索クエリーの使用... 31 l ECS のシステム メタデータとオプション属性...35 メタデータ検索拡張機能 27

(28)

メタデータ検索の使用

ECS S3 互換 API により、API でメタデータ検索が行えるようになります。この API を使用する と、メタデータに基づいてバケット内のオブジェクトのインデックスが作成され、メタデータ イ ンデックスのクエリーによってオブジェクトと関連データを見つけることができます。 従来から、ECS S3 API を使用してメタデータをオブジェクトに関連づけることができ、対象オ ブジェクトのID が分かれば、そのメタデータを読み取ることはできます。ただし、ECS メタデ ータ検索機能がなければ、バケット内のオブジェクト セットでの反復処理なしで、メタデータ に基づいてオブジェクトを検索することはできません。 メタデータは、「ユーザー メタデータ」でも「システム メタデータ」でもかまいません。システム メ タデータは、ECS によって定義され自動的にオブジェクトに書き込まれます。ユーザー メタデ ータは、エンド ユーザー要件に基づいてクライアントによって書き込まれます。システム メタ データとユーザー メタデータのどちらも、メタデータ検索のベースとしてインデックス作成し、 使用することができます。インデックス作成できるメタデータ値の数は5 までで、バケットの 作成時に定義する必要があります。 システム メタデータに加えて、オブジェクトにはオプションでメタデータ検索結果の一部とし て返すことのできる属性があります。 次のトピックでは、メタデータ検索機能を設定して使用するための手順が説明されていま す。 l バケットへのメタデータ インデックス値の割り当て(28 ページ) l S3 プロトコルによるメタデータのオブジェクトへの割り当て(31 ページ) l メタデータ検索クエリーの使用(31 ページ) インデックス作成できる使用可能システム メタデータ値と、オプションで検索クエリーの結果 とともに返すことができるメタデータ値のリストは、こちら(35 ページ)です。

バケットへのメタデータ

インデックス値の割り当て

ECS ポータルまたは ECS 管理 REST API を使用して、あるいは S3 プロトコルを使用して、バ ケットにメタデータ インデックス値を設定することができます。インデックス値はインデックス しているメタデータの名前を反映している必要があり、システム メタデータまたはユーザー メタデータに基づきます。 使用可能なシステム メタデータのリストはECS のシステム メタデータとオプション属性(35 ページ)にあります。 インデックス値は、バケットの作成時に設定されます。バケットに対するインデックス使用を 無効化することはできますが、個々のインデックス値を変更または削除することはできませ ん。 ポータルを使用したインデックス値の設定 [Manage] > [Bucket]ページで、バケットを作成し、作成時にインデックス値を割り当てるこ とができます。詳細については、[管理者ガイド:バケットの作成と構成]を参照してください。

ECS 管理 REST API を使用したインデックス値の設定

次の表は、ECS 管理 REST API によるインデックス操作方法の説明と、API リファレンスへの リンクを示しています。

(29)

API パス 説明 GET /object/bucket/ searchmetadata 新しいバケットへの割り当てに使用可能なすべてシステム メタデータ キ ーの名前を一覧表示します。 POST /object/bucket 指定したバケットをインデックスするメタデータ インデックス名を割り当て ます。インデックス名はメソッド ペイロードに指定します。 GET /object/bucket バケットのリストを取得します。各バケットのバケット情報はメタデータ検 索の詳細を示しています。 GET /object/bucket/ {bucketname}/info 選択したバケットの詳細を取得します。バケットの情報には、メタデータ検 索の詳細が含まれます。 DELETE /object/bucket/ {bucketname}/ searchmetadata メタデータ キーを使用したインデックス作成を停止します。 例:使用可能なメタデータ名のリストを取得 次の例では、インデックス作成に使用可能で、クエリーで返すことができるメタデータ名のリ スト全体を取得します。

s3curl.pl --id myuser -- http://{host}:9020/?searchmetadata

クエリーの結果は次のとおりです。 <MetadataSearchList xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <IndexableKeys> <Key> <Name>LastModified</Name> <Datatype>datetime</Datatype> </Key> <Key> <Name>Owner</Name> <Datatype>string</Datatype> </Key> <Key> <Name>Size</Name> <Datatype>integer</Datatype> </Key> <Key> <Name>CreateTime</Name> <Datatype>datetime</Datatype> </Key> <Key> <Name>ObjectName</Name> <Datatype>string</Datatype> </Key> </IndexableKeys> <OptionalAttributes> <Attribute> <Name>ContentType</Name> <Datatype>string</Datatype> </Attribute> <Attribute> <Name>Expiration</Name> <Datatype>datetime</Datatype> </Attribute> <Attribute> <Name>ContentEncoding</Name> <Datatype>string</Datatype> </Attribute> <Attribute> <Name>Expires</Name> メタデータ検索拡張機能

(30)

<Datatype>datetime</Datatype> </Attribute> <Attribute> <Name>Retention</Name> <Datatype>integer</Datatype> </Attribute> </OptionalAttributes> </MetadataSearchList> 例:バケットをインデックスしているキーのリストを取得 次の例では、現在バケットをインデックスしているメタデータ キーのリストを取得します。

s3curl.pl --id myuser -- http://{host}:9020/mybucket/?searchmetadata

この例の結果は次のとおりです。 <MetadataSearchList xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <MetadataSearchEnabled>true</MetadataSearchEnabled> <IndexableKeys> <Key> <Name>Size</Name> <Datatype>integer</Datatype> </Key> <Key> <Name>x-amz-meta-DAT</Name> <Datatype>datetime</Datatype> </Key> </IndexableKeys> </MetadataSearchList>

S3 API を使用した値の設定

次の表は、S3 API によるインデックス操作方法の説明と、API リファレンスへのリンクを示し ています。 API パス 説明 GET /?searchmetadata 新規バケットのインデックスに使用可能なすべてのシステム メタデー タの名前を一覧表示します。

PUT /{bucket} -H x-emc-metadata-search: {name[;datatype],...} ヘッダーに示されている検索メタデータ キーでバケットを作成しま す。 注 データ タイプはユーザー メタデータ キーと関連づけられている必要 がありますが、システム メタデータ キーの必要はありません。 GET /{bucket}/? searchmetadata 現在バケットをインデックスしているメタデータ キーのリストを取得し ます。 例 次の例では、3 つのシステム メタデータ キーと 2 つのユーザー メタデータ キーのメタデー タ インデックスを含むバケットを作成します。

s3curl.pl --id myuser --createbucket -- http://{host}:9020/mybucket -H "x-emc-metadata-search:Size,CreateTime,LastModified,x-amz-meta-STR;String,x-amz-meta-INT;Integer"

(31)

S3 プロトコルによるメタデータのオブジェクトへの割り当て

エンド ユーザーは、「x-amz-meta-」ヘッダーを使用して、オブジェクトにユーザー メタデータ を割り当てることができます。割り当てる値は任意のテキスト文字列であり、大文字と小文 字を区別します。 メタデータをオブジェクト検索(メタデータ検索機能)のベースとして使用できるようにメタデー タのインデックスを作成する場合は、データにデータ タイプを割り当てます。オブジェクトにメ タデータを書き込む場合、検索で正しく使用できるように、クライアントは適切な形式でデー タを書き込む必要があります。 データ タイプは次のとおりです。 String 検索インデックス用語がテキストとしてマークされている場合、すべての検索比較にお いてメタデータ文字列は文字列として処理されます。 Integer 検索インデックス用語が整数としてマークされている場合、検索比較においてメタデー タ文字列は整数に変換されます。 Decimal 検索インデックス用語が10 進数としてマークされている場合、メタデータ文字列は 10 進数値に変換され、「.」 文字は、小数点として処理されます。 Datetime 検索インデックス用語が日付/時刻としてマークされている場合、メタデータ文字列は yyyy-MM-ddTHH:mm:ssZ という形式の日時として処理されます。文字列を日時として 処理するためには、メタデータをyyyy-MM-ddTHH:mm:ssZ という形式で指定する必要 があります。 例 次の例では、S3 API を使用して、オブジェクトとそのオブジェクト上の 2 つのユーザー メタデ ータ値をアップロードします。

s3curl.pl --id myuser --put myfile -- http://{host}:9020/mybucket/ file4 -i -H x-amz-meta-STR:String4 -H x-amz-meta-INT:407

メタデータ検索クエリーの使用

メタデータ検索機能は、インデックスされたメタデータの検索ができる機能豊かなクエリー言 語です。 構文は、次の表のとおりです。 API の構文 レスポンス ボディ GET /{bucket}/? query={expression} &attributes={fieldname,…} &sorted={selector} &include_older_version={true| false}

(…also standard pagination parameters apply)

<BucketQueryResult xmlns:ns2="http:// s3.amazonaws.com/doc/2006-03-01/">

<Name>mybucket</Name> <Marker/>

<NextMarker>NO MORE PAGES</NextMarker> <MaxKeys>0</MaxKeys> <IsTruncated>false</IsTruncated> <ObjectMatches> <object> メタデータ検索拡張機能 S3 プロトコルによるメタデータのオブジェクトへの割り当て 31

(32)

API の構文 レスポンス ボディ <objectName>file4</objectName> <objectId>09998027b1b7fbb21f50e13fabb481a237ba2f6 0f352d437c8da3c7c1c8d7589</objectId> <queryMds> <type>SYSMD</type> <mdMap> <entry> <key>createtime</key> <value>1449081778025</value> </entry> <entry> <key>size</key> <value>1024</value> </entry> <entry> <key>mtime</key> <value>1449081778025</value> </entry> </mdMap> </queryMds> <queryMds> <type>USERMD</type> <mdMap> <entry> <key>x-amz-meta-INT</key> <value>407</value> </entry> <entry> <key>x-amz-meta-STR</key> <value>String4</value> </entry> </mdMap> </queryMds> <indexKey/> </object> <object ... </object> </ObjectMatches> </BucketQueryResult> 式のキーワードと意味は次のとおりです。 expression 形式の表記例: [(]{condition1}[%20[and/or]%20{condition2}][)][%20[and/or]%20…] ここで、「condition」はフォーム内のメタデータ キーの名前フィルターです。 {selector} {operator} {argument}, 例: LastModified > 2015-09-02T11:22:00Z selector バケットに関連づけられた検索可能キーの名前です。 operator 演算子です。==、>、<、<=、>=のいずれか メタデータ検索拡張機能

(33)

argument selector の検証対象値。 attributes=[fieldname,...] レポートに含める必要があるオプションのオブジェクト属性をすべて指定します。その 属性がオブジェクトで使用されていれば、属性値がレポートに含まれます。オプション の属性値には次のものがあります。 l ContentEncoding l ContentType l Retention l Expiration l Expires sorted=[selector] バケットに関連づけられた検索可能なキーの名前を1 つ指定します。キー名は式の中 にあるキーの必要があります。&sorted=keyname がない場合は、クエリー式に表示さ れる最初のキー名にしたがって出力がソートされます。 㽷 式に「or」演算子がある場合は、ソート順は特定できません。 include-older-versions=[true|false] バケットのS3 のバージョン管理が有効になります。true に設定すると、式に一致する オブジェクトの現在のバージョンと以前のバージョンが返されます。デフォルトはfalse です。

Datetime クエリー

ユーザー メタデータの datetime 値は、ISO-8601 形式「yyyy-MM-dd'T'HH:mm:ssZ」で指定

され、その形式でECS に永続化されます。メタデータ クエリーも、この形式を使用します。た だし、ECS はシステム メタデータの datetime 値を、1970 年を起点としたミリ秒単位の数で あるエポック時刻として永続化します。 クエリーが結果を返す場合は、ECS によって永続化された datetime 形式で返されます。2 つの形式の例は次のとおりです。 ユーザー メタデータのアップロード ヘッダーの例: -H x-amz-meta-Foo:2015-11-30T12:00:00Z ユーザーおよびシステム クエリー式の形式:

?query=CreateTime>2015-01-01:00:00:00Z and x-amz-meta-Foo==2015-11-30T12:00:00Z

クエリーの結果のフラグメント:システム メタデータ

<key>createtime</key> <value>1449081777620</value>

メタデータ検索拡張機能

(34)

クエリーの結果のフラグメント:ユーザー メタデータ <key>x-amz-meta-Foo</key> <value>2015-11-30T12:00:00Z</value>

メタデータ検索の例

次の例では、S3 API を使用して、特定のオブジェクト サイズとユーザー メタデータ値に一致 するバケットを検索しています。 注 一部のREST クライアントでは、「スペース」を url コード%20 とエンコードする必要がある可 能性があります。

s3curl.pl --id myuser

-- "http://{host}:9020.mybucket?query=Size>1000%20and%20x-amz-meta-STR>=String4 検索に一致した3 つのオブジェクトが結果として表示されます。 <BucketQueryResult xmlns:ns2="http://s3.amazonaws.com/doc/ 2006-03-01/"> <Name>mybucket</Name> <Marker/>

<NextMarker>NO MORE PAGES</NextMarker> <MaxKeys>0</MaxKeys> <IsTruncated>false</IsTruncated> <ObjectMatches> <object> <objectName>file4</objectName> <objectId>09998027b1b7fbb21f50e13fabb481a237ba2f60f352d437c8da3c7c1c8d 7589</objectId> <queryMds> <type>SYSMD</type> <mdMap> <entry> <key>createtime</key> <value>1449081778025</value> </entry> <entry> <key>size</key> <value>1024</value> </entry> <entry> <key>mtime</key> <value>1449081778025</value> </entry> </mdMap> </queryMds> <queryMds> <type>USERMD</type> <mdMap> <entry> <key>x-amz-meta-INT</key> <value>407</value> </entry> <entry> <key>x-amz-meta-STR</key> <value>String4</value> </entry> </mdMap> メタデータ検索拡張機能

(35)

</queryMds> <indexKey/> </object> <object> <objectName>file5</objectName> <objectId>1ad87d86ef558ca0620a26855662da1030f7d9ff1d4bbc7c2ffdfe29943b 9150</objectId> <queryMds> <type>SYSMD</type> <mdMap> <entry> <key>createtime</key> <value>1449081778396</value> </entry> <entry> <key>size</key> <value>1024</value> </entry> <entry> <key>mtime</key> <value>1449081778396</value> </entry> </mdMap> </queryMds> <queryMds> <type>USERMD</type> <mdMap> <entry> <key>x-amz-meta-INT</key> <value>507</value> </entry> <entry> <key>x-amz-meta-STR</key> <value>Sring5</value> </entry> </mdMap> </queryMds> <indexKey/> </object> </ObjectMatches> </BucketQueryResult>

ECS のシステム メタデータとオプション属性

システム メタデータは、オブジェクト ストアに格納された各オブジェクトに自動的に関連づけ られます。システム メタデータの一部は常に使用され、インデックス キーとして使用すること ができます。その他のメタデータは常に使用されるわけではありません。存在していれば、 メタデータ検索クエリーの結果とともに返すことができます。 システム メタデータ 次の表に記載されているシステム メタデータは、メタデータ検索インデックスのキーとして使 用することができます。 名前(エイリアス) タイプ 説明 ObjectName string オブジェクトの名前。 Owner string オブジェクトの所有者のID。 Size integer オブジェクトのサイズ。 CreateTime datetime オブジェクトの作成日時。 LastModified datetime オブジェクトの最後変更日時。

メタデータ検索拡張機能

(36)

名前(エイリアス) タイプ 説明 㽷 変更は純粋なS3 API ではなく、ECS S3 バイト範囲更新 拡張機能でサポートされています。 オプションのメタデータ属性 オプションのシステム メタデータ属性は、オブジェクトで使用されている場合とされていない 場合があります。オプションで、検索クエリー結果とともに返すことができます。次の表は、 オプションのシステム メタデータ属性の一覧です。 名前(エイリアス) タイプ ContentType string Expiration datetime ContentEncoding string Expires datetime Retention integer メタデータ検索拡張機能

(37)

5 章

秘密キーの作成と管理

l 秘密キーの作成と管理...38 l オブジェクト ユーザーのキーの作成...38 l S3 秘密キーの作成: セルフ サービス...39 秘密キーの作成と管理 37

(38)

秘密キーの作成と管理

ECS オブジェクト サービスのユーザーには、サービスで認証するための秘密キーが必要で す。 秘密キーは、次の方法で作成してオブジェクト ユーザーが使用できるようにします。 l 管理者がキーを作成してオブジェクト ユーザーに配信します(「オブジェクト ユーザーの キーの作成(38 ページ)」を参照)

l ドメイン ユーザーであるオブジェクト ユーザーが、ECS 管理 REST API によって提供され

るセルフ サービス API を使用して新しいキーを作成します(S3 秘密キーの作成: セル フ サービス(39 ページ)を参照)。 1 人のユーザーが秘密キーを 2 つ持つこともできます。秘密キーを変更する(「ロール オー バー」とも呼ばれる)場合、古いキーに分単位の有効期限を設定することができます。有効 期限のインターバル中は、リクエストはどちらのキーも受け入れます。これは、新しいキーを 使用するためにアプリケーションを更新する猶予期間になります。

オブジェクト

ユーザーのキーの作成

ECS 管理ユーザーは、オブジェクト ユーザーの秘密キーを作成できます。 l ECS ポータルからの秘密キーの作成(38 ページ)

l ECS 管理 REST API を使用した S3 秘密キーの作成(38 ページ)

ECS ポータルからの秘密キーの作成

ECS ポータルで秘密キーを生成できます。 はじめに l ECS システム管理者またはネームスペース管理者である必要があります。 システム管理者は、どのネームスペースに属するオブジェクト ユーザーの秘密キーでも作 成できます。 ネームスペース管理者は、自分のネームスペースに属するオブジェクト ユー ザーの秘密キーを作成できます。 手順

1. ECS ポータルで、[Manage] > [Users]ページを選択します。

2. [Object Users]テーブルで、秘密キーを割り当てるユーザーの[Edit]を選択します。 3. S3 の場合は、[Generate & Add Password]を選択します。

4. 生成されたキーをコピーして、オブジェクト ユーザーにメールで送信します。

ECS 管理 REST API を使用した S3 秘密キーの作成

管理ユーザーは、ECS 管理 REST API を使用して S3 オブジェクト ユーザーの秘密キーを作 成できます。 API は次のとおりです。 API パス 説明 /object/ user-オブジェクト ユーザーへの秘密キーの割り当てと秘密キーの管理を行うための API。 秘密キーの作成と管理

(39)

API パス 説明 secret-keys/{uid} ネームスペース管理者は、自分のネームスペース内のユーザーのキーを作成 できます。 システム管理者は、どのネームスペースのユーザーにもキーを割り 当てることができます。

API コールの詳細については、ECS 管理 REST API リファレンスを参照してください。

S3 秘密キーの作成: セルフ サービス

ECS 管理 REST API により、認証されたドメイン ユーザーはオブジェクト ストアにアクセスす るための秘密キーをリクエストすることが可能です。

ECS 管理 REST API リファレンスを参照して、ECS の特定の管理操作を実行するためのカス

タム クライアントを作成できます。 操作は簡単で、ドメイン ユーザーは curl またはブラウザ ー ベースの HTTP クライアントを使用して、秘密キーを作成するための API を実行できま す。

ユーザーが object/secret-keys API を実行すると、ECS は自動でオブジェクト ユーザ ーを作成して秘密キーを割り当てます。 API パス 説明 /object/ secret-keys S3 クライアント ユーザーが新しい秘密キーを作成するための API。これにより、 自分のネームスペース内のオブジェクトやバケットにアクセス可能になります。 これは、セルフ サービス API とも呼ばれます。 /object/secret-keys のペイロードには、オプションとして既存のキーの有効期限を 含めることができます。 <secret_key_create_param> <existing_key_expiry_time_mins></existing_key_expiry_time_mins> </secret_key_create_param> 秘密キーを初めて作成する場合は、existing_key_expiry_time_mins パラメーターを省略で き、コールは次のようになります。 POST object/secret-keys Request body <?xml version="1.0" encoding="UTF-8"?> <secret_key_create_param/> Response <user_secret_key> <secret_key>...</secret_key> <key_timestamp>...</key_timestamp> <link rel="..." href="..." /> </user_secret_key>

セルフ サービス キーの操作

ECS 管理 REST API リファレンスを参照して、セルフ サービス秘密キーで実行できるいくつか の操作があります。

紹介する例では、curl ツールを使用して次の操作を行っています。

秘密キーの作成と管理

(40)

l ドメイン ユーザーとしてのログイン(40 ページ) l 最初のキーの生成(40 ページ) l 2 番目のキーの生成(40 ページ) l キーの確認(41 ページ) l すべての秘密キーの削除(41 ページ) ドメイン ユーザーとしてのログイン ドメイン ユーザーとしてログインし、以後のリクエストの認証に使用可能な認証トークンを取 得することができます。

curl -ik -u [email protected]:<Password> https://10.241.48.31:4443/ login

HTTP/1.1 200 OK

Date: Mon, 27 Apr 2015 17:29:38 GMT Content-Type: application/xml Content-Length: 107 Connection: keep-alive X-SDS-AUTH-TOKEN: BAAcaVAzNU16eVcwM09rOWd2Y1ZoUFZ4QmRTK2JVPQMAQQIADTE0MzAwNzQ4ODA1NTQDAC 51cm46VG9rZW46YWJmODA1NTEtYmFkNC00ZDA2LWFmMmMtMTQ1YzRjOTdlNGQ0AgAC0A8= <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<loggedIn> <user>[email protected]</user> </loggedIn> 最初のキーの生成 秘密キーを生成できます。 curl -ks -H "X-SDS-AUTH-TOKEN: BAAcaVAzNU16eVcwM09rOWd2Y1ZoUFZ4QmRTK2JVPQMAQQIADTE0MzAw NzQ4ODA1NTQDAC51cm46VG9rZW46YWJmODA1NTEtYmFkNC00ZDA2LWFmMmMtMTQ1YzRjOT dlNGQ0AgAC0A8="

-H "Content-Type: application/json" -X POST -d "{}"

https://10.241.48.31:4443/object/secretkeys | xmllint format -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<user_secret_key>

<link rel="self" href="/object/user-secret-keys/ [email protected]"/> <secret_key>7hXZ9/EHTVvmFuYly/z3gHpihXtEUX/VZxdxDDBd</secret_key> <key_expiry_timestamp/> <key_timestamp>2015-04-27 17:39:13.813</key_timestamp> </user_secret_key> 2 番目のキーの生成 2 番目の秘密キーを生成して、最初のキーの有効期限を設定することができます。 curl -ks -H "X-SDS-AUTH-TOKEN: BAAcaVAzNU16eVcwM09rOWd2Y1ZoUFZ4QmRTK2JVPQMAQQIADTE0MzAwN zQ4ODA1NTQDAC51cm46VG9rZW46YWJmODA1NTEtYmFkNC00ZDA2LWFmMmMtMTQ1YzRjOTd lNGQ0AgAC0A8="

-H "Content-Type: application/json" -X POST -d "{\"existing_key_expiry_time_mins\": \"10\"}"

https://10.241.48.31:4443/object/secretkeys | xmllint format -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<user_secret_key>

<link rel="self" href="/object/user-secret-keys/ [email protected]"/>

<secret_key>l3fPCuFCG/bxoOXCPZoYuPwhXrSTwU0f1kFDaRUr</secret_key> <key_expiry_timestamp/>

(41)

<key_timestamp>2015-04-27 17:40:12.506</key_timestamp> </user_secret_key> キーの確認 自分に割り当てられたキーを確認できます。 このケースでは、2 つのキーを使用し、最初の キーに有効期限の日時が設定されています。 curl -ks -H "X-SDS-AUTH-TOKEN: BAAcaVAzNU16eVcwM09rOWd2Y1ZoUFZ4QmRTK2JVPQMAQQIADTE0MzAw NzQ4ODA1NTQDAC51cm46VG9rZW46YWJmODA1NTEtYmFkNC00ZDA2LWFmMmMtMTQ1YzRjOT dlNGQ0AgAC0A8="

https://10.241.48.31:4443/object/secretkeys | xmllint format -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<user_secret_keys> <secret_key_1>7hXZ9/EHTVvmFuYly/z3gHpihXtEUX/VZxdxDDBd</ secret_key_1> <secret_key_2>l3fPCuFCG/bxoOXCPZoYuPwhXrSTwU0f1kFDaRUr</ secret_key_2> <key_expiry_timestamp_1>2015-04-27 17:50:12.369</ key_expiry_timestamp_1> <key_expiry_timestamp_2/> <key_timestamp_1>2015-04-27 17:39:13.813</key_timestamp_1> <key_timestamp_2>2015-04-27 17:40:12.506</key_timestamp_2> <link rel="self" href="/object/secret-keys"/>

</user_secret_keys> すべての秘密キーの削除 秘密キーを再生成するために削除する必要がある場合は、 次のように実行できます。 curl -ks -H "X-SDS-AUTH-TOKEN: BAAcaVAzNU16eVcwM09rOWd2Y1ZoUFZ4QmRTK2JVPQMAQQIADTE0MzAw NzQ4ODA1NTQDAC51cm46VG9rZW46YWJmODA1NTEtYmFkNC00ZDA2LWFmMmMtMTQ1YzRjOT dlNGQ0AgAC0A8="

-H "Content-Type: application/json" -X POST -d "{}" https:// 10.241.48.31:4443/object/secret-keys/deactivate

秘密キーの作成と管理

(42)
(43)

6 章

S3 サービスでの認証

l S3 サービスでの認証... 44

(44)

S3 サービスでの認証

Amazon S3 API での認証については、下記の Amazon S3 ドキュメントで説明されていま す。 このトピックでは、認証プロセスの ECS 固有の側面を示します。

Amazon S3 は、すべてのリクエストに存在しなければならない認証ヘッダーを使用して、ユ ーザーを識別し、リクエストのシグネチャを提供します。 Amazon を呼び出すとき、ヘッダー は次の形式をとります。

Authorization: AWS <AWSAccessKeyId>:<Signature>

ECS では、AWSAccessKeyId は ECS UID(ユーザー ID)にマップされます。 AWS アクセス キ ーID は 20 文字ありますが(S3 ブラウザーなどの一部の S3 クライアントで確認されます)、 ECS データ サービスにはこの制限はありません。 シグネチャは、Amazon S3 ドキュメントで詳しく説明されているように、リクエストの要素とユ ーザーの秘密キーから計算されます。 l http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html 注意事項を次に示します。

l ECS オブジェクト データ サービスでは、(ECS API または ECS UI を介して)2 個の秘密キ

ーでUID を構成できます。 ECS データ サービスは 1 個目の秘密キーの使用を試み、計 算されたシグネチャが一致しない場合は、2 個目の秘密キーの使用を試みます。 2 個 目の秘密キーが失敗した場合には、データ サービスはリクエストを拒否します。 秘密キ ーを追加または変更するユーザーは、すべてのデータ サービス ノードが新しい秘密キ ーで更新されるように、2 分間待ってから新しい秘密キーを使用する必要があります。 l ECS データ サービスでは、ネームスペースも HMAC シグネチャの計算に取り入れられ ます。 S3 サービスでの認証

(45)

7 章

Java クライアント アクセス

l SDK を使って S3 サービスにアクセス... 46

(46)

SDK を使って S3 サービスにアクセス

ECS S3 サービスと通信するアプリケーションを開発するにあたり、開発作業を支援する SDK はたくさんあります。

EMC コミュニティでは、利用できるさまざまなクライアントの情報と、その使い方に関するガ イダンスを提供しています。 EMC ViPR 開発者リソースを参照してください。

以降のトピックでは、Amazon S3 SDK と EMC ECS Java SDK の使い方について説明します。

l Java Amazon SDK の使用(46 ページ)

l ECS の Java SDK クライアント (48 ページ)

ECS API 拡張機能(参照)の利用では、EMC ECS Java SDK でこうした拡張機能のサポートが 提供されます。 ECS 拡張機能のサポートが不要な場合、またはそれを使用する既存のアプ リケーションがある場合は、Amazon Java SDK を使用できます。

Java Amazon SDK の使用

Java S3 SDK を使用して ECS オブジェクト ストレージにアクセスできます。 AmazonS3Client クライアント オブジェクトは、デフォルトでは amazon.com に対して動作を 直接実行するようにコーディングされています。このセクションでは、ECS に対して動作を実 行するようにAmazonS3Client をセットアップする方法を説明します。 AmazonS3Client オブジェクトのインスタンスを作成するには、認証情報を渡す必要があり ます。 そのためには、AWSCredentials オブジェクトを作成し、AWS アクセス キー(ECS ユー

ザー名)とECS 用生成済み秘密キーをオブジェクトに渡します。

次のコード スニペットは、その実装方法を示しています。

AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(uid, secret));

デフォルトでは、Amazon クライアントは Amazon WebServices に接続しようとします。 この

動作を無効にしてECS に接続するには、特別なエンドポイントを設定する必要があります。 エンドポイントは、setEndpoint メソッドを使って設定します。 エンドポイントで指定されるプロ トコルは、クライアントがHTTP ポート(9020)と HTTPS ポート(9021)のどちらを経由すべき かを表しています。 㽷 HTTPS ポートを使用する場合は、ECS 証明書を確認するようにアプリケーションの JDK をセ ットアップする必要があります。そうしないと、クライアントがSSL 検証エラーを返し、接続に 失敗します。 次のスニペットでは、HTTP 経由で ECS にアクセスするためのクライアントが使用されていま す。

AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(uid, secret));

client.setEndpoint("http://ecs1.emc.com:9020");

(47)

パス形式のアドレス指定(ecs1.emc.com/mybucket)を使用する場合は、次のように setPathStyleAccess オプションを設定する必要があります。

S3ClientOptions options = new S3ClientOptions(); options.setPathStyleAccess(true);

AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(uid, secret));

client.setEndpoint("http://ecs1.emc.com:9020"); client.setS3ClientOptions(options);

次のコードは、バケット内のオブジェクトを一覧にする方法を示しています。

ObjectListing objects = client.listObjects("mybucket");

for (S3ObjectSummary summary : objects.getObjectSummaries()) { System.out.println(summary.getKey()+ " "+summary.getOwner()); }

CreateBucket 操作は、リージョン指定を求めらる点で他の操作とは異なります。 これは S3 に対しては、バケットを作成するデータセンターを示すはずのものです。 しかし、ECS はリー ジョンをサポートしないため、 CreateBucket 操作をコールするときは標準リージョンを指定 し、AWS クライアントが Amazon CloudFront から Amazon Region 構成ファイルをダウンロー ドしないようにします。

client.createBucket("mybucket", "Standard");

ECS S3 データ サービスと通信し、バケットを作成し、オブジェクトを操作するまでの全体的 な例は、次のようになります。

public class Test {

public static String uid = "root"; public static String secret =

"KHBkaH0Xd7YKF43ZPFbWMBT9OP0vIcFAMkD/9dwj";

public static String viprDataNode = "http://ecs.yourco.com:9020"; public static String bucketName = "myBucket";

public static File objectFile = new File("/photos/cat1.jpg"); public static void main(String[] args) throws Exception { AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(uid, secret));

S3ClientOptions options = new S3ClientOptions(); options.setPathStyleAccess(true);

AmazonS3Client client = new AmazonS3Client(credentials); client.setEndpoint(viprDataNode); client.setS3ClientOptions(options); client.createBucket(bucketName, "Standard"); listObjects(client); client.putObject(bucketName, objectFile.getName(), objectFile); listObjects(client); client.copyObject(bucketName,objectFile.getName(),bucketName, "copy-" + objectFile.getName()); listObjects(client); }

public static void listObjects(AmazonS3Client client) { ObjectListing objects = client.listObjects(bucketName);

for (S3ObjectSummary summary : objects.getObjectSummaries()) {

Java クライアント アクセス

(48)

System.out.println(summary.getKey()+ " "+summary.getOwner()); } } }

ECS の Java SDK クライアント 

ECS Java SDK は、Amazon S3 Java SDK をベースに構築され、ECS API 拡張機能をサポート します。

ViPRS3client の使用例を次に示します。

package com.emc.ecs.sample;

import com.amazonaws.util.StringInputStream; import com.emc.vipr.services.s3.ViPRS3Client; public class BucketCreate {

private ViPRS3Client s3;

public BucketCreate() {

URI endpoint = new URI(“http://ecs.yourco.com:9020”); String accessKey = “[email protected]”;

String secretKey = “pcQQ20rDI2DHZOIWNkAug3wK4XJP9sQnZqbQJev3”; BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);

ViPRS3Client client = new ViPRS3Client(endpoint, creds); }

public static void main(String[] args) throws Exception { BucketCreate instance = new BucketCreate(); instance.runSample();

}

public void runSample() {

String bucketName="mybucket"; String key1 = "test1.txt"; String content = "Hello World!";

try {

s3.createBucket(bucketName);

s3.putObject(bucketName, key1, new StringInputStream(content), null); } catch (Exception e) { } } } Java クライアント アクセス

(49)

2 部

OpenStack Swift

第 8 章「ECS の OpenStack Swift サポートの概要」 第 9 章「Swift のサポート機能」

第 10 章「Swift の拡張機能」 第 11 章「認証」

第 12 章「許可」

(50)
(51)

8 章

ECS の OpenStack Swift サポートの概要

l ECS の OpenStack Swift API サポート... 52

(52)

ECS の OpenStack Swift API サポート

ECS は、OpenStack Swift API をサポートします。ここでは、サポート対象機能と、許可およ び認証のメカニズムを説明します。 OpenStack Swift サービスは、次のポートで使用できます。 プロトコル ポート HTTP 9024 HTTPS 9025 以降のトピックでは、サポートされるメソッド、ECS の拡張機能、認証のメカニズムを説明しま す。 l サポート対象のOpenStack Swift 機能(54 ページ) l Swift API の拡張機能(58 ページ) l OpenStack Swift の認証(64 ページ) l コンテナーに対する認証(72 ページ)

OpenStack Swift API の使用例については、次を参照してください。

l OpenStack API の例

(53)

9 章

Swift のサポート機能

l サポート対象のOpenStack Swift 機能...54

(54)

サポート対象の

OpenStack Swift 機能

以降のセクションでは、ECS でサポートされる OpenStack REST API リクエストを挙げていま す。

l サポート対象のOpenStack Swift コール(54 ページ)

l サポート対象外のOpenStack Swift コール(55 ページ)

この情報は、「OpenStack API リファレンス」文書の「Object Storage API V1」セクションから 抜粋したものです。

サポート対象のOpenStack Swift コール

ECS では、次の OpenStack Swift REST API コールがサポートされます。

表 5 サポート対象の OpenStack Swift コール 方法 パス 説明 GET v1/{account} 既存のストレージ コンテナーを名前順に並べたリストを 取得します。 GET v1/{account}/{container} コンテナーに保存されたオブジェクトのリストを取得しま す。 PUT v1/{account}/{container} コンテナーを作成します。 DELETE v1/{account}/{container} 空のコンテナーを削除します。

POST v1/{account}/{container} カスタム メタデータ ヘッダーをコンテナー レベル URI と 関連づけることにより、任意のコンテナー メタデータを作 成または更新します。こうしたヘッダーは、X-Container-Meta-*の形式を取る必要があります。 HEAD v1/{account}/{container} コンテナー メタデータを取得します。現状ではオブジェク ト カウントや使用バイトを含んでいません。 ユーザーには管理者権限が必要です。 GET v1/{account}/{container}/ {object} オブジェクトのデータを取得します。 PUT v1/{account}/{container}/ {object} オブジェクトの内容とメタデータを書き込むか上書きしま す。 ソースを指定するX-Copy-From ヘッダーを使って、既存 のオブジェクトを別のオブジェクトにコピーするために使 います。 DELETE v1/{account}/{container}/ {object} ストレージ システムからオブジェクトを恒久的に削除しま す。COPY コマンドと組み合わせて、COPY の次に DELETE を使うと、オブジェクトを有効に移動できます。 HEAD v1/{account}/{container}/ {object} オブジェクト メタデータと他の標準 HTTP ヘッダーを取得 します。 POST v1/{account}/{container}/ {object} 任意のオブジェクト メタデータを設定し上書きします。こ うしたメタデータは、X-Object-Meta-*の形式を取る必要 があります。オブジェクトの有効期限を設定する X-Delete-At または X-Delete-After も、この操作で割り当て ることができます。ただし、Content-Type などの他のヘッ ダーは、この操作では変更できません。 Swift のサポート機能

表 1 サポートされている S3 API (続き)
表 3 サポートされていない S3 API (続き)
表 4 オブジェクト API の拡張機能
表 5 サポート対象の OpenStack Swift コール 方法 パス 説明 GET v1/{account} 既存のストレージ コンテナーを名前順に並べたリストを 取得します。 GET v1/{account}/{container} コンテナーに保存されたオブジェクトのリストを取得しま す。 PUT v1/{account}/{container} コンテナーを作成します。 DELETE v1/{account}/{container} 空のコンテナーを削除します。
+7

参照

関連したドキュメント

青色域までの波長域拡大は,GaN 基板の利用し,ELOG によって欠陥密度を低減化すること で達成された.しかしながら,波長 470

は、これには該当せず、事前調査を行う必要があること。 ウ

この課題のパート 2 では、 Packet Tracer のシミュレーション モードを使用して、ローカル

Q-Flash Plus では、システムの電源が切れているとき(S5シャットダウン状態)に BIOS を更新する ことができます。最新の BIOS を USB

この大会は、我が国の大切な文化財である民俗芸能の保存振興と後継者育成の一助となることを目的として開催してまい

ASTM E2500-07 ISPE は、2005 年初頭、FDA から奨励され、設備や施設が意図された使用に適しているこ

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

そのため、ここに原子力安全改革プランを取りまとめたが、現在、各発電所で実施中