Submit Search
Upload
Auto tiering and Versioning of CLOUDIAN HyperStore
•
2 likes
•
865 views
CLOUDIAN KK
Follow
CLOUDIAN HyperStoreの自動階層化(Auto Tiering)とバージョニング機能についてご説明しています。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 60
Download now
Download to read offline
Recommended
AWS SDK for Python and CLOUDIAN HyperStore
AWS SDK for Python and CLOUDIAN HyperStore
CLOUDIAN KK
AWS CLI and CLOUDIAN HyperStore
AWS CLI and CLOUDIAN HyperStore
CLOUDIAN KK
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
聡 大久保
Ubuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイド
VirtualTech Japan Inc.
Cloud founryインストール手順
Cloud founryインストール手順
Kotaro Noyama
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
Etsuji Nakai
Uptime Database Appliance テクノロジープレビュー
Uptime Database Appliance テクノロジープレビュー
Uptime Technologies LLC (JP)
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
Kotaro Noyama
Recommended
AWS SDK for Python and CLOUDIAN HyperStore
AWS SDK for Python and CLOUDIAN HyperStore
CLOUDIAN KK
AWS CLI and CLOUDIAN HyperStore
AWS CLI and CLOUDIAN HyperStore
CLOUDIAN KK
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
AWS入門編 EC2/ELBを使った、ブログシステム構築ハンズオントレーニング
聡 大久保
Ubuntu Maas1.9 クイックセットアップガイド
Ubuntu Maas1.9 クイックセットアップガイド
VirtualTech Japan Inc.
Cloud founryインストール手順
Cloud founryインストール手順
Kotaro Noyama
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
Etsuji Nakai
Uptime Database Appliance テクノロジープレビュー
Uptime Database Appliance テクノロジープレビュー
Uptime Technologies LLC (JP)
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
Kotaro Noyama
Azure IaaS update (2018年6月~7月 発表版)
Azure IaaS update (2018年6月~7月 発表版)
Takamasa Maejima
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
VirtualTech Japan Inc.
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStack
VirtualTech Japan Inc.
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
VirtualTech Japan Inc.
OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)
VirtualTech Japan Inc.
社内システム on AWS
社内システム on AWS
kudo-jun
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
VirtualTech Japan Inc.
Recap: PowerShell Core
Recap: PowerShell Core
Kazuki Takai
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
Microsoft Azure Japan
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
Takashi Kanai
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
OpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
Hideki Saito
PowerShell DSC と Linux
PowerShell DSC と Linux
Kazuki Takai
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
Takashi Umeno
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
Hideki Saito
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点
d-shen
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
Masaya Aoyama
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
irix_jp
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化
shirou wakayama
PHP開発とクラウド
PHP開発とクラウド
晋也 古渡
Eleven tips to build your succesfull body language
Eleven tips to build your succesfull body language
Andre Vonk
More Related Content
What's hot
Azure IaaS update (2018年6月~7月 発表版)
Azure IaaS update (2018年6月~7月 発表版)
Takamasa Maejima
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
VirtualTech Japan Inc.
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStack
VirtualTech Japan Inc.
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
VirtualTech Japan Inc.
OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)
VirtualTech Japan Inc.
社内システム on AWS
社内システム on AWS
kudo-jun
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
VirtualTech Japan Inc.
Recap: PowerShell Core
Recap: PowerShell Core
Kazuki Takai
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
Microsoft Azure Japan
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
Takashi Kanai
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Etsuji Nakai
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
OpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
Hideki Saito
PowerShell DSC と Linux
PowerShell DSC と Linux
Kazuki Takai
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
Takashi Umeno
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
Hideki Saito
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点
d-shen
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
Masaya Aoyama
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
irix_jp
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化
shirou wakayama
What's hot
(20)
Azure IaaS update (2018年6月~7月 発表版)
Azure IaaS update (2018年6月~7月 発表版)
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
OpenStack-ansibleで作るOpenStack HA環境 Mitaka版
Ubuntu OpenStack Installer を使った1Node OpenStack
Ubuntu OpenStack Installer を使った1Node OpenStack
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
Canonicalが支える、さくっと使えるUbuntu OpenStack - OpenStack Day in ITpro EXPO 2014
OpenStack構築手順書Mitaka版 (期間限定公開)
OpenStack構築手順書Mitaka版 (期間限定公開)
社内システム on AWS
社内システム on AWS
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
OpenStack-Ansibleで作るOpenStack HA環境 Mitaka版(期間限定公開)
Recap: PowerShell Core
Recap: PowerShell Core
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStack QuickStart - Icehouse
OpenStack QuickStart - Icehouse
PowerShell DSC と Linux
PowerShell DSC と Linux
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
知らないと地味にハマるOpen stackインストール時の注意点
知らないと地味にハマるOpen stackインストール時の注意点
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack 基礎操作編
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化
Viewers also liked
PHP開発とクラウド
PHP開発とクラウド
晋也 古渡
Eleven tips to build your succesfull body language
Eleven tips to build your succesfull body language
Andre Vonk
クラウドストレージとは? (Cloudian Summit 2012)
クラウドストレージとは? (Cloudian Summit 2012)
CLOUDIAN KK
Второе ополчение. Всвобождение москвы.
Второе ополчение. Всвобождение москвы.
Proznanie.ru
Solgenicin nobelevskaya lekcia
Solgenicin nobelevskaya lekcia
Proznanie.ru
Usa
Usa
Proznanie.ru
Social media classroom
Social media classroom
tsimoneauberquez
Вторая война Рима с Карфагеном
Вторая война Рима с Карфагеном
Proznanie.ru
Особенности и развитие Латинской Америки
Особенности и развитие Латинской Америки
Proznanie.ru
Культура России XVIIIв
Культура России XVIIIв
Proznanie.ru
Protobuf
Protobuf
libfetion
Cardionics EKG Netwerk project cardionics.be presentatie doc nl
Cardionics EKG Netwerk project cardionics.be presentatie doc nl
CARDIONICS BELGIUM
Itunesaaapart5a
Itunesaaapart5a
Andrew Pettigrew
NetApp SteelStore with CLOUDIAN HyperStore
NetApp SteelStore with CLOUDIAN HyperStore
CLOUDIAN KK
Apresentacao sessoes mz
Apresentacao sessoes mz
Diogo Gomes
СИНХРОНИЧЕСКАЯ ТАБЛИЦА ДРЕВНЕГО ВОСТОКА (ДРЕВНИЙ БЛИЖНИЙ ВОСТОК, ДРЕВНИЙ ИРАН...
СИНХРОНИЧЕСКАЯ ТАБЛИЦА ДРЕВНЕГО ВОСТОКА (ДРЕВНИЙ БЛИЖНИЙ ВОСТОК, ДРЕВНИЙ ИРАН...
Proznanie.ru
Cloudian meets CloudStack
Cloudian meets CloudStack
CLOUDIAN KK
Malthus is still Wrong - we can feed a world of 9 billion
Malthus is still Wrong - we can feed a world of 9 billion
Prabhu Pingali
Presentation parent engagement january 2012
Presentation parent engagement january 2012
slater_45
Эпоха республики. Эпоха империи.
Эпоха республики. Эпоха империи.
Proznanie.ru
Viewers also liked
(20)
PHP開発とクラウド
PHP開発とクラウド
Eleven tips to build your succesfull body language
Eleven tips to build your succesfull body language
クラウドストレージとは? (Cloudian Summit 2012)
クラウドストレージとは? (Cloudian Summit 2012)
Второе ополчение. Всвобождение москвы.
Второе ополчение. Всвобождение москвы.
Solgenicin nobelevskaya lekcia
Solgenicin nobelevskaya lekcia
Usa
Usa
Social media classroom
Social media classroom
Вторая война Рима с Карфагеном
Вторая война Рима с Карфагеном
Особенности и развитие Латинской Америки
Особенности и развитие Латинской Америки
Культура России XVIIIв
Культура России XVIIIв
Protobuf
Protobuf
Cardionics EKG Netwerk project cardionics.be presentatie doc nl
Cardionics EKG Netwerk project cardionics.be presentatie doc nl
Itunesaaapart5a
Itunesaaapart5a
NetApp SteelStore with CLOUDIAN HyperStore
NetApp SteelStore with CLOUDIAN HyperStore
Apresentacao sessoes mz
Apresentacao sessoes mz
СИНХРОНИЧЕСКАЯ ТАБЛИЦА ДРЕВНЕГО ВОСТОКА (ДРЕВНИЙ БЛИЖНИЙ ВОСТОК, ДРЕВНИЙ ИРАН...
СИНХРОНИЧЕСКАЯ ТАБЛИЦА ДРЕВНЕГО ВОСТОКА (ДРЕВНИЙ БЛИЖНИЙ ВОСТОК, ДРЕВНИЙ ИРАН...
Cloudian meets CloudStack
Cloudian meets CloudStack
Malthus is still Wrong - we can feed a world of 9 billion
Malthus is still Wrong - we can feed a world of 9 billion
Presentation parent engagement january 2012
Presentation parent engagement january 2012
Эпоха республики. Эпоха империи.
Эпоха республики. Эпоха империи.
Similar to Auto tiering and Versioning of CLOUDIAN HyperStore
AWSのデータベースサービス全体像
AWSのデータベースサービス全体像
Amazon Web Services Japan
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
Amazon Web Services Japan
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
Akio Katayama
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
株式会社クライム
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
純生 野田
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。
Tetsuya Hasegawa
Hybrid Cloud with Cisco Cloud Center and Object Storage
Hybrid Cloud with Cisco Cloud Center and Object Storage
Hisayoshi Kato
Gpu accelerates aimodeldevelopmentandanalyticsutilizingelasticsearchandazure ai
Gpu accelerates aimodeldevelopmentandanalyticsutilizingelasticsearchandazure ai
Shotaro Suzuki
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Amazon Web Services Japan
Azure IaaS update (2018年6月~8月 発表版)
Azure IaaS update (2018年6月~8月 発表版)
Takamasa Maejima
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤
Takumi Sakamoto
msal.js v2を触る
msal.js v2を触る
DevTakas
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
PHP on Cloud
PHP on Cloud
Akio Katayama
20201017 JAWS-UG Fukuoka AWS Storage Gateway
20201017 JAWS-UG Fukuoka AWS Storage Gateway
Kazuhiro Uchimura
Windows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデート
Masayuki Ozawa
Kinesis3 notes
Kinesis3 notes
tatsuya 264
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
Ashitaba YOSHIOKA
Similar to Auto tiering and Versioning of CLOUDIAN HyperStore
(20)
AWSのデータベースサービス全体像
AWSのデータベースサービス全体像
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
Zerto ホワイトペーパー:Oracleデータベース保護のベストプラクティス(ショート編)
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。
Hybrid Cloud with Cisco Cloud Center and Object Storage
Hybrid Cloud with Cisco Cloud Center and Object Storage
Gpu accelerates aimodeldevelopmentandanalyticsutilizingelasticsearchandazure ai
Gpu accelerates aimodeldevelopmentandanalyticsutilizingelasticsearchandazure ai
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
Azure IaaS update (2018年6月~8月 発表版)
Azure IaaS update (2018年6月~8月 発表版)
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤
msal.js v2を触る
msal.js v2を触る
Jjug springセッション
Jjug springセッション
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
PHP on Cloud
PHP on Cloud
20201017 JAWS-UG Fukuoka AWS Storage Gateway
20201017 JAWS-UG Fukuoka AWS Storage Gateway
Windows エンジニア向け sql server on linux のためのスキルアップデート
Windows エンジニア向け sql server on linux のためのスキルアップデート
Kinesis3 notes
Kinesis3 notes
Alfrescoクラスタリング入門
Alfrescoクラスタリング入門
More from CLOUDIAN KK
CLOUDIAN HYPERSTORE - 風林火山ストレージ
CLOUDIAN HYPERSTORE - 風林火山ストレージ
CLOUDIAN KK
クラウディアンのご紹介
クラウディアンのご紹介
CLOUDIAN KK
IoT/ビッグデータ/AI連携により次世代ストレージが促進するビジネス変革
IoT/ビッグデータ/AI連携により次世代ストレージが促進するビジネス変革
CLOUDIAN KK
CLOUDIAN Presentation at VERITAS VISION in Tokyo
CLOUDIAN Presentation at VERITAS VISION in Tokyo
CLOUDIAN KK
S3 API接続検証プログラムのご紹介
S3 API接続検証プログラムのご紹介
CLOUDIAN KK
ZiDOMA data and CLOUDIAN HyperStore
ZiDOMA data and CLOUDIAN HyperStore
CLOUDIAN KK
FOBAS CSC and CLOUDIAN HyperStore
FOBAS CSC and CLOUDIAN HyperStore
CLOUDIAN KK
ARCserve backup and CLOUDIAN HyperStore
ARCserve backup and CLOUDIAN HyperStore
CLOUDIAN KK
Cloudian presentation at idc japan sv2016
Cloudian presentation at idc japan sv2016
CLOUDIAN KK
ITコアを刷新するハイブリッドクラウド型ITシステム
ITコアを刷新するハイブリッドクラウド型ITシステム
CLOUDIAN KK
【FOBAS】Data is money. ストレージ分散投資のススメ
【FOBAS】Data is money. ストレージ分散投資のススメ
CLOUDIAN KK
【ARI】ストレージのコスト・利便性・非機能要求項目を徹底比較
【ARI】ストレージのコスト・利便性・非機能要求項目を徹底比較
CLOUDIAN KK
【SIS】オブジェクトストレージを活用した増え続ける長期保管データの運用の効率化
【SIS】オブジェクトストレージを活用した増え続ける長期保管データの運用の効率化
CLOUDIAN KK
【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】コード化されたインフラの実装
CLOUDIAN KK
【CLOUDIAN】自動階層化による現有ストレージ活用術
【CLOUDIAN】自動階層化による現有ストレージ活用術
CLOUDIAN KK
【CLOUDIAN】秒間隔RPO(目標復旧時点)の実現
【CLOUDIAN】秒間隔RPO(目標復旧時点)の実現
CLOUDIAN KK
【Cloudian】FIT2015における会社製品紹介
【Cloudian】FIT2015における会社製品紹介
CLOUDIAN KK
CLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer Night
CLOUDIAN KK
ビッグデータ分析基盤が直面する課題をオブジェクトストレージで解決
ビッグデータ分析基盤が直面する課題をオブジェクトストレージで解決
CLOUDIAN KK
User interface of CLOUDIAN HyperStore
User interface of CLOUDIAN HyperStore
CLOUDIAN KK
More from CLOUDIAN KK
(20)
CLOUDIAN HYPERSTORE - 風林火山ストレージ
CLOUDIAN HYPERSTORE - 風林火山ストレージ
クラウディアンのご紹介
クラウディアンのご紹介
IoT/ビッグデータ/AI連携により次世代ストレージが促進するビジネス変革
IoT/ビッグデータ/AI連携により次世代ストレージが促進するビジネス変革
CLOUDIAN Presentation at VERITAS VISION in Tokyo
CLOUDIAN Presentation at VERITAS VISION in Tokyo
S3 API接続検証プログラムのご紹介
S3 API接続検証プログラムのご紹介
ZiDOMA data and CLOUDIAN HyperStore
ZiDOMA data and CLOUDIAN HyperStore
FOBAS CSC and CLOUDIAN HyperStore
FOBAS CSC and CLOUDIAN HyperStore
ARCserve backup and CLOUDIAN HyperStore
ARCserve backup and CLOUDIAN HyperStore
Cloudian presentation at idc japan sv2016
Cloudian presentation at idc japan sv2016
ITコアを刷新するハイブリッドクラウド型ITシステム
ITコアを刷新するハイブリッドクラウド型ITシステム
【FOBAS】Data is money. ストレージ分散投資のススメ
【FOBAS】Data is money. ストレージ分散投資のススメ
【ARI】ストレージのコスト・利便性・非機能要求項目を徹底比較
【ARI】ストレージのコスト・利便性・非機能要求項目を徹底比較
【SIS】オブジェクトストレージを活用した増え続ける長期保管データの運用の効率化
【SIS】オブジェクトストレージを活用した増え続ける長期保管データの運用の効率化
【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】コード化されたインフラの実装
【CLOUDIAN】自動階層化による現有ストレージ活用術
【CLOUDIAN】自動階層化による現有ストレージ活用術
【CLOUDIAN】秒間隔RPO(目標復旧時点)の実現
【CLOUDIAN】秒間隔RPO(目標復旧時点)の実現
【Cloudian】FIT2015における会社製品紹介
【Cloudian】FIT2015における会社製品紹介
CLOUDIAN at Support Engineer Night
CLOUDIAN at Support Engineer Night
ビッグデータ分析基盤が直面する課題をオブジェクトストレージで解決
ビッグデータ分析基盤が直面する課題をオブジェクトストレージで解決
User interface of CLOUDIAN HyperStore
User interface of CLOUDIAN HyperStore
Auto tiering and Versioning of CLOUDIAN HyperStore
1.
Technical Tips on
CLOUDIAN HyperStore #2 Technical Tips on CLOUDIAN HyperStore® 自動階層化(Auto-Tiering)とバージョニング機能の解説 ~ AWS SDK for PHP を使用したサンプルコード ~ (CLOUDIAN HyperStore v5.2.x 対応版) Version 1.2 Jan. 27, 2016
2.
《 目 次
》 1. はじめに........................................................................................................ 2 2. 自動階層化(AUTO-TIERING)機能について ...................................................... 3 バケットライフサイクル概要 ............................................................................... 3 自動階層化機能の設定 ................................................................................. 6 ライフサイクルルールの設定 ............................................................................ 10 ① 自動階層化(データの移動)ルールの設定...................................................... 11 ② データの削除ルールの設定.......................................................................... 12 ③ ライフサイクルルールの有効化 ...................................................................... 13 3. バージョニングについて ..................................................................................... 14 バージョニング概要 ...................................................................................... 14 PUT 時の動作.......................................................................................... 16 DELETE/GET 時の動作............................................................................ 17 バケットのバージョニング有効化 ....................................................................... 18 バージョニングされたオブジェクトの削除 .............................................................. 20 4. AWS SDK FOR PHP 2 を使用した PHP サンプルコード .......................................... 25 バージョニング設定状況の表示と状態変更のサンプルコード ....................................... 28 バージョニングされたバケットに対するオブジェクトの複数回 PUT.................................. 38 バージョニングされたオブジェクトのダウンロード(GET)処理..................................... 45 5. おわりに ...................................................................................................... 55
3.
Technical Tips on CLOUDIAN
HyperStore #2 P.1 Copyright © 2010-2015 Cloudian KK. All rights reserved. 本書では、CLOUDIAN HyperStore®で利用可能な下記 2 つの機能について、その概念と利 用方法を説明します。 自動階層化(Auto-Tiering)機能 (※HyperStore 独自機能) バージョニング機能 CMC で設定できない設定項目は、本書では AWS SDK for PHP 2 をインストールした PHP 環境 を用意し、PHP から S3 API を呼び出して設定を行っています。 AWS SDK は PHP 以外にも、Java や.NET、Python、Ruby、Node.js、モバイル端末向けの iOS や Android に対応したものが、Amazon Web Services から提供されています。 本書では AWS SDK for PHP 2 を使用した PHP サンプルコードをいくつか掲載し、主にバージョニン グ機能の利用イメージを説明します。 本書では触れないその他言語の AWS SDK や、AWS SDK for PHP 2 ののより詳細な内容・説 明を確認したい場合には、Amazon Web Services 社のホームページをご参照ください。 【対象読者】 システム管理者、システム運用者、アプリケーション開発者 および HyperStore の自動階層化機能 にご興味をお持ち頂いているお客様 《注意事項》 本書に掲載するサンプルコードは、あくまでも S3 API を使用して HyperStore の機能を設定する方法の概要を説明するための、非 常に簡易なものです。そのため、サンプルコードでは最低限の機能しか実装しておらず、例外処理も不十分な状態です。実環境で使用さ れる場合は本書を参考にして、必要な機能や例外処理を実装してください。 本書に掲載するサンプルコードを使用したことにより発生したデータの損失またはお客様のコンピューター・システムへの損傷などのいかな る損害についても、クラウディアン株式会社は一切の責任を負わないものとします。 サンプルコードをそのままご使用になられる場合は、自己判断・自己責任でお願いします。
4.
Technical Tips on CLOUDIAN
HyperStore #2 P.2 Copyright © 2010-2015 Cloudian KK. All rights reserved. 1. はじめに 本書では、CLOUDIAN HyperStore®(以下、「HyperStore」)の独自機能である自動階層化 (Auto-Tiering)機能と、バージョニングについて説明します。 HyperStore は、HyperStore ストレージにオブジェクトが格納されている期間(ライフサイクルルール) に基づいて異なる HyperStore システム、あるいは Amazon S3 または Glacier へオブジェクトを自動 的に移行させる“自動階層化(Auto-Tiering)”機能を有しています。この機能は、Amazon S3 が持 つバケットライフサイクル管理機能を拡張し、HyperStore 独自の機能として実装したものです。 まず初めに、本機能の基になっているバケットライフサイクル管理機能の概要を説明し、具体的に HyperStore でどのように自動階層化の設定を行うのかをスクリーンショットを掲載し説明します。 次に、HyperStore のバケットに格納されたオブジェクトの過去バージョンを複数保持することができる、 “バージョニング機能”について説明します。 最終章では AWS SDK for PHP 2 を使用し、PHP から S3 API を呼び出してバージョニングの機 能を確認して頂ける PHP サンプルコードをいくつか掲載します。
5.
Technical Tips on CLOUDIAN
HyperStore #2 P.3 Copyright © 2010-2015 Cloudian KK. All rights reserved. 2. 自動階層化(Auto-Tiering)機能について 本章では、自動階層化(Auto-Tiering)機能の概要を説明します。 バケットライフサイクル概要 HyperStore の自動階層化機能は、Amazon S3 で使用できるバケットライフサイクル管理機能を 拡張し実装されています。HyperStore は、設定されたライフサイクルルールに基づき、ライフサイクルの有 効期限が失効したオブジェクトを Amazon S3/Glacier、あるいは異なる HyperStore システムに移 動させます。 ライフサイクルルールは、バケットに対して設定します。バケット単位で設定できるため、 「バケット A は、オブジェクトを外部のストレージシステムに自動階層化する」 「バケット B は自動階層化せず、ローカルの HyperStore ストレージに保管し続ける」 といった制御も可能です。 オブジェクトが格納されるバケットに対して設定したライフサイクルの有効期間中に、そのバケットに格納 されたオブジェクトをどのように管理するかを定義できます。 ここで言う“管理”とは、 オブジェクトの削除 … 「図1: データの削除(Expiration)」 参照 オブジェクトの移動 … 「図2: データの移動(Transition)」 参照 という操作を、設定したライフサイクルに基づくルールにより自動的に実行することを意味しています。
6.
Technical Tips on CLOUDIAN
HyperStore #2 P.4 Copyright © 2010-2015 Cloudian KK. All rights reserved. 例えば、下記の例のように Firewall やサーバー、ネットワーク機器等の IT 機器から出力されるログを毎日、S3 バケットにア ップロードしているが、このログは監査目的で一年間は保持しておく必要があるものの、その後は削 除しても問題無いという社内規定等がある。 ファイルサーバー用途で HyperStore ストレージを利用しているが、調査の結果、約 80%のファ イルが 3 年以上、アクセスされていないことが判明したので、最終アクセス日時から 3 年以上経 過したものは他の HyperStore システム、あるいは Amazon Glacier に移行させても構わな い。 一定期間はすぐにアクセスできる状態でデータを保持しておく必要があるが、その期間を経過する と殆どアクセスされなくなるデータだが、業界基準や法規制により長期間の保管を義務付けられて いる。 等のオブジェクト(データ)に対する保管要件に従って、HyperStore のライフサイクルルールを定義 することができます。 図 1: データの削除 (Expiration) 作成日: 2014 年 8 月 7 日 作成日: 2014 年 8 月 14 日 作成日: 2014 年 7 月 31 日 本日削除 2015 年 8 月 14 日 削除予定 2015 年 7 月 31 日 削除済み 今日: 2015 年 8 月 7 日 ライフサイクル設定期間 <Expiration> <Days>365</Days> </Expiration> 文書① 文書② 文書③ 文書② 文書③ 文書① 365 日
7.
Technical Tips on CLOUDIAN
HyperStore #2 P.5 Copyright © 2010-2015 Cloudian KK. All rights reserved. 図 2: データの移動 (Transition) さらにオブジェクトの移動(Transition)と削除(Expiration)のルールを組み合わせて定義することによ り、 作成後、1 年経過した財務帳票を異なる HyperStore システムあるいは Amazon Glacier に移行し、作成後から 10 年経過した時点で削除する といった、Transition と Expiration を組み合わせたライフサイクルルールを定義することもできます。 作成日: 2014 年 8 月 7 日 作成日: 2014 年 8 月 14 日 作成日: 2014 年 7 月 31 日 本日移行 今日: 2015 年 8 月 7 日 <Transition> <Days>365</Days> </Transition> Amazon Glacier 文書② 文書① 文書③ 文書① 文書② 文書③ ライフサイクル設定期間 365 日
8.
Technical Tips on CLOUDIAN
HyperStore #2 P.6 Copyright © 2010-2015 Cloudian KK. All rights reserved. 自動階層化機能の設定 自動階層化先が Amazon S3 あるいは Glacier である場合は、CMC にシステム管理者アカウント でログインし、 [クラスター] → [クラスター設定] → [構成設定] から「Auto-Tiering 有効」および「Auto-Tiering URL」を編集します。
9.
Technical Tips on CLOUDIAN
HyperStore #2 P.7 Copyright © 2010-2015 Cloudian KK. All rights reserved. 自動階層化先が異なる HyperStore システムや HyperStore をインフラ基盤としてご採用頂いてい るクラウドストレージである場合は前頁の設定(Auto-Tiering の有効化や URL の設定)を行い、さらに HyperStore の設定ファイル「mts-ui.properties.erb」内のパラメータ 「bucket.transitiontocloudian.enabled」を、以下のように編集し保存します。 この設定ファイルは、HyperStore システムのインストールを実行したノードの下記ディレクトリに存在し ています。 格納ディレクトリ: /etc/cloudian-5.2.1-puppet/modules/cmc/templates : (中略) : bucket.transitiontocloudian.enabled = true : (中略) : ● 「mts-ui.properties.erb」設定ファイルの編集(異なる HyperStore システム)
10.
Technical Tips on CLOUDIAN
HyperStore #2 P.8 Copyright © 2010-2015 Cloudian KK. All rights reserved. さらに自動階層化先が異なる HyperStore システムや HyperStore をインフラ基盤としてご採用頂 いているクラウドストレージである場合は、HyperStore の設定ファイル「tiering-regions.xml.erb」 に階層先の情報を追記し保存します。 この設定ファイルは、HyperStore システムのインストールを実行したノードの下記ディレクトリに存在し ています。 格納ディレクトリ: /etc/cloudian-5.2.1-puppet/modules/cloudians3/templates 有効にできる自動階層化先は、同時にひとつのみです。 例えば、Amazon S3 へオブジェクトを自動階層化している場合には、同時に異なるバケットを異なる HyperStore システムへ自動階層化することはできません。 上記設定を完了したら、Puppet により設定ファイルを HyperStore ノードへ配布してください。 HyperStore のインストール・スクリプト内のメニューに、 「2) Cluster Management → b」 Push Configuration Settings to Cluster」 というメニューがありますので、これを実行します。 : (中略) : <Region> <Name>OSAKA</Name> <Endpoint> <ServiceName>s3</ServiceName> <Http>true</Http> <Https>true</Https> <Hostname>s3-region1.osaka.local</Hostname> </Endpoint> </Region> : (中略) : ● 「tiering-regions.xml.erb」設定ファイルの編集(異なる HyperStore システム) ※ <Http>、<Https>の値(true/false)は、階層先の環境に合わせたものを設定してください。 ※ <Hostname>には、階層先のエンドポイントを設定してください。
11.
Technical Tips on CLOUDIAN
HyperStore #2 P.9 Copyright © 2010-2015 Cloudian KK. All rights reserved. 変更された設定ファイルの配布が完了すると、CMC のバケットプロパティ画面に後述する 「バケットライフサイクルルール」セクションに、自動階層化の設定を行うことができる“オブジェクトの移動 を有効にする”欄が表示されます。 ※ デフォルトの状態では、“オブジェクトの移動を有効にする”欄は表示されていません。 なお、Auto-Tiering を有効化すると、すべてのユーザーのバケットプロパティ画面に「オブジェクトの移 動を有効にする」欄が表示されます。 システム管理者権限を持つユーザーのみ、グループ管理者以上の権限を持つユーザーのみ、すべての ユーザー、特定の(指定した)ユーザーのみ、またはその組み合わせを指定して表示させるユーザーを制 限したい場合には、このパラメータ―の値を変更してください。 bucket.transition.enabled = { SystemAdmin | GroupAdmin | User | (許可するユーザー名) } bucket.transitiontocloudian.enabled = { SystemAdmin | GroupAdmin | User | (許可するユーザー名) } ※ 複数種別/複数ユーザーを指定する場合は、「 , 」で区切って指定してください。 ※ {許可するユーザー名}は、CMC の“<グループ ID>|<ユーザーID>”の形式で指定します。 【補足】 自動階層化先のストレージシステムに接続するためには S3 クレデンシャル(アクセスキーとシークレットキ ー)が必要になります。 バケットに対して自動階層化機能の設定を行う際に、個別に(異なる)S3 クレデンシャルを設定する こともできますが、システム管理者は事前に下図の CMC 画面から、デフォルトで使用されるアクセスキー とシークレットキーを登録しておくこともできます。 図 3:CMC[クラスター]メニュー → [クラスター設定] → AUTO-TIERING クレデンシャル
12.
Technical Tips on CLOUDIAN
HyperStore #2 P.10 Copyright © 2010-2015 Cloudian KK. All rights reserved. ライフサイクルルールの設定 バケットライフサイクルのルールは、Cloudian Management Console(以下、CMC)のバケットプ ロパティ画面内―「バケットライフサイクルルール」から設定できます。 ブラウザで CMC を開き、 [オブジェクト]メニュー ↓ バケット一覧からルールを 設定したいバケットを選択 ↓ 選択状態で下部[設定] ボタンを押下 すると、バケットプロパティ画面 が表示されます。 ルールの適用対象はバケット内に格納されている全てのオブジェクト、またはオブジェクトプレフィックス (後述)にマッチする単一あるいは複数のオブジェクトです。 ルールが適用されるオブジェクトのライフサイクル起算日となる基準は、 作成日時 最終アクセス日時 のいずれかから選択することができます。 例えば、ライフサイクルルールが設定されているバケットに、 「新規にオブジェクトが格納されてから 90 日後に、 Amazon Glacier にデータを移動させる(作成日時基準)」 「最後にオブジェクトにアクセスがあった日から 365 日が経過したオブジェクトを、削除する(最終アクセス日時基準)」 といったように、作成日時と最終アクセス日時を使い分けることができます。 ①CMC を開き、 [オブジェクト]メニューを クリックします。 ②バケット一覧から、ライフサイクルルールを 設定したいバケットを選択します。 ③[設定]ボタンを押下します。
13.
Technical Tips on CLOUDIAN
HyperStore #2 P.10 Copyright © 2010-2015 Cloudian KK. All rights reserved. 実際の CMC の画面イメージを使いながら、ライフサイクルルールの設定方法を説明します。 バケットライフサイクルルール の設定画面は、左図のように ① データの移動 ② データの削除 ③ ルールの有効化 を設定する領域に分かれてい ます。 以降、領域毎に設定方法 を記載します。 「データの移動」 設定箇所 「データの削除」 設定箇所 ルールの有効化と 保存
14.
Technical Tips on CLOUDIAN
HyperStore #2 P.11 Copyright © 2010-2015 Cloudian KK. All rights reserved. ① 自動階層化(データの移動)ルールの設定 オブジェクトプレフィックスの設定が空の場合は バケット内のすべてのオブジェクトに、 指定のある場合は、前方一致でマッチする オブジェクトにのみルールが適用されます。 オブジェクトの移動の有効/無効を設定します。 有効にチェックした場合は、オブジェクトの移動先を Amazon S3 (AWS S3 へ転送) あるいは Amazon Glacier(AWS GLACIER へ転送) から選択します。 ルールが適用されたオブジェクトが、指定した移動先に階層化 されるタイミングを設定します。 ① ●日後以降(オブジェクト作成後) あるいは ② 指定日以降 のどちらかの形式で設定可能です。 ①の設定単位は”日”で、1 日後から 2,147,483,647 日後 までの間で指定できます。 ②の設定単位は”年月日時分”で、西暦 9999 年 23 時 59 分までの値を設定できます。 Amazon S3/Glacier に移動されたオブジェクトを取得する際の 動作を、以下の 3 つの方式から選択します。 (1) ストリーム (2) リダイレクト (3) 取得する前にリストアが必要 オブジェクトの自動階層先(Amazon S3/Glacier)に 接続するために使用するアクセスキーとシークレットキー。 管理者が事前に登録したキーを使用する場合は、 [デフォルトの S3 クレデンシャルを使用] にチェックします。 ● 自動階層化(データ移動)の設定
15.
Technical Tips on CLOUDIAN
HyperStore #2 P.12 Copyright © 2010-2015 Cloudian KK. All rights reserved. ② データの削除ルールの設定 オブジェクトの削除の有効/無効を設定します。 削除(ライフサイクル有効期限の失効)のタイミングは、 次の設定項目で設定します。 ルールが適用されたオブジェクトが、削除されるタイミングを設定 します。 ① ●日後以降(オブジェクト作成後) あるいは ② 指定日以降 のどちらかの形式で設定可能です。 ①の設定単位は”日”で、1 日後から 2,147,483,647 日後 までの間で指定できます。 ②の設定単位は”年月日時分”で、西暦 9999 年 23 時 59 分までの値を設定できます。 ● データ削除の設定
16.
Technical Tips on CLOUDIAN
HyperStore #2 P.13 Copyright © 2010-2015 Cloudian KK. All rights reserved. ③ ライフサイクルルールの有効化 これまで設定してきたライフサイクルルールを 有効化するには、[ルールの有効化]をチェックします。 ライフサイクルルールの起算日となる基準を、 作成日時 最終アクセス日時 から選択します。 ● ライフサイクルルールの有効化
17.
Technical Tips on CLOUDIAN
HyperStore #2 P.14 Copyright © 2010-2015 Cloudian KK. All rights reserved. 3. バージョニングについて 本章では、機能が有効化されたバケットに格納されたオブジェクトの過去バージョンを保持すること ができる“バージョニング”の概要を説明します。 バージョニング概要 バージョニングとは、その機能を有効にしたバケットに格納されるオブジェクトの複数バージョンを保持 する機能です。バージョニングを有効にすると、誤ってデータ(オブジェクト)を上書きしてしまった場合 や誤削除してしまった場合でも、過去バージョンのデータを取り出すことが可能になります。 バージョニングは、ディスクストレージの一般的な機能としてよく用いられているスナップショットとは異 なる概念であることに注意してください。 一般的なスナップショットの場合は、スナップショットを取得した時点で存在したディスク上のブロック を Frozen Frame して保存し、ファイルが更新されブロックが書き変わった場合には、Frozen Frame として保存されたブロックは変更せず、ディスク上に更新されたブロックを新たに配置します。そ のため、スナップショットのために必要となるディスク容量は、基本的にはスナップショット取得後からの 差分ブロック分となります。 バージョニングの場合はスナップショットのように、ブロック差分データから過去バージョンを復元するの ではなく、単に更新や削除される前の状態(バージョン)のデータを内部に保持しているだけです。
18.
Technical Tips on CLOUDIAN
HyperStore #2 P.15 Copyright © 2010-2015 Cloudian KK. All rights reserved. 下表に、HyperStore のバージョニングと一般的なストレージ製品のスナップショットの比較を記載 します。 バージョニング (一般的な) スナップショット 取得される単位 バージョニングが有効にされたバケッ ト内に格納されているオブジェクト ファイルシステムが作成されている ボリューム 取得されるタイミング オブジェクトに変更(更新、上書 き、削除)が発生した時点。 保持されるバージョン数は、オブジェ クトの変更頻度により異なるため、 各オブジェクトで異なる。 手動またはスケジュール実行。 対象のボリューム全体に対して取得さ れるため、ボリューム内のファイルは一 律、同じ世代数を持つ。 取得時に保持されるデータ 変更前のオブジェクト全体 前回取得以降の更新差分ブロック 過去データの削除 手動による削除 (※) ※ S3 API によりプログラミングすることに より、自動化も実現可能 手動による削除 設定した世代数を超過したもの の自動削除 表 1: バージョニングとスナップショットの違い 例えば左図のように、バージョニング が有効化されたバケット 「versioned」内に「test.txt」という ファイルが存在するとします。 通常の PUT/GET 操作ではあまり 意識しませんが、オブジェクトには “バージョン ID”という属性が設定さ れています。 格納バケット名: versioned ファイル名: test.txt ファイルサイズ: 88 bytes バージョン ID: fe1ac32c-2169-2f1f-a160-000c296039b5
19.
Technical Tips on CLOUDIAN
HyperStore #2 P.16 Copyright © 2010-2015 Cloudian KK. All rights reserved. PUT 時の動作 例えば、バージョニングが有効にされたバケット「versioned」に同じファイル名(キー)でオブジェク トを PUT した場合、下図のように以前のバージョンは内部的に保持されます。 図 4: バージョニングの動作 (PUT 時) PUT test.txt Key = test.txt ID = fe1ac32c-08ed-a2ef-a160-000c296039b5 isLatest = True Key = test.txt ID = fe1ac32c-0eed-e42f-a160-000c296039b5 isLatest = False Key = test.txt ID = fe1ac32c-14eb-664f-a160-000c296039b5 isLatest = False Key = test.txt ID = fe1ac32c-1ae7-afef-a160-000c296039b5 isLatest = False Key = test.txt ID = fe1ac32c-2169-2f1f-a160-000c296039b5 isLatest = False 最新バージョン 一世代前バージョン 二世代前バージョン 三世代前バージョン 四世代前バージョン
20.
Technical Tips on CLOUDIAN
HyperStore #2 P.17 Copyright © 2010-2015 Cloudian KK. All rights reserved. DELETE/GET 時の動作 このオブジェクト「test.txt」を削除すると、最新バージョン(ID: fe1ac32c-08ed-a2ef- a160-000c296039b5)に削除マーカーが付けられます。 バージョン ID を指定しない GET リクエストは最新のバージョンを取得するため、“404 Not Found”エラーが返されます。GET リクエスト時に Bucket、Key 以外に、VersionId を指定する ことで、過去バージョンのオブジェクトを取得することができます。 図 5: バージョニングの動作 (DELETE/GET 時) DELETE test.txt Key = test.txt ID = fe1ac32c-08ed-a2ef-a160-000c296039b5 isLatest = True Key = test.txt ID = fe1ac32c-0eed-e42f-a160-000c296039b5 isLatest = False Key = test.txt ID = fe1ac32c-14eb-664f-a160-000c296039b5 isLatest = False Key = test.txt ID = fe1ac32c-1ae7-afef-a160-000c296039b5 isLatest = False Key = test.txt ID = fe1ac32c-2169-2f1f-a160-000c296039b5 isLatest = False 最新バージョン GET 404 Not Found 二世代前 GET Bucket Key VersionId 削除マーカー
21.
Technical Tips on CLOUDIAN
HyperStore #2 P.18 Copyright © 2010-2015 Cloudian KK. All rights reserved. バケットのバージョニング有効化 バケットのバージョニングを有効にする設定は、現行バージョン(HyperStore v5.2.x)の CMC か らは行うことができません。 バージョニングを有効にする方法としては主に、 ① バージョニングを有効にする機能が搭載されている S3 クライアントソフトを利用する ② S3 API を使用して、バケットのバージョニングを有効にする の 2 つの方法が存在します。 本書ではバージョニングを有効にする方法として、上記②の AWS SDK for PHP 2 を用いた PHP コードから S3 API を呼び出して有効化する方法を説明します。 バケットのバージョニングを有効にするには、バージョニングの状態(”status”)を表す属性に “Enabled”を設定します(デフォルトは“Disabled”の状態です)。 上記「注意点」記載のように、一度、バージョニングを有効にしたバケットのバージョニングを再度無 効にすることはできません。“status”属性に“Suspended”を設定することで、バージョニングを一時 停止させることは可能です。 一度、バージョニングを有効にしたバケットのバージョニングをその後、 無効にすることはできません。 過去バージョンのオブジェクトの保持を止めたい場合には、バージョニングを 一時停止(Suspended)させます。 注意点
22.
Technical Tips on CLOUDIAN
HyperStore #2 P.19 Copyright © 2010-2015 Cloudian KK. All rights reserved. AWS SDK for PHP 2 を使用して PHP から S3 API を呼び出し、バケットのバージョニング・ス テータスを変更するには、S3Client オブジェクトの putBucketVersioning メソッドを使用する 方法が非常に簡単です。 < s3client -> putBucketVersioning メソッド > 以下のサンプルコードは、バケット「test01」のバージョニングの状態(“Status”)を“Enabled”に 変更します。 public Guzzle¥Service¥Resource¥Model putBucketVersioning( array $args = array() ) $args array $args パラメータは、以下のキーを含む連想配列です(黒太字は設定必須です)。 Bucket => (string) MFA => (string) MFADelete => (string: Enabled | Disabled ) Status => (string: Enabled | Suspended ) <?php require_once("vendor/autoload.php"); require_once("./config.php"); use Aws¥S3¥S3Client; $client = S3Client::factory($config); // バケットのバージョニング有効化 $param = array( 'Bucket' => 'test01', 'Status' => 'Enabled' ); $client->putBucketVersioning($param); 構 文 説 明 サンプルコード
23.
Technical Tips on CLOUDIAN
HyperStore #2 P.20 Copyright © 2010-2015 Cloudian KK. All rights reserved. バージョニングされたオブジェクトの削除 バージョニングが有効になっているバケットに格納されているオブジェクトは、上書きや削除をしても、 変更前のオブジェクトが内部的に保持され続けます。保持された過去バージョンのオブジェクトは、明 示的に deleteObject(s)しない限り、過去バージョンが残るためデータが増えていきます。 前述の通り、通常のオブジェクトの DELETE リクエストは Bucket と Key の 2 つのパラメータを 使用して行われるため、最新バージョンのオブジェクトが削除対象となります。 過去バージョンのオブジェクトを削除したい場合には、どのバージョンのオブジェクトを削除するかを指 定するために Key と VersionId の組み合わせでオブジェクトを特定し、deleteObject(s)する必 要があります。 以下に、AWS SDK for PHP 2 で使用できる S3Client オブジェクトの deleteObject およ び deleteObjects メソッドのパラメータ一覧を記載します。 単一の過去バージョンのオブジェクトを削除する場合には deleteObject メソッドを、複数の過去 バージョンのオブジェクトを削除する場合には deleteObjects メソッドを用いますが、どちらもポイント は 3 つのパラメータ(Bucket, Key, VersionId)を指定して削除対象の過去バージョンを指定する点 です。
24.
Technical Tips on CLOUDIAN
HyperStore #2 P.21 Copyright © 2010-2015 Cloudian KK. All rights reserved. < s3client -> deleteObject メソッド > public Guzzle¥Service¥Resource¥Model deleteObject( array $args = array() ) $args array $args パラメータは、以下のキーを含む連想配列です(黒太字は設定必須です)。 Bucket => (string) Key => (string) MFA => (string) VersionId => (string) RequestPayer => (string: requester ) 構 文 説 明
25.
Technical Tips on CLOUDIAN
HyperStore #2 P.22 Copyright © 2010-2015 Cloudian KK. All rights reserved. < s3client -> deleteObjects メソッド > public Guzzle¥Service¥Resource¥Model deleteObjects( array $args = array() ) $args array $args パラメータは、以下のキーを含む連想配列です(黒太字は設定必須です)。 Bucket => (string) Objects => (array<associative-array>) (associative-array) Key => (string) VersionId => (string) Quiet => (bool) MFA => (string) RequestPayer => (string: requester ) 構 文 説 明
26.
Technical Tips on CLOUDIAN
HyperStore #2 P.23 Copyright © 2010-2015 Cloudian KK. All rights reserved. 以下のコードは、通常の(最新バージョンを対象とした)deleteObject を実行するために、PHP か ら S3 API を呼び出すサンプルコードです。以下のように、最新バージョンを対象とした deleteObject で指定する必須のパラメータは、 Bucket … このサンプルでは「test01」を設定 Key … このサンプルでは「sample/data.txt」を設定 のみです。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); use Aws¥S3¥S3Client; $client = S3Client::factory($config); // オブジェクトの削除 $param = array( 'Bucket' => 'test01', 'Key' => 'sample/data.txt' ); $client->deleteObject($param); サンプルコード
27.
Technical Tips on CLOUDIAN
HyperStore #2 P.24 Copyright © 2010-2015 Cloudian KK. All rights reserved. PHP から S3 API を呼び出し、過去バージョンのオブジェクトに対して deleteObjects を実行す るサンプルコードを、以下に掲載します。 Key は同じもの(sample/data.txt)を指定していますが、異なるバージョン ID(VersionId)を 指定していることに注目してください。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); use Aws¥S3¥S3Client; $client = S3Client::factory($config); // オブジェクトの削除 $param = array( 'Bucket' => 'test01', 'Objects' => array( array( 'Key' => 'sample/data.txt', 'VersionId' => 'fe1ac32c-0eed-e42f-a160-000c296039b5', ), array( 'Key' => 'sample/data.txt', 'VersionId' => 'fe1ac32c-14eb-664f-a160-000c296039b5', ), array( 'Key' => 'sample/data.txt', 'VersionId' => 'fe1ac32c-1ae7-afef-a160-000c296039b5', ) ) ); $client->deleteObjects($param); サンプルコード
28.
Technical Tips on CLOUDIAN
HyperStore #2 P.25 Copyright © 2010-2015 Cloudian KK. All rights reserved. 4. AWS SDK for PHP 2 を使用した PHP サンプルコード 本章で掲載するサンプルコードは、 Apache HTTP サーバー(Win64/2.4.12) PHP 5.6.7 が導入済みの環境に、Composer を使って AWS SDK for PHP 2 をインストールして動作していま す。 AWS SDK for PHP をインストールする手段はいくつかありますが、Composer を使用することに より aws-sdk-php およびその依存関係にあるパッケージをインストールできるため、非常に簡単に導 入することができます。 Composer https://getcomposer.org/ Composer のインストール方法等の詳細は、下記の Amazon Web Services のインストレーシ ョンガイドをご参照ください。このガイドに記載されているように、Amazon Web Services の推奨も Composer を使用して AWS SDK for PHP をインストールする方法です。 AWS SDK for PHP Installation http://docs.aws.amazon.com/aws-sdk-php/v2/guide/installation.html#installing-using-composer 著者が自 PC に Composer を導入する際に、パッケージの依存関係を記載する 「composer.json」ファイルの内容は以下の記述のみです。 { "require": { "aws/aws-sdk-php": "2.*" } } ● composer.json
29.
Technical Tips on CLOUDIAN
HyperStore #2 P.26 Copyright © 2010-2015 Cloudian KK. All rights reserved. Composer の導入が完了し、上述の「composer.json」ファイル作成後に、 php composer.phar install を実行し AWS SDK for PHP のインストールを完了させてください。 右図のようなフォルダ構成により、 AWS SDK for PHP Guzzle がインストールされているはずです。 PHP のソースコード内で "vendor/autoload.php" を require(require_once)すると、AWS SDK for PHP のライブラリが使用できるように なります。 また、著者の環境では、HyperStore に接 続する際に必要となるクレデンシャルの情報を “./config.php” に記載し、ソース冒頭で require_once によ り取り込んでいます。 さらに HTML 禁則文字をエンコードする処 理が記載されている “../Encode.php” を作成し、ソース冒頭で require_once によ り取り込んでいます。
30.
Technical Tips on CLOUDIAN
HyperStore #2 P.27 Copyright © 2010-2015 Cloudian KK. All rights reserved. <?php // Instantiate the S3 client with your S3 credentials $config = array( 'base_url' => 'http://s3.shibuya.local', 'region' => 'region1', 'key' => '3720a036a0d080b14db7', 'secret' => 'QZa9f0FjvK8JMUQufc3YO667Tc9uJ3jhGOrLSNri', ); <?php function e($str, $charset = 'UTF-8') { print htmlspecialchars($str, ENT_QUOTES, $charset); } サンプルコード ※ サンプルコードが動作している環境は、インターネットに接続できない完全なローカル環境であるため、 分かり易いように’key’(アクセスキー)と’secret’(シークレットキー)を伏せていませんが、通常は アクセスキーとシークレットキーの組み合わせは外部に漏れないよう管理してください。 config.php サンプルコード Encode.php
31.
Technical Tips on CLOUDIAN
HyperStore #2 P.28 Copyright © 2010-2015 Cloudian KK. All rights reserved. バージョニング設定状況の表示と状態変更のサンプルコード 以下に掲載するサンプルコードは、アクセスキー/シークレットキーを使用して HyperStore に接 続したアカウントが作成しているバケットの バージョニング設定状況の表示 バージョニング状態の変更(無効→有効 / 有効→一時停止) を行う PHP プログラムです。 メインフォーム: enableVersioning_form.php をブラウザで開くと、バージョニングの設定状況と 状態変更ができます。 現在の各バケットのバージョニングの状態 (Disabled/Enabled/Suspended)を 表示しています。 操作(状態を変更させる)対象の バケットをリストから選択します。 変更するバージョニングの状態を 選択します。 対象バケットおよび状態の選択が 完了したら[設定変更]ボタンを押下します。
32.
Technical Tips on CLOUDIAN
HyperStore #2 P.29 Copyright © 2010-2015 Cloudian KK. All rights reserved. 例えば[設定を変更するバケット:]リストボックスから、下図のようにバケット「versioned2」を選 択します。このバケットの現時点のバージョニング設定状況は、“Disabled”(無効)になっていま す。このバケットのバージョニングを有効にするために、[設定する状態:]ラジオボックスから“有効”を 選択し[設定変更]ボタンを押下します。 [設定変更]ボタンを押下して暫く待つと、バケット「versioned2」の[バージョニング設定]列 の値が下図のように“Enabled”に変わり、このバケットのバージョニングが有効になります。 なお、[設定する状態:]で“一時停止”を選択して[設定変更]ボタンを押下すると、以下の ように状態が変化します。
33.
Technical Tips on CLOUDIAN
HyperStore #2 P.30 Copyright © 2010-2015 Cloudian KK. All rights reserved. この仕組みを実装している PHP プログラムの構成は、下図のようになっています。 enableVersioning_form.php vendor/autoload.php require_once <form method="GET" action="enableVersioning_process1.php"> enableVersioning_process1.php ./config.php ../Encode.php ./checkVersioningStatus.php ./listBuckets.php
34.
Technical Tips on CLOUDIAN
HyperStore #2 P.31 Copyright © 2010-2015 Cloudian KK. All rights reserved. このアプリケーションフォームを構成する PHP コードを、以下に掲載します。 ① メインフォームの PHP コード冒頭で require_once されるコード checkVersioningStatus クラス このクラスは、バケットのバージョニング設定状況を返すメソッドを提供します。 定義されている関数 getBucketVersioningStatus 説明 引数で指定された単一バケットのバージョニング設定状況を取得します。 パラメータ $bucket HyperStore に作成済みのバケット名 返り値 指定したバケットのバージョニング設定状況(Disabled、Enabled あるいは Suspended)を返します。 getAllBucketsVersioningStatus 説明 すべてのバケットのバージョニング設定状況を取得します。 パラメータ 無し 返り値 すべてのバケットのバージョニング設定状況(Disabled、Enabled あるいは Suspended)を連想配列で返し ます。 返される連想配列の内容は、次のようになります。 キー 説明 戻り値 “Name” バケット名 バージョニング設定状況 (Disabled、Enabled あるいは Suspended) string getBucketVersioningStatus ( string $bucket ) array getAllBucketsVersioningStatus ( void )
35.
Technical Tips on CLOUDIAN
HyperStore #2 P.32 Copyright © 2010-2015 Cloudian KK. All rights reserved. <?php class checkBucketVersioningStatus { private $client; private $results; private $bucket; public function __construct($client) { $this->client = $client; } public function getBucketVersioningStatus($bucket) { $this->results = $this->client->getBucketVersioning(array( 'Bucket' => $bucket, )); return isset($this->results['Status']) ? $this->results['Status'] : 'Disabled'; } public function getAllBucketsVersioningStatus() { $this->results = $this->client->listBuckets(array()); foreach ($this->results['Buckets'] as $this->bucket) { $attrs = $this->client->getBucketVersioning(array( 'Bucket' => $this->bucket['Name'], )); $status = isset($attrs['Status']) ? $attrs['Status'] : 'Disabled'; $bucketNameAndVersioningStatus[$this->bucket['Name']] = $status; } return $bucketNameAndVersioningStatus; } } サンプルコード checkVersioningStatus.php
36.
Technical Tips on CLOUDIAN
HyperStore #2 P.33 Copyright © 2010-2015 Cloudian KK. All rights reserved. listBuckets クラス このクラスは、バケットに関する情報を返すメソッドを提供します。 定義されている関数 getBucketNames 説明 すべてのバケットの名前を取得します。 パラメータ 無し 返り値 すべての作成済みバケット名を配列で返します。 getBucketsAndCreationDate 説明 すべてのバケットの名前と作成日時を取得します。 パラメータ 無し 返り値 すべてのバケットの名前と作成日時を連想配列で返します。 返される連想配列の内容は、次のようになります。 キー 説明 戻り値 “Name” バケット名 作成日時 ('Y 年 m 月 d 日 H 時 i 分 s 秒') array getBucketNames ( void ) array getBucketsAndCreationDate ( void )
37.
Technical Tips on CLOUDIAN
HyperStore #2 P.34 Copyright © 2010-2015 Cloudian KK. All rights reserved. <?php class ListBuckets { private $client; private $results; private $bucket; public function __construct($client) { $this->client = $client; } // Return all atributes of all buckets as an associative array. public function getAssocBuckets() { return $this->client->listBuckets(array()); } // Return all bucket names. public function getBucketNames() { $this->results = $this->client->listBuckets(array()); foreach ($this->results['Buckets'] as $this->bucket) { $bucketNameList[] = $this->bucket['Name']; } return $bucketNameList; } // Return pairs of all buckets and creation date as an associative array. public function getBucketsAndCreationDate() { $this->results = $this->client->listBuckets(array()); foreach ($this->results['Buckets'] as $this->bucket) { $date = new DateTime($this->bucket['CreationDate']); $date->setTimezone(new DateTimeZone('Asia/Tokyo')); $bucketNameAndCreationDate[$this->bucket['Name']] = $date->format('Y 年 m 月 d 日 H 時 i 分 s 秒 '); } return $bucketNameAndCreationDate; } } サンプルコード listBuckets.php
38.
Technical Tips on CLOUDIAN
HyperStore #2 P.35 Copyright © 2010-2015 Cloudian KK. All rights reserved. ② Web 画面のメインフォームとなる PHP コード 以下に掲載する PHP コードは、この Web アプリケーションのメインフォームを生成するもので す。コード冒頭で require_once して取り込んでいる PHP コードは前掲したものになり、このメイ ンフォーム内の[設定変更]ボタンを押下したときに呼び出されるコードは後述 「③ Web 画面のメインフォームから呼び出される PHP コード」 に掲載しています。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); require_once("../Encode.php"); require_once("./checkVersioningStatus.php"); require_once("./listBuckets.php"); use Aws¥S3¥S3Client; // Instantiate the client. $client = S3Client::factory($config); // $versionedBuckets = new checkBucketVersioningStatus($client); ?> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>サンプル: バージョニング設定されたバケットの確認</title> <style type="text/css"> .auto-style1 { font-family: "Meiryo UI"; font-size: 1.5em; } .auto-style2 { font-family: "Meiryo UI"; font-size: 1.0em; } .tbl-style1 td { font-family: "Meiryo UI"; font-size: 0.9em; } </style> </head> <body> <p class="auto-style1"> <b>バージョニング設定状況</b> </p> <table class="tbl-style1" border="1"> <tr> <th>バケット名</th> <th>バージョニング設定</th> </tr> ★次頁へつづく..... サンプルコード enableVersioning_form.php
39.
Technical Tips on CLOUDIAN
HyperStore #2 P.36 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き <?php foreach ($versionedBuckets->getAllBucketsVersioningStatus() as $versionedBucket => $versioningStatus) { ?> <tr> <td><?php print $versionedBucket; ?></td> <td><?php e($versioningStatus); ?></td> </tr> <?php } ?> </table> <hr> <form method="GET" action="enableVersioning_process1.php"> <div style="text-align: left"> <p class="auto-style2"> 設定を変更するバケット: <select name="bucket"> <?php $buckets = new ListBuckets($client); foreach ($buckets->getBucketNames() as $bucketName) { ?> <option><?php e($bucketName); ?></option> <?php } ?> </select> <br /> 設定する状態: <input type="radio" name="status" value="Enabled">有効 <input type="radio" name="status" value="Suspended">一時停止 <br /><br /> <input type="submit" name="submit" value="設定変更" /> </p> </div> </form> </body> </html>
40.
Technical Tips on CLOUDIAN
HyperStore #2 P.37 Copyright © 2010-2015 Cloudian KK. All rights reserved. ③ Web 画面のメインフォームから呼び出される PHP コード 以下に掲載する PHP コードは、メインフォーム内の[設定変更]ボタンを押下したときに呼び 出され、バケットのバージョニング状態を変更する PHP コードです。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); use Aws¥S3¥S3Client; // use Aws¥S3¥Exception¥NoSuchKeyException; // use Aws¥S3¥Exception¥InvalidArgumentException; $bucket = $_GET['bucket']; $status = $_GET['status']; $client = S3Client::factory($config); try { // Enable object versioning for the bucket. $result = $client->putBucketVersioning(array( 'Bucket' => $bucket, 'Status' => $status, )); header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/enableVersioning_form.php '); } catch (Exception $ex) { ?> <b><font color="red">何らかしらのエラーが発生しました( ゚ Д ゚)。</font></b><br /> <hr> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php } サンプルコード enableVersioning_process1.php
41.
Technical Tips on CLOUDIAN
HyperStore #2 P.38 Copyright © 2010-2015 Cloudian KK. All rights reserved. バージョニングされたバケットに対するオブジェクトの複数回 PUT 以下に掲載するサンプルコードは、オブジェクトを PUT する“バージョニングが有効になっている”バケ ットをリストから選択し、 PUT するキー(ファイル名)を入力 PUT するファイルに書き込む文字列を入力 10 秒間隔で何回、同名のファイルを PUT するかの回数選択(1~10 回) という条件を設定して、ファイルを複数回、PUT する PHP プログラムです。 バージョニングの動作を確認するためのプログラムであるため、ファイルを PUT するバケットは“すで にバージョニングが有効になっているバケット”しかリストから選択できないようにしています。 また、PUT されるファイルには、[ファイル内に書き込む文字列を入力してください:]欄に記入 した文字列 + 「(YYYY 年 MM 月 DD 日 hh 時 mm 分 ss 秒)」形式の日時が書きこまれま す。 メインフォーム: putVersionedObjects_form.php を開き、各種設定値を確定した後で [書込実行]ボタンを押下すると処理が開始されます。 ファイルを PUT するバケットをリストから選択します。 バージョニングが有効なバケットのみ、選択可能です。 PUT するファイル(キー)名を 入力します。 ファイルに書き込む文字列を 入力します。PUT する回数を選択します。 (1~10 回) 各種設定値の入力後、 [書込実行]ボタンを押下します。
42.
Technical Tips on CLOUDIAN
HyperStore #2 P.39 Copyright © 2010-2015 Cloudian KK. All rights reserved. 10 秒間隔で指定した回数の putObject 処理を実行し終わると、下図のような「バージョン履 歴」画面が表示されます。 このアプリケーションで同名の ファイルを何回 PUT しても、 CMC からは右図のように1つ のファイルが確認できるだけです が、実際には上図のように複数 の過去バージョンのオブジェクト が保持されています。 格納バケット名 PUT したキー(ファイル)名 オブジェクトのバージョン ID オブジェクトのサイズ(Bytes) オブジェクトの更新日時 最新バージョンのオブジェクトに は、「○」が表示されます。
43.
Technical Tips on CLOUDIAN
HyperStore #2 P.40 Copyright © 2010-2015 Cloudian KK. All rights reserved. この仕組みを実装している PHP プログラムの構成は、下図のようになっています。 putVersionedObjects_form.php vendor/autoload.php require_once <form method="GET" action="putVersionedObjects_process1.php"> putVersionedObjects_process1.php ./config.php ../Encode.php ./checkVersioningStatus.php
44.
Technical Tips on CLOUDIAN
HyperStore #2 P.41 Copyright © 2010-2015 Cloudian KK. All rights reserved. このアプリケーションフォームを構成する PHP コードを、以下に掲載します。 ① メインフォームの PHP コード冒頭で require_once されるコード PHP コード冒頭で require_once されているものは既に前掲していますので、割愛します。 ② Web 画面のメインフォームとなる PHP コード 以下に掲載する PHP コードは、この Web アプリケーションのメインフォームを生成するもので す。このメインフォーム内の[書込実行]ボタンを押下したときに呼び出されるコードは後述 「③ Web 画面のメインフォームから呼び出される PHP コード」 に掲載しています。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); require_once("../Encode.php"); require_once("./checkVersioningStatus.php"); use Aws¥S3¥S3Client; // Instantiate the client. $client = S3Client::factory($config); // $versionedBuckets = new checkBucketVersioningStatus($client); ?> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>デモ: オブジェクトのバージョニング</title> <style type="text/css"> .auto-style1 { font-family: "Meiryo UI"; font-size: 1.5em; } .auto-style2 { font-family: "Meiryo UI"; font-size: 1.0em; } .tbl-style1 td { font-family: "Meiryo UI"; font-size: 0.9em; } </style> </head> ★次頁へつづく..... サンプルコード putVersionedObjects_form.php
45.
Technical Tips on CLOUDIAN
HyperStore #2 P.42 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き <body> <form method="GET" action="putVersionedObjects_process1.php"> <div style="text-align: left"> <p class="auto-style1"> <b>オブジェクトの複数回 PUT 処理</b> </p> <hr> <p class="auto-style2"> オブジェクトを PUT するバケットを選択してください: <select name="bucket"> <?php foreach ($versionedBuckets->getAllBucketsVersioningStatus() as $versionedBucket => $versioningStatus) { if ($versioningStatus == 'Enabled') { ?> <option><?php e($versionedBucket); ?></option> <?php } } ?> </select> <br /> PUT するキー(ファイル名)を入力してください: <input type="text" name="keyname" size="50" maxlength="100" required="required" aria-required="true"/> <br /> ファイル内に書き込む文字列を入力してください: <input type="text" name="content" size="50" maxlength="100" /> <br /> 10 秒間隔で何回、同名ファイルを作成するかを選択してください: <select name="count"> <option value="1">1 回</option> <option value="2">2 回</option> <option value="3">3 回</option> <option value="4">4 回</option> <option value="5" selected>5 回</option> <option value="6">6 回</option> <option value="7">7 回</option> <option value="8">8 回</option> <option value="9">9 回</option> <option value="10">10 回</option> </select> <br /><br /> <input type="submit" name="submit" value="書込実行" /> <input type="reset" name="reset" value="リセット" /> </p> </div> </form> </body> </html>
46.
Technical Tips on CLOUDIAN
HyperStore #2 P.43 Copyright © 2010-2015 Cloudian KK. All rights reserved. ③ Web 画面のメインフォームから呼び出される PHP コード 以下に掲載する PHP コードは、メインフォーム内の[書込実行]ボタンを押下したときに呼び 出され、指定したファイル名での複数回 putObject 処理を実行する PHP コードです。 <?php // Include the AWS SDK using the Composer autoloader. require_once("vendor/autoload.php"); require_once("./config.php"); require_once("../Encode.php"); use Aws¥S3¥S3Client; $client = S3Client::factory($config); $bucket = $_GET['bucket']; $keyname = $_GET['keyname']; $content = isset($_GET['content']) ? $_GET['content'] : 'ほげほげ hogehoge'; $count = (int)$_GET['count']; ?> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>デモ: オブジェクトのバージョニング</title> <style type="text/css"> .auto-style1 { font-family: "Meiryo UI"; font-size: 1.5em; } .auto-style2 { font-family: "Meiryo UI"; font-size: 1.0em; } .tbl-style1 td { font-family: "Meiryo UI"; font-size: 0.9em; } </style> </head> <body> ★次頁へつづく..... サンプルコード putVersionedObjects_process1.php
47.
Technical Tips on CLOUDIAN
HyperStore #2 P.44 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き // Put same objects many times. for ($i = 1; $i <= $count; $i++) { $now = new DateTime(); $result = $client->putObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'Body' => "{$content} (" . $now->format('Y 年 m 月 d 日 H 時 i 分 s 秒') . ")¥n", )); if ($count != 1) { sleep(10); } } ?> <p class="auto-style1"> <b>バージョン履歴</b> </p> <table class="tbl-style1" border="1"> <tr> <th>バケット名</th> <th>キー</th> <th>バージョン ID</th> <th>サイズ(B)</th> <th>最終更新日</th> <th>最新バージョン?</th> </tr> <?php // List the objects versions and get the keys and version IDs etc. $versions = $client->listObjectVersions(array('Bucket' => $bucket)) ->getPath('Versions'); foreach ($versions as $version) { ?> <tr> <td><?php print $bucket; ?></td> <td><?php e($version['Key']); ?></td> <td><?php e($version['VersionId']); ?></td> <td><div align="right"><?php e($version['Size']); ?></div></td> <?php $date = new DateTime($version['LastModified']); $date->setTimezone(new DateTimeZone('Asia/Tokyo')); ?> <td><?php print $date->format('Y 年 m 月 d 日 H 時 i 分 s 秒'); ?></td> <td><div align="center"><?php print $version['IsLatest'] ? '○' : ''; ?></div></td> </tr> <?php } ?> </table> <br /> <input type="button" onclick="location.href='putVersionedObjects_form.php'" value="戻る"> </body> </html>
48.
Technical Tips on CLOUDIAN
HyperStore #2 P.45 Copyright © 2010-2015 Cloudian KK. All rights reserved. バージョニングされたオブジェクトのダウンロード(GET)処理 以下に掲載するサンプルコードは、前掲のサンプルコードでバージョニングが有効なバケットに格納さ れたオブジェクト(ファイル)を、バージョン ID を指定してダウンロードする PHP プログラムです。 メインフォーム: getObject_form1.php をブラウザで開き、 ダウンロードするオブジェクトが格納されているバケットをリストから選択 ダウンロードするキー(ファイル)名の入力 を行い、[バージョン選択へ]ボタンを押下すると、バージョン選択画面に遷移します。 下図のようなバージョン選択画面が開き、全画面でバージョニングが有効になっているバケットを選 択した場合は、[GET したいキー(ファイル)のバージョンを選択してください:]のリストボックスから 対象のバージョンを選択できます(バージョニングが有効になっていない場合は、最新バージョンのみ選択できます)。 [ダウンロード]ボタンを押下すると、リストから選択したバージョンのファイルのダウンロードが開始 されます。 オブジェクトが格納されている バケットをリストから選択 GET するファイル名を入力 バージョン選択画面に遷移 GET するオブジェクトの バージョンをリストから選択 [ダウンロード]ボタンを押下すると、対象のオブジェクトを GET
49.
Technical Tips on CLOUDIAN
HyperStore #2 P.46 Copyright © 2010-2015 Cloudian KK. All rights reserved. 下図は、最新バージョンをダウンロードしたファイルの内容です。 同様の手順で、同名ファイル(キー)の異なるバージョンをダウンロードすると........... というように、ファイルの内容が異なる過去のバージョンを取り出すことができます。 ダウンロードしてメモ帳で開く
50.
Technical Tips on CLOUDIAN
HyperStore #2 P.47 Copyright © 2010-2015 Cloudian KK. All rights reserved. この仕組みを実装している PHP プログラムの構成は、下図のようになっています。 getObject_form1.php vendor/autoload.php require_once <form method="GET" action="getObject_form2.php"> getObject_process1.php getObject_form2.php ./config.php ../Encode.php ./checkVersioningStatus.php <form method="GET" action="getObject_process1.php">
51.
Technical Tips on CLOUDIAN
HyperStore #2 P.48 Copyright © 2010-2015 Cloudian KK. All rights reserved. ① メインフォームの PHP コード冒頭で require_once されるコード PHP コード冒頭で require_once されているものは既に前掲していますので、割愛します。 ② Web 画面のメインフォームとなる PHP コード 以下に掲載する PHP コードは、この Web アプリケーションのメインフォーム (getObject_form1.php)を生成するものです。このメインフォーム内の[バージョン選択へ]ボタ ンを押下すると、バージョン選択のフォーム(getObject_form2.php)に画面遷移します。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); require_once("../Encode.php"); require_once("./listBuckets.php"); use Aws¥S3¥S3Client; ?> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>デモ: オブジェクトの GET 処理</title> <style type="text/css"> .auto-style1 { font-family: "Meiryo UI"; font-size: 2.0em; } .auto-style2 { font-family: "Meiryo UI"; font-size: 1.0em; } </style> </head> ★次頁へつづく..... サンプルコード getObject_form1.php
52.
Technical Tips on CLOUDIAN
HyperStore #2 P.49 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き <body> <p class="auto-style1" align="center"> <b>オブジェクトの GET 処理</b> </p> <form method="GET" action="getObject_form2.php"> <div style="text-align: center"> <p class="auto-style2"> バケットを選択してください: <select name="bucket"> <?php $client = S3Client::factory($config); $buckets = new ListBuckets($client); foreach ($buckets->getBucketNames() as $bucketName) { ?> <option><?php e($bucketName); ?></option> <?php } ?> </select> <br /> GET するキー(ファイル名)を入力してください: <input type="text" name="keyname" size="30" maxlength="60" required="required" aria-required="true"/> <br /><br /> <input type="submit" name="submit" value="バージョン選択へ" /> <input type="reset" name="reset" value="リセット" /> </p> <div style="color: red"><?php print $err[$status]; ?></div> </div> </form> </body> </html>
53.
Technical Tips on CLOUDIAN
HyperStore #2 P.50 Copyright © 2010-2015 Cloudian KK. All rights reserved. <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>デモ: オブジェクトの GET 処理</title> <style type="text/css"> .auto-style1 { font-family: "Meiryo UI"; font-size: 2.0em; } .auto-style2 { font-family: "Meiryo UI"; font-size: 1.0em; text-align: center; } .tbl-style1 td { font-family: "Meiryo UI"; font-size: 0.9em; } </style> </head> <body> <p class="auto-style1" align="center"> <b>オブジェクトの GET 処理</b> </p> <?php require_once("vendor/autoload.php"); require_once("./config.php"); require_once("../Encode.php"); require_once("./checkVersioningStatus.php"); use Aws¥S3¥S3Client; use Aws¥S3¥Exception¥NoSuchKeyException; use Aws¥S3¥Exception¥InvalidArgumentException; $bucket = $_GET['bucket']; // $keyname = isset($_GET['keyname'])? $_GET['keyname'] : 'versioned.txt'; $keyname = $_GET['keyname']; $client = S3Client::factory($config); // Get the versioning status of the specified bucket $versionedBuckets = new checkBucketVersioningStatus($client); $versioningStatus = $versionedBuckets->getBucketVersioningStatus($bucket); ★次頁へつづく..... サンプルコード getObject_form2.php
54.
Technical Tips on CLOUDIAN
HyperStore #2 P.51 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き try { if (! $client->doesObjectExist($bucket, $keyname)) { throw new NoSuchKeyException("キーが存在しません。"); } $exist = $client->doesObjectExist($bucket, $keyname); if ($versioningStatus == 'Enabled') { $msgStatus = "有効"; } elseif ($versioningStatus == 'Disabled') { $msgStatus = "無効"; } elseif ($versioningStatus == 'Suspended') { $msgStatus = "一時停止"; } if ($versioningStatus == 'Enabled' || $versioningStatus == 'Suspended') { $versions = $client->listObjectVersions(array( 'Bucket' => $bucket, ))->getPath('Versions'); } ?> <div style="text-align: center"> <p class="auto-style2"> 選択したバケット「<?php e($bucket); ?>」は、バージョニングが <b><?php print $msgStatus; ?></b>です。<br /><br /> </p> <form method="GET" action="getObject_process1.php"> <?php if ($versioningStatus == 'Enabled' || $versioningStatus == 'Suspended') { $versions = $client->listObjectVersions(array( 'Bucket' => $bucket, ))->getPath('Versions'); ?> <p class="auto-style2"> GET したいキー(ファイル)のバージョンを選択してください: </p> <select name="versionid"> <?php foreach ($versions as $version) { if ($version['Key'] == $keyname) { $date = new DateTime($version['LastModified']); $date->setTimezone(new DateTimeZone('Asia/Tokyo')); $lastModified = $date->format('Y 年 m 月 d 日 H 時 i 分 s 秒'); ?> <option value="<?php e($version['VersionId']); ?>"> <?php print $version['IsLatest'] ? "{$lastModified} ←最新バージョン " : $lastModified; ?> </option> ★次頁へつづく.....
55.
Technical Tips on CLOUDIAN
HyperStore #2 P.52 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き <?php } } } ?> </select> <input type="hidden" name="bucket" value="<?php print $bucket; ?>" /> <input type="hidden" name="keyname" value="<?php print $keyname; ?>" /> <br /><br /> <input type="submit" name="submit" value="ダウンロード" /> <input type="button" onclick="location.href='getObject_form1.php'" value="戻る"> </form> </div> <?php } catch (NoSuchKeyException $ex) { ?> <b><font color="red">指定されたキーは存在しません(´・ω・`)。</font></b><br /> <hr> <!-- エラーコード: <b><?php print $ex->getCode(); ?></b><br /> --> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php } catch (InvalidArgumentException $ex) { ?> <b><font color="red">無効なバージョン ID が指定されました(*´Д`)。</font></b><br /> <hr> <!-- エラーコード: <b><?php print $ex->getCode(); ?></b><br /> --> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php } catch (Exception $ex) { ?> <b><font color="red">何らかしらのエラーが発生しました( ゚Д゚)。</font></b><br /> <hr> <!-- エラーコード: <b><?php print $ex->getCode(); ?></b><br /> --> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php } ?> </body> </html>
56.
Technical Tips on CLOUDIAN
HyperStore #2 P.53 Copyright © 2010-2015 Cloudian KK. All rights reserved. ③ Web 画面のメインフォームから呼び出される PHP コード 以下に掲載する PHP コードは、バージョン選択フォーム内の[ダウンロード]ボタンを押下したと きに呼び出され、指定したファイルを getObject 処理する PHP コードです。 <?php require_once("vendor/autoload.php"); require_once("./config.php"); use Aws¥S3¥S3Client; use Aws¥S3¥Exception¥NoSuchKeyException; use Aws¥S3¥Exception¥InvalidArgumentException; $client = S3Client::factory($config); $temp_file = tempnam("data", "tmp-"); $bucket = $_GET['bucket']; // $keyname = isset($_GET['keyname'])? $_GET['keyname'] : 'versioned.txt'; $keyname = $_GET['keyname']; $tmp = explode('/', $keyname); $filename = end($tmp); $version = isset($_GET['versionid']) ? $_GET['versionid'] : NULL; $get_args = array( 'Bucket' => $bucket, 'Key' => $keyname, 'SaveAs' => $temp_file, ); if (!is_null($version)) { $get_args['VersionId'] = $version; } ★次頁へつづく..... サンプルコード getObject_process1.php
57.
Technical Tips on CLOUDIAN
HyperStore #2 P.54 Copyright © 2010-2015 Cloudian KK. All rights reserved. ★前頁からの続き try { // (1) データ取得 $result = $client->getObject($get_args); // (2) データのメタ情報 $size = $result['ContentLength']; // => "20" $type = $result['ContentType']; // => "text/plain" $mtime = $result['LastModified']; // => "Sat, 01 Mar 2014 07:45:45 GMT" header('Content-Type:'.$type); header('Content-Length:'.$size); header('Content-Disposition: attachment; filename="' . $filename . '"'); $body = $result['Body']; //$body->rewind(); $body instanceof Guzzle¥Http¥EntityBody; print $body; $body->close(); unlink($temp_file); } catch (NoSuchKeyException $ex) { ?> <b><font color="red">指定されたキーは存在しません(´・ω・`)。</font></b><br /> <hr> <!-- エラーコード: <b><?php print $ex->getCode(); ?></b><br /> --> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php } catch (InvalidArgumentException $ex) { ?> <b><font color="red">無効なバージョン ID が指定されました(*´Д`)。</font></b><br /> <hr> <!-- エラーコード: <b><?php print $ex->getCode(); ?></b><br /> --> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php } catch (Exception $ex) { ?> <b><font color="red">何らかしらのエラーが発生しました( ゚Д゚)。</font></b><br /> <hr> <!-- エラーコード: <b><?php print $ex->getCode(); ?></b><br /> --> エラーメッセージ: <b><?php print $ex->getMessage(); ?></b> <?php }
58.
Technical Tips on CLOUDIAN
HyperStore #2 P.55 Copyright © 2010-2015 Cloudian KK. All rights reserved. 5. おわりに 本書では、HyperStore 独自機能である自動階層化機能の概要とその設定方法を説明し、(現行 バージョンにおいては)CMC 経由では設定できないバージョニング機能について、その動作を見て頂ける PHP サンプルコードを提示し説明しました。 自動階層化機能を使用することにより、オンプレにある HyperStore とパブリッククラウド上のクラウドス トレージをうまく組み合わせて有効活用するハイブリッドクラウド構成を実現できます。 また、バージョニング機能も有効に活用できれば、ある一定期間、格納されたユーザーデータを保護す るための仕組み/手段として活用して頂ける機能です。 これまで見てきたように、現時点ではまだ CMC から設定できない機能もありますが、HyperStore の 大きな特長のひとつでもある S3 API を活用し、データ操作だけではなくストレージシステムの管理や保守 にもチャレンジしてみてください。Java や Python、PHP 等のプログラムから S3 API を呼び出して様々な 操作や管理が行えるようになれば、例えば業務システムのプログラムに組み込んで直接、業務システムか ら HyperStore にアクセスしデータをアップロード/ダウンロードさせることもでき、より効果的に HyperStore をご使用頂けるものと思います。 なお、本書掲載のサンプルコードは元々、『なかなか目には見えづらいバージョニング機能を、お客様に 視覚的にご理解頂ける術はないものか?』と、著者が試行錯誤して作成したデモ用の PHP コードです。 このように公開するにはお粗末でお恥ずかしい稚拙なコードで、デモや解説に必要な最低限の機能し か実装しておらず、またエラーハンドルもかなり省いていますので、現場でご使用の場合は本書サンプルコ ードを参考にして頂き、より良いコードを作成してください。 以上 著者 松井 良祐 役職 テクニカル プリセールス マネージャー メールアドレス rmatsui@cloudian.com
59.
Technical Tips on CLOUDIAN
HyperStore #2 《 本書掲載のサンプルコードについて 》 本書にはサンプルコードを別添しませんが、もしサンプルコードが欲しいとご希望を頂けましたら別途、お 送り致します。その際はご面倒をお掛け致しますが、弊社営業部までご連絡ください。
60.
Technical Tips on CLOUDIAN
HyperStore #2 ホームページ:http://cloudian.jp/ Facebook:https://www.facebook.com/cloudian.cloudstorage.S3 Twitter:https://twitter.com/Cloudian_KK ブログ:http://www.cloudian-blog.com/ 評価版お申込み:http://www.cloudian.jp/cloud-storage-products/cloudian_eval_agr.php クラウディアン株式会社 THANK YOU ! www.cloudian.jp Cloud Storage for Everyone
Download now