すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:OSS ボリュームをエラスティックコンテナインスタンスにマウントする

最終更新日:Mar 05, 2025

オブジェクトストレージサービス (OSS) は、画像、音声、動画データなどの大量の非構造化データを保存できる、安全で費用対効果が高く、信頼性の高い Alibaba Cloud ストレージサービスです。このトピックでは、OSS バケットをボリュームとしてエラスティックコンテナインスタンスにマウントする方法について説明します。

注意事項

  • OSS は使用量に基づいて課金され、従量課金制、リソースプラン、ストレージキャパシティユニット (SCU) 課金方式をサポートしています。OSS の課金の詳細については、課金概要 を参照してください。

  • OSS は共有ストレージサービスです。OSS バケットは複数のインスタンスにマウントできます。

  • マウントディレクトリには 1,000 ファイル以下を保存することをお勧めします。

    マウントディレクトリに過剰なファイルを保存すると、OSS クライアントが大量のメモリを消費し、インスタンスでメモリ不足 (OOM) イベントが発生する可能性があります。

準備

  1. OSS バケットを作成します。

    1. OSS コンソール にログインします。

    2. OSS バケットを作成します。

      詳細については、バケットの作成 を参照してください。

  2. 次のいずれかの方法を使用して、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 プラグインを使用してボリュームをマウントする際のドライバタイプ。alicloud/oss の値は、Alibaba Cloud OSS バケットがマウントされていることを示します。

Volume.N.FlexVolume.Options

文字列

{"bucket":"test-***","url":"oss-cn-hangzhou.aliyuncs.com","ramRole":"ram-***"}

Volume.N.Type パラメータを FlexVolume に設定した場合のオプション。各オプションは JSON 文字列のキーと値のペアです。

FlexVolume プラグインを使用して OSS バケットをマウントする場合、Options は OSS ボリュームの構成パラメータを表します。以下のパラメータを構成できます。

  • bucket: OSS バケットの名前。

  • url: OSS バケットのエンドポイント。OSS コンソールにログインし、バケットの 概要 ページでエンドポイントを取得できます。詳細については、リージョンとエンドポイント を参照してください。

  • path: OSS バケットのルートディレクトリからの相対パス。デフォルト値: /

  • OSS バケットのマウントに指定されたカスタムオプション。形式: -o *** -o ***。例: -o max_stat_cache_size=0 -o allow_other

  • akId: AccessKey ペアを使用して OSS へのアクセス権限を付与する場合に使用される AccessKey ID。

  • akSecret: AccessKey ペアを使用して OSS へのアクセス権限を付与する場合に使用される AccessKey シークレット。

  • ramRole: 権限付与に使用される RAM ロール。RAM ロールを使用して権限を付与する場合は、このパラメータを指定します。

ボリュームのマウント

ボリュームを指定した後、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: ボリュームマウントは、このボリュームまたはそのサブディレクトリにマウントされる後続のマウントを受信しません。

  • HostToContainer: ボリュームマウントは、このボリュームまたはそのサブディレクトリにマウントされる後続のすべてマウントを受信します。

  • Bidirectional: この値は HostToContainer と同様の効果があります。ボリュームマウントは、このボリュームまたはそのサブディレクトリにマウントされる後続のすべてマウントを受信します。さらに、コンテナ N によって作成されたすべてのボリュームマウントは、ホストと、同じボリュームを使用するすべてのエラスティックコンテナインスタンスのすべてのコンテナに伝播されます。

デフォルト値: None。

説明

ボリュームは init コンテナにもマウントできます。必要なパラメータは、上記の表のパラメータと似ています。Container を InitContainer に変更するだけです。

構成の説明 (コンソールモード)

エラスティックコンテナインスタンス購入ページ でエラスティックコンテナインスタンスを作成する際に、コンテナグループ構成 セクションでボリュームを指定し、コンテナ構成 セクションでボリュームをコンテナにマウントできます。

マウントするボリュームの指定

  1. コンテナグループの作成ウィザードの [基本設定] ステップの コンテナグループ構成 セクションで、詳細設定 をクリックします。

  2. ストレージ セクションで、OSS 永続性 タブをクリックし、追加 をクリックします。

  3. OSS ボリュームのパラメータを構成します。

    • 名前: OSS ボリュームの名前。

    • バケット: OSS バケットの名前。

    • RAM ロール: OSS へのアクセス権限を持つ RAM ロール。

    oss

ボリュームのマウント

  1. コンテナグループの作成ウィザードの [基本設定] ステップの コンテナ構成 セクションで、コンテナを選択し、コンテナの [詳細設定] をクリックします。

  2. ストレージ をオンにし、追加 をクリックします。

    [コンテナグループ構成] セクションで指定したボリュームのみを追加できます。

    oss2

説明

複数のコンテナにボリュームをマウントする場合は、さらにコンテナを選択し、上記の手順を繰り返します。

構成例

  1. エラスティックコンテナインスタンス 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
  2. インスタンス A に接続し、マウントディレクトリにファイルを追加します。

    詳細については、エラスティックコンテナインスタンスへの接続 を参照してください。

    oss3

  3. インスタンス A を削除します。

  4. エラスティックコンテナインスタンス 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
  5. インスタンス B に接続し、マウントディレクトリ内のファイルがインスタンス A の OSS ボリュームのマウントディレクトリ内のファイルと同じであることを確認します。

    インスタンス A とインスタンス B は同じ OSS ボリュームを共有し、OSS ボリュームは永続ストレージです。インスタンス A が削除された後も、インスタンス B を使用して、インスタンス A に追加した OSS バケット内のファイルを取得できます。

    oss4