オブジェクトストレージサービス (OSS) は、画像、音声、動画データなどの大量の非構造化データを保存できる、安全で費用対効果が高く、信頼性の高い Alibaba Cloud ストレージサービスです。このトピックでは、OSS バケットをボリュームとしてエラスティックコンテナインスタンスにマウントする方法について説明します。
注意事項
OSS は使用量に基づいて課金され、従量課金制、リソースプラン、ストレージキャパシティユニット (SCU) 課金方式をサポートしています。OSS の課金の詳細については、課金概要 を参照してください。
OSS は共有ストレージサービスです。OSS バケットは複数のインスタンスにマウントできます。
マウントディレクトリには 1,000 ファイル以下を保存することをお勧めします。
マウントディレクトリに過剰なファイルを保存すると、OSS クライアントが大量のメモリを消費し、インスタンスでメモリ不足 (OOM) イベントが発生する可能性があります。
準備
OSS バケットを作成します。
次のいずれかの方法を使用して、OSS にアクセスするための権限を付与します。
RAM ロールを使用して権限を付与します。
RAM ロールを作成し、その RAM ロールに OSS バケットへのアクセス権限を付与します。詳細については、信頼できる Alibaba Cloud サービスの RAM ロールの作成 および RAM ロールへの権限の付与 を参照してください。
RAMロールを作成する際は、信頼できるエンティティの選択パラメーターでAlibaba Cloudサービス、ロールの種類パラメーターで標準サービスロール、信頼できるサービスの選択パラメーターでElastic Compute Serviceを選択します。RAMロールに権限を付与する際は、AliyunOSSFullAccessポリシーをRAMロールにアタッチします。
(推奨しません) AccessKey ペアを使用して権限を付与します。
AccessKey ID と AccessKey シークレットを取得します。詳細については、AccessKey ペアの取得 を参照してください。
構成の説明 (API モード)
CreateContainerGroup API オペレーションを呼び出してエラスティックコンテナインスタンスを作成する際に、ボリューム関連のパラメータを使用してボリュームを指定し、Container.VolumeMount 関連のパラメータを使用してボリュームをコンテナにマウントできます。以下の部分では、関連パラメータについて説明します。詳細については、CreateContainerGroupを参照してください。
マウントするボリュームの指定
ボリューム関連のパラメータを使用してボリュームを指定する場合は、まずボリュームのタイプと名前を指定する必要があります。次に、Volume.N.Type パラメータの値に基づいて、他のボリューム関連のパラメータを構成する必要があります。
パラメータ | タイプ | 例 | 説明 |
Volume.N.Name | 文字列 | oss-demo | ボリューム N の名前。 |
Volume.N.Type | 文字列 | FlexVolume | 値を FlexVolume に設定します。この値は、FlexVolume プラグインを使用してマウントされるボリュームを指定します。 |
Volume.N.FlexVolume.Driver | 文字列 | alicloud/oss | FlexVolume プラグインを使用してボリュームをマウントする際のドライバタイプ。 |
Volume.N.FlexVolume.Options | 文字列 | {"bucket":"test-***","url":"oss-cn-hangzhou.aliyuncs.com","ramRole":"ram-***"} | Volume.N.Type パラメータを FlexVolume に設定した場合のオプション。各オプションは JSON 文字列のキーと値のペアです。 FlexVolume プラグインを使用して OSS バケットをマウントする場合、Options は OSS ボリュームの構成パラメータを表します。以下のパラメータを構成できます。
|
ボリュームのマウント
ボリュームを指定した後、VolumeMount 関連のパラメータを使用してボリュームをコンテナにマウントできます。
パラメータ | タイプ | 例 | 説明 |
Container.N.VolumeMount.N.Name | 文字列 | test-volume | コンテナ N にマウントするボリューム N の名前。この値は Volume.N.Name の値です。 |
Container.N.VolumeMount.N.MountPath | 文字列 | /usr/share | ボリューム N がマウントされるディレクトリ。 このディレクトリ下のデータは、ボリューム上のデータによって上書きされます。この値が正しいことを確認してください。 |
Container.N.VolumeMount.N.SubPath | 文字列 | /usr/sub | ボリュームのサブディレクトリ。このパラメータは、インスタンスがコンテナの異なるサブディレクトリにマウントできる同じボリュームの異なるサブディレクトリを指定します。 |
Container.N.VolumeMount.N.ReadOnly | ブール値 | false | マウントディレクトリを読み取り専用にするかどうかを指定します。デフォルト値: false。 |
Container.N.VolumeMount.N.MountPropagation | 文字列 | None | ボリューム N のマウント伝播設定。マウント伝播を使用すると、1 つのコンテナにマウントされているボリュームを、同じエラスティックコンテナインスタンス内の他のコンテナ、または同じホスト上の他のエラスティックコンテナインスタンスに共有できます。有効な値:
デフォルト値: None。 |
ボリュームは init コンテナにもマウントできます。必要なパラメータは、上記の表のパラメータと似ています。Container を InitContainer に変更するだけです。
構成の説明 (コンソールモード)
エラスティックコンテナインスタンス購入ページ でエラスティックコンテナインスタンスを作成する際に、コンテナグループ構成 セクションでボリュームを指定し、コンテナ構成 セクションでボリュームをコンテナにマウントできます。
マウントするボリュームの指定
コンテナグループの作成ウィザードの [基本設定] ステップの コンテナグループ構成 セクションで、詳細設定 をクリックします。
ストレージ セクションで、OSS 永続性 タブをクリックし、追加 をクリックします。
OSS ボリュームのパラメータを構成します。
名前: OSS ボリュームの名前。
バケット: OSS バケットの名前。
RAM ロール: OSS へのアクセス権限を持つ RAM ロール。

ボリュームのマウント
コンテナグループの作成ウィザードの [基本設定] ステップの コンテナ構成 セクションで、コンテナを選択し、コンテナの [詳細設定] をクリックします。
ストレージ をオンにし、追加 をクリックします。
[コンテナグループ構成] セクションで指定したボリュームのみを追加できます。

複数のコンテナにボリュームをマウントする場合は、さらにコンテナを選択し、上記の手順を繰り返します。
構成例
エラスティックコンテナインスタンス A (インスタンス A) を作成し、OSS ボリュームをインスタンス A にマウントします。
次の例は、CreateContainerGroup API オペレーションを呼び出してインスタンス A を作成するために使用されるパラメータを示しています。詳細については、CreateContainerGroup を参照してください。
ContainerGroupName=test-oss-a // マウントするボリュームを指定します。 Volume.1.Name=oss-demo Volume.1.Type=FlexVolume Volume.1.FlexVolume.Driver=alicloud/oss Volume.1.FlexVolume.Options={"bucket":"test-***","url":"oss-cn-hangzhou-internal.aliyuncs.com","ramRole":"ram-***"} // ボリュームをコンテナにマウントします。 Container.1.Name=nginx Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=oss-demo Container.1.VolumeMount.1.MountPath=/data-aインスタンス A に接続し、マウントディレクトリにファイルを追加します。
詳細については、エラスティックコンテナインスタンスへの接続 を参照してください。

インスタンス A を削除します。
エラスティックコンテナインスタンス B (インスタンス B) を作成し、同じ OSS ボリュームをインスタンス B にマウントします。
ContainerGroupName=test-oss-b // マウントするボリュームを指定します。 Volume.1.Name=oss-demo Volume.1.Type=FlexVolume Volume.1.FlexVolume.Driver=alicloud/oss Volume.1.FlexVolume.Options={"bucket":"test-***","url":"oss-cn-hangzhou-internal.aliyuncs.com","ramRole":"ram-***"} // ボリュームをコンテナにマウントします。 Container.1.Name=nginx Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=oss-demo Container.1.VolumeMount.1.MountPath=/data-bインスタンス B に接続し、マウントディレクトリ内のファイルがインスタンス A の OSS ボリュームのマウントディレクトリ内のファイルと同じであることを確認します。
インスタンス A とインスタンス B は同じ OSS ボリュームを共有し、OSS ボリュームは永続ストレージです。インスタンス A が削除された後も、インスタンス B を使用して、インスタンス A に追加した OSS バケット内のファイルを取得できます。
