サービスインスタンスをアプリケーション、ジョブ、または機能ワークロードにバインドする
サービス・バインディングを使用して、 IBM Cloud サービス・インスタンスを IBM Cloud® Code Engine プロジェクト内のリソースに統合できます。
Code Engine のワークロードにバインドするサービスインスタンスを決定し、 サービスバインディングへのアクセス を設定したことを確認したら、 Code Engine のアプリケーション、ジョブ、またはファンクションのワークロードにサービスインスタンスをバインドする準備が整いました。
開始前に
- プロジェクトを作成します。
- サービス・インスタンスにバインドする Code Engine ワークロードを作成します。 サービス・インスタンスにバインドするワークロードが存在している必要があります。
- Code Engine ワークロードにバインドするサービスインスタンスを作成する。
- サービス・バインディングのアクセスを構成します。
サービスバインディングへのアクセスは、サービスインスタンスを Code Engine アプリケーション、ジョブ、または関数ワークロードにバインドする前に構成する必要があります。 Code Engine で自動的にサービス ID を作成して管理するか、管理するサービス ID を使用するかに基づいて、 サービス・バインディングのアクセスを構成します。
- サービス・バインディングを使用する場合、サービス ID、サービス・アクセス・シークレット、およびサービス資格情報の間の関係はどのようなものですか?
-
Code Engine では、 サービスバインドとは、アプリケーション、ジョブ、または機能ワークロードと、別の IBM Cloud サービスとの関係を指します。 Code Engine は、特定の IBM Cloud サービスインスタンスの認証情報を作成するためにサービスID を使用します。 これらの資格情報は サービス資格情報 であり、サービス・インスタンスと対話するために Code Engine プロジェクトによって使用されます。 サービス資格情報は、 サービス・アクセス・シークレットに保管されます。 サービスアクセスシークレットは、サービス認証情報を持つアプリケーション、ジョブ、または関数によってアクセスでき、サービスインスタンスとのやり取りに使用されます。
-
IBM Cloud サービス・インスタンスを作成するときに、そのサービス・インスタンスのサービス資格情報を作成することを選択できます。 または、サービス・バインディングを作成するときに、 サービス・バインディングのアクセス権限 を構成した場合は、 Code Engine でサービス・インスタンス資格情報を自動的に作成することを選択できます。
-
Code Engine で自動的にサービス資格情報を作成するか、特定のサービス・インスタンスのサービス資格情報を手動で作成するかのどちらを選択する場合でも、サービス資格情報に対して Identity and Access Management (IAM) 役割を指定する必要があります。 指定したロールは、特定のサービスインスタンスとバインドされた Code Engine アプリケーション、ジョブ、または機能との間の許可されたやりとりを定義します。 例えば、 Code Engine から IBM Cloudant サービスインスタンスへのサービスバインドを作成し、アプリケーション、ジョブ、または関数が IBM Cloudant データベースから読み取りのみを行うようにしたい場合は、
Reader
ロールを選択します。
コンソールから Code Engine アプリケーションまたはジョブにサービスインスタンスをバインドする
コンソールを使用して、既存のサービスインスタンスを Code Engine アプリケーションまたはジョブにバインドするサービスバインドを作成することができます。 関数のサービス・バインディングを作成するには、 CLI を使用する 必要があります。
サービス・インスタンスと新規サービス・アクセス・シークレットのバインド ( Code Engine 自動生成資格情報を使用)
Code Engine によって自動的に生成されたサービス認証情報を使用する新しいサービスアクセスシークレットで、サービスインスタンスをアプリケーションまたはジョブにバインドするサービスバインドを作成しましょう。 この例では、 myapp
アプリケーション用のサービスバインドをコンソールから作成し、 Code Engine を選択して、 IBM Cloud サービスインスタンスへのサービス認証情報を自動的に作成します。 Code Engine でサービス資格情報を自動的に作成する前に、
Code Engine のアクセス権限を構成して、サービス・バインディングのサービス ID を自動的に作成および管理する 必要があります。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「概要」ページで、「 サービス・バインディング」をクリックします。
- 「サービス・バインディング」ページで、「 作成 」をクリックしてバインディングを作成します。
- Code Engine アプリケーションまたはジョブにバインドする IBM サービスインスタンスを選択します。
- サービスインスタンスにバインドしたい Code Engine アプリケーションまたはジョブを選択します。例えば、
myapp
アプリケーションを選択します。 - このバインディングで使用するサービス・アクセス・シークレットを指定します。 サービス・アクセス・シークレットは、サービス・バインディングのためのクレデンシャルを格納する。 選択したアプリケーションまたはジョブに関連付けられていない、特定のサービスインスタンスに対して以前に定義されたサービス資格情報がリストに表示されていることに注意してください。 サービス・アクセス・シークレットが現在存在しない場合は、新しいシークレットを作成します。 サービス・アクセス・シークレットが存在する場合、このバインディングの新規サービス資格情報を使用して新規サービス・アクセス・シークレットを作成するには、
「新規シークレット」 を選択します。 以下のステップを実行します。
- サービス・インスタンス資格情報の 「役割」 を選択します。
- 拡張オプションを展開します。
- Code Engine で、 IBM Cloud サービス・インスタンスに対するサービス資格情報を自動的に作成するには、
Auto-generate
を選択します。 - (オプ シ ョ ナル) サービ ス バ イ ンデ ィ ン グのカ ス タ ム接頭辞を指定 し ます。 カスタム接頭部を指定しない場合、 Code Engine は自動的に接頭部を生成します。 この接頭部は、このサービス・バインディング用に作成される環境変数を区別するために使用されます。
- Addをクリックしてサービスバインディングを作成します。
- アプリケーションまたはジョブにバインドされたサービスがコンソールから作成されたので、サービスインスタンスと Code Engine アプリケーションおよびジョブの間の定義済みのサービスバインディングの一覧を、[サービスバインディング] ページから確認できます。
あるいは、コンソール内の特定の Code Engine アプリケーションまたはジョブのページから、特定のアプリケーションやジョブへのサービスバインディングを作成および管理することもできます。 アプリケーションまたはジョブのコンテキスト内でサービスバインディングを操作するには、特定のアプリケーションまたはジョブの [サービスバインディング]タブに移動します。
サービス・インスタンスを新しいサービス・アクセス・シークレット (既存の資格情報を使用) にバインドする
既存のサービス認証情報を使用する新しいサービスアクセスシークレットで、サービスインスタンスをアプリケーションまたはジョブにバインドするサービスバインドを作成したいとします。 既存のサービス資格情報が Code Engineによって自動的に生成されたか、サービス資格情報が手動で生成された可能性があります。 この例では、既存のサービス資格情報を使用する新しいサービス・アクセス・シークレットを使用して、 myjob
ジョブのサービス・バインディングを作成します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「概要」ページで、「 サービス・バインディング」をクリックします。
- 「サービス・バインディング」ページで、「 作成 」をクリックしてバインディングを作成します。
- Code Engine アプリケーションまたはジョブにバインドする IBM サービスインスタンスを選択します。
- サービスインスタンスにバインドしたい Code Engine アプリケーションまたはジョブを選択します。例えば、
myjob
ジョブを選択します。 - このバインディングで使用するサービス・アクセス・シークレットを指定します。 サービス・アクセス・シークレットは、サービス・バインディングのためのクレデンシャルを格納する。 選択したアプリケーションまたはジョブに関連付けられていない、特定のサービスインスタンスに対して以前に定義されたサービス資格情報がリストに表示されていることに注意してください。 サービス・アクセス・シークレットが現在存在しない場合は、新しいシークレットを作成します。 サービス・アクセス・シークレットが存在する場合、このバインディングの新規サービス資格情報を使用して新規サービス・アクセス・シークレットを作成するには、
「新規シークレット」 を選択します。 以下のステップを実行します。
- サービス・インスタンス資格情報の 「役割」 を選択します。
- 拡張オプションを展開します。
- このサービス・アクセス・シークレットで使用するサービス資格情報を選択します。
- (オプ シ ョ ナル) サービ ス バ イ ンデ ィ ン グのカ ス タ ム接頭辞を指定 し ます。 カスタム接頭部を指定しない場合、 Code Engine は自動的に接頭部を生成します。 この接頭部は、このサービス・バインディング用に作成される環境変数を区別するために使用されます。
- Addをクリックしてサービスバインディングを作成します。
- アプリケーションまたはジョブにバインドされたサービスがコンソールから作成されたので、サービスインスタンスと Code Engine アプリケーションおよびジョブの間の定義済みのサービスバインディングの一覧を、[サービスバインディング] ページから確認できます。
あるいは、コンソール内の特定の Code Engine アプリケーションまたはジョブのページから、特定のアプリケーションやジョブへのサービスバインディングを作成および管理することもできます。 アプリケーションまたはジョブのコンテキスト内でサービスバインディングを操作するには、特定のアプリケーションまたはジョブの [サービスバインディング]タブに移動します。
既存のサービス・アクセス・シークレットへのサービス・インスタンスのバインド
サービス・バインディング内のサービス・アクセス・シークレットを再利用できます。 特定の IBM Cloud サービス・インスタンスについて、さまざまなアプリやジョブでサービス・アクセス・シークレットを再利用できます。 サービスアクセスシークレットを、そのシークレットが最初に作成されたのと同じアプリケーションまたはジョブで再利用することはできません。 サービス資格情報はサービス・アクセス・シークレット内に保管されるため、以下の点を考慮することが重要です。
-
同じサービスアクセスシークレットを持つ同じ IBM Cloud サービスインスタンスにバインドされたアプリケーションまたはジョブを複数持つことができます。
-
サービスアクセスシークレットは、同じアプリケーションまたはジョブのサービスバインドで再利用することはできません。 ただし、同じサービスアクセスシークレットを別のアプリケーションやジョブで再利用することは可能です。 サービスアクセスシークレットは特定の IBM Cloud サービスインスタンスに関連付けられているため、同じサービスインスタンスにバインドする場合は、サービスアクセスシークレットのみを別のアプリケーションまたはジョブで再利用できます。
既存のサービス・アクセス・シークレットを使用するジョブにサービス・インスタンスをバインドするサービス・バインディングを作成します。 例えば、 myjob
ジョブのサービス・バインディングを作成し、特定のサービス・インスタンスの既存のサービス・アクセス・シークレットを選択します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「概要」ページで、「 サービス・バインディング」をクリックします。
- 「サービス・バインディング」ページで、「 作成 」をクリックしてバインディングを作成します。
- Code Engine アプリケーションまたはジョブにバインドする IBM サービスインスタンスを選択します。
- サービスインスタンスにバインドしたい Code Engine アプリケーションまたはジョブを選択します。
- 異なるアプリケーションまたはジョブで特定の IBM Cloud サービスインスタンスにバインドされたサービスアクセスシークレットに、既存のクレデンシャルを再利用することができます。 この場合は、 「既存の秘密 (Existing secret)」 を選択します。 選択したアプリケーションまたはジョブに関連付けられていない、特定のサービスインスタンスに対して以前に定義されたサービス資格情報がリストされていることに注意してください。 以下のステップを実行します。
- 既存のシークレットのリストを確認し、このサービス・バインディングで使用するシークレットを選択します。
- (オプ シ ョ ナル) サービ ス バ イ ンデ ィ ン グのカ ス タ ム接頭辞を指定 し ます。 カスタム接頭部を指定しない場合、 Code Engine は自動的に接頭部を生成します。 この接頭部は、このサービス・バインディング用に作成される環境変数を区別するために使用されます。
- Addをクリックしてサービスバインディングを作成します。
- アプリケーションまたはジョブにバインドされたサービスがコンソールから作成されたので、サービスインスタンスと Code Engine アプリケーションおよびジョブの間の定義済みのサービスバインディングの一覧を、[サービスバインディング] ページから確認できます。
あるいは、コンソール内の特定の Code Engine アプリケーションまたはジョブのページから、特定のアプリケーションやジョブへのサービスバインディングを作成および管理することもできます。 アプリケーションまたはジョブのコンテキスト内でサービスバインディングを操作するには、特定のアプリケーションまたはジョブの [サービスバインディング]タブに移動します。
CLIを使用して、サービスインスタンスを Code Engine アプリケーション、ジョブ、または関数にバインドする
CLIを使用して、既存のサービスインスタンスを Code Engine アプリケーション、ジョブ、または関数にバインドするサービスバインドを作成することができます。
開始前に
-
Code Engine の CLI 環境をセットアップします。
-
Code Engine ワークロードにバインドするサービスインスタンスを作成する。
例えば、IBM Cloud Object Storage のサービス・インスタンス (ライト・プラン) を作成するには、次のようにします。
ibmcloud resource service-instance-create my-object-storage cloud-object-storage lite global -g Default
-
Code Engine 仕事量を増やす。
新しい資格情報によるサービス・インスタンスのバインド
- 新しいサービス・インスタンスを Code Engine アプリケーションにバインドして新しいサービス資格情報を生成する場合は、
ibmcloud ce application bind
コマンドを使用します。 - サービス・インスタンスを Code Engine ジョブにバインドする場合は、
ibmcloud ce job bind
コマンドを使用します。 - サービス・インスタンスを Code Engine 関数にバインドするには、
ibmcloud ce function bind
コマンドを使用します。
これらの手順で使用するアプリケーションを作成するには、次のコマンドを実行します。
ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
-
アプリケーション、ジョブ、または関数にバインドするサービスインスタンスの名前を特定します。 **
ibmcloud resource service-instances
**コマンドを実行すると、現在のリソース・グループのアカウント内にあるすべてのサービス・インスタンスを見つけることができます。以下に例を示します。ibmcloud resource service-instances
出力例
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9
-
サービス・インスタンスを Code Engine アプリケーション、ジョブ、または関数にバインドし、デフォルトのサービス・ロールで新しいサービス・クレデンシャルを生成します。 デフォルトのサービス役割は Manager です。Manager がサポートされない場合には、サービスから最初に指定された役割になります。 以下の例では
application bind
コマンドはmy-object-storage
サービスインスタンスとmy-application
というアプリケーションをバインドします。 このバインディング・アクションでは、マネージャーの役割を伴う新しいサービス資格情報が生成されます。ibmcloud ce application bind --name my-application --service-instance my-object-storage
以下の表は、この例の
application bind
コマンドで使用されるオプションの要約です。 コマンドとそのオプションについて詳しくは、ibmcloud ce application bind
コマンドを参照してください。コマンド・オプション オプション 説明 --name
バインドするアプリケーションの名前。 この値は必須です。 --service-instance
アプリケーションにバインドする既存のサービス・インスタンスの名前を指定します。 この値は必須です。 出力例
Binding service instance... Status: Done Waiting for application revision to become ready... The Configuration is still working to reflect the latest desired specification. Traffic is not yet migrated to the latest revision. Ingress has not yet been reconciled. Waiting for load balancer to be ready. OK
-
を使用して認証情報が生成されたことを確認する。
application get
またはjob get
またはfunction get
コマンドを使用して生成されたことを確認する。 以下の例では、前の例で作成した資格情報が作成されたことを確認します。ibmcloud ce application get --name my-application
出力例
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix my-application-app-ce-service-binding-abcde abcde5d3-dfc3-4f52-b133-b869b5eabcde my-object-storage cloud-object-storag Writer CLOUD_OBJECT_STORAGE [...]
サービスインスタンスを特定のロールにバインドする
- 新しいサービス・インスタンスを Code Engine アプリケーションにバインドして新しいサービス資格情報を生成する場合は、
ibmcloud ce application bind
コマンドを使用します。 - サービス・インスタンスを Code Engine ジョブにバインドする場合は、
ibmcloud ce job bind
コマンドを使用します。 - サービス・インスタンスを Code Engine 関数にバインドするには、
ibmcloud ce function bind
コマンドを使用します。
これらのステップに使用する関数を作成するには、以下のコマンドを実行します。
ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-nodejs
-
アプリケーション、ジョブ、または関数にバインドするサービスインスタンスの名前を特定します。 **
ibmcloud resource service-instances
**コマンドを実行すると、現在のリソース・グループのアカウント内にあるすべてのサービス・インスタンスを見つけることができます。以下に例を示します。ibmcloud resource service-instances
出力例
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9
-
サービス・インスタンスを Code Engine アプリケーション、ジョブ、または機能にバインドし、特定のサービス・ロールを持つ新しいサービス・クレデンシャルを生成します。 IAM サービス役割について詳しくは、サービス・アクセスの役割を参照してください。 次の例では
function bind
コマンドは、Writerサービス・ロールを使用して、my-object-storage
サービス・インスタンスをmy-function
という関数にバインドします。 このバインディング・アクションでは、ライターの役割を伴う新しいサービス資格情報が生成されます。--prefix
オプションを指定すると、サービス・バインディングによって作成される環境変数に接頭部が追加されます。ibmcloud ce function bind --name my-function --service-instance my-object-storage --role Writer --prefix MYPREFIX
以下の表は、この例の
function bind
コマンドで使用されるオプションの要約です。 コマンドとそのオプションについて詳しくは、ibmcloud ce function bind
コマンドを参照してください。コマンド・オプション オプション 説明 --name
バインドする関数の名前です。 この値は必須です。 --prefix
このサービスバインディングのために作成される環境変数の接頭辞. 例えば、 --prefix MYPREFIX
は、このサービス・バインディング用に作成されるすべての環境変数にMYPREFIX
接頭部を追加します。 詳しくは、 接頭部方式 を参照してください。--service-instance
関数にバインドする既存のサービスインスタンス名を指定します。 この値は必須です。 --role
このサービス・バインディング用に作成される新しいサービス資格情報のサービス役割の名前。 有効な値には、 Reader
、Writer
、Manager
、またはサービス固有の役割があります。--role
オプションが指定されていない場合、デフォルトはManager
、またはManager
がサポートされていない場合はサービスによって提供される最初の役割です。--service-credential
を指定した場合、このオプションは無視されます。出力例
Binding service instance... Status: Done OK
-
を使用して認証情報が生成されたことを確認する。
application get
コマンド、またはjob get
コマンド、またはfunction get
コマンドを使用して生成されたことを確認する。 以下の例では、前の例で作成した資格情報が作成されたことを確認します。ibmcloud ce function get --name my-function
出力例
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix my-function-ce-service-binding-abcde abcde5d3-dfc3-4f52-b133-b869b5eabcde my-object-storage cloud-object-storage Writer MYPREFIX 30s [...]
既存の資格情報によるサービス・インスタンスのバインド
サービス・インスタンスのために既に作成した資格情報をサービス・バインディングに使用する場合は、--service-credentials
オプションを追加します。
これらのステップに使用するジョブを作成するには、以下のコマンドを実行します。
ibmcloud ce job create --name my-job --image icr.io/codeengine/hello
-
アプリケーション、ジョブ、または関数にバインドするサービスインスタンスの名前を特定します。 **
ibmcloud resource service-instances
**コマンドを実行すると、現在のリソース・グループのアカウント内にあるすべてのサービス・インスタンスを見つけることができます。以下に例を示します。ibmcloud resource service-instances
出力例
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9
-
サービス・インスタンスの資格情報を確認します。
ibmcloud resource service-keys --instance-name INSTANCENAME
出力例
Name State Created At my-cos-credential active Tue Mar 2 01:15:33 UTC 2021
サービス資格情報の詳細を表示するには、
ibmcloud resource service-key KEYNAME
を実行します。ibmcloud resource service-keys
を実行すると、リソース・グループ内のすべてのサービス・キーを確認できます。 -
既存のクレデンシャルを使用して、サービスインスタンスをアプリケーション、ジョブ、または機能にバインドします。 例えば、以下の**
job bind
**コマンドは、my-cos-credential
という既存のサービス資格情報を使用して、my-object-storage
サービス・インスタンスをmyjob
という既存のジョブにバインドします。ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credential
以下の表は、この例の
job bind
コマンドで使用されるオプションの要約です。 コマンドとそのオプションについて詳しくは、ibmcloud ce job bind
コマンドを参照してください。コマンド・オプション オプション 説明 --name
バインドするジョブの名前。 この値は必須です。 --service-instance
ジョブにバインドする既存のサービス・インスタンスの名前を指定します。 この値は必須です。 --service-credential
バインドする既存のサービス資格情報の名前。 -
を使用して認証情報が生成されたことを確認する。
application get
またはjob get
またはfunction get
コマンドを使用して生成されたことを確認する。 以下の例では、前の例で作成した資格情報が作成されたことを確認します。ibmcloud ce job get --name myjob
出力例
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix myjob-ce-service-binding-abcde abcde645-d3f9-407d-b964-6c3ae69abcde my-object-storage cloud-object-storage my-cos-credential CLOUD_OBJECT_STORAGE [...]
サービス・インスタンスのアンバインド
アプリケーション、ジョブ、またはファンクションのワークロードからサービスインスタンスのバインドを解除すると、既存のサービスバインディングが削除されます。
サービスバインドのバインドを解除(または削除)すると、アプリケーション、ジョブ、または機能のワークロードとサービスアクセスシークレットの関連付けが削除され、ワークロードは以前にバインドされていた IBM Cloud サービスへのアクセスができなくなります。
アプリケーションとサービス・インスタンスの間でサービス・バインディングが定義された後、アプリケーションとサービス・インスタンスがアクティブである限り、サービス・バインディングはアクティブになります。または、サービス・バインディングを削除するためのアンバインド操作を完了していません。 サービス・インスタンスが削除された場合は、サービス・バインディングを手動で削除する必要があります。
コンソールからサービス・インスタンスのバインドを解除する
- Code Engine Projects ページから、プロジェクトに移動します。
- 「概要」ページで、「 サービス・バインディング 」をクリックして、定義済みのすべてのサービス・バインディングのリストを表示します。 または、アプリケーションまたはジョブのコンテキストからサービスバインドを管理したい場合は、[概要]ページで [アプリケーション] または [ジョブ] をクリックし、アプリケーションまたはジョブの名前をクリックします。 特定のアプリケーションまたはジョブのページから 、「サービスバインド」タブに移動します。
- サービスバインディングのリストから、アプリケーションまたはジョブから削除したいバインディングを削除します。 サービス・バインディングを削除するには、 「アクション」 アイコン
> 「削除」 をクリックします。
CLI を使用したサービス・インスタンスのアンバインド
-
削除したいサービスバインディングを
application get
,job get
またはfunction get
コマンドで探します、ibmcloud ce application get --name my-application
出力例
[...] Service Bindings: Name ID Service Instance Service Type Role / Credential Environment Variable Prefix my-application-app-ce-service-binding-abcde abcde5d3-dfc3-4f52-b133-b869b5eabcde my-object-storage cloud-object-storage Writer CLOUD_OBJECT_STORAGE [...]
-
application unbind
、job unbind
、またはfunction unbind
コマンドを使用して、サービス・バインディングを除去します。-
単一のバインディングを削除するには、
--name
オプションと--binding
オプションを指定します。ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME
-
すべてのサービス・インスタンスをアンバインドするには、
--all
オプションを使用します。ibmcloud ce job unbind --name JOB_NAME --all
-