IBM Cloud Docs
リソース・グループの管理

リソース・グループの管理

リソース・グループは、カスタマイズ可能なグループにアカウント・リソースを編成するための方法で、これにより、複数リソースへのアクセス権限を一度に素早くユーザーに割り当てることができます。 IBM Cloud® Identity and Access Management (IAM) アクセス制御を使用して管理されているすべてのアカウント・リソースは、アカウント内のリソース・グループに属します。 リソースをグループ化し、IAM を使用する個々のサービス・インスタンスまたはリソース・グループ全体にアクセス権限を割り当てることができます。

リソース・グループの管理を開始するには、IBM Cloud® コンソールで**「管理」** > 「アカウント」 > 「アカウント・リソース」 > **「リソース・グループ」**と移動します。 リソース・グループの作成、表示、および名前変更、リソースの追加、およびリソース・グループへのアクセスの管理を行うことができます。 また、リソース・グループは、リソースを含んでおらず、デフォルトのリソース・グループでない場合にのみ、削除できます。 IBM Cloud アカウント所有者は任意のリソース・グループにリソースを追加できますが、その他のユーザーは、IAM アクセス・ポリシーを使用してアクセス権限を付与される必要があります。

リソース・グループの処理について詳しくは、リソースを編成してアクセス権限を割り当てるためのベスト・プラクティスを参照してください。

リソース・グループの作成

従量課金またはサブスクリプションのアカウントの場合、複数のリソース・グループを作成して、 割り当て量の管理とリソース・セットの課金使用量の表示を簡単に行うことができます。 また、リソースをグループにまとめて、複数インスタンスへのアクセス権限を一度に簡単にユーザーに割り当てられるようにすることも可能です。 1アカウントにつき最大1000のリソースグループを持つことができます。 追加のリソース・グループを作成するには、すべてのアカウント管理サービスの管理者役割を持つ IAM ポリシーが割り当てられている必要があります。 ライト・アカウントまたは 30 日間のトライアルを使用している場合、追加のリソース・グループは作成できませんが、デフォルト・リソース・グループを名前変更できます。

コンソールでのリソース・グループの作成

  1. IBM Cloud コンソールで、管理 > アカウント > アカウント・リソース > リソース・グループに移動します。
  2. 「作成」 をクリックします。
  3. リソース・グループの名前を入力します。
  4. 「作成」 をクリックします。

CLI を使用したリソース・グループの作成

リソースグループの作成と名前の変更、またはリソースグループ内のリソースの表示は、IBM Cloud®コマンドラインインターフェイスを使用して行うことができます。コマンドラインインターフェイスを使用します。 リソースの処理について詳しくは、リソースおよびリソース・グループの処理を参照してください。

  1. ログインし、アカウントを選択します。
    ibmcloud login
    
  2. ibmcloud resource group-create コマンドを実行して、新しいリソース・グループを作成します。 例えば、次のコマンドでは、group2 という名前のリソース・グループを作成します。
ibmcloud resource group-create group2

API を使用したリソース・グループの作成

従量課金またはサブスクリプションのアカウントの場合、複数のリソース・グループを作成して、 割り当て量の管理とリソース・セットの課金使用量の表示を簡単に行うことができます。 また、リソースをグループにまとめて、複数インスタンスへのアクセス権限を一度に簡単にユーザーに割り当てられるようにすることも可能です。

追加のリソース・グループを作成するには、すべてのアカウント管理サービスの管理者役割を持つ IAM ポリシーが割り当てられている必要があります。 ライト・アカウントまたは 30 日間のトライアルを使用している場合、追加のリソース・グループは作成できませんが、デフォルト・リソース・グループを名前変更できます。

リソース・グループを作成するには、以下の例のように IBM Cloud® Resource Manager API を呼び出します。

curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_groups -H 'Authorization: Bearer <IAM_TOKEN>'
  -H 'Content-Type: application/json' -d '{
      "account_id": "987d4cfd77b04e9b9e1a6asdcc861234",
      "name": "test"
    }'
CreateResourceGroupOptions createResourceGroupOptions = new CreateResourceGroupOptions.Builder()
        .accountId(exampleUserAccountId)
        .name("ExampleGroup")
        .build();
Response<ResCreateResourceGroup> response = resourceManagerService.createResourceGroup(createResourceGroupOptions).execute();
ResCreateResourceGroup resCreateResourceGroup = response.getResult();
System.out.println(resCreateResourceGroup);
const params = {
  accountId: exampleUserAccountId,
  name: "ExampleGroup"
};
resourceManagerService.createResourceGroup(params)
  .then(res => {
    resourceGroupId = res.result.id;
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
res_create_resource_group = resource_manager_service.create_resource_group(
  account_id=example_user_account_id,
  name='ExampleGroup',
).get_result()
print(json.dumps(res_create_resource_group, indent=2))
createResourceGroupOptions := resourceManagerService.NewCreateResourceGroupOptions()
createResourceGroupOptions.SetAccountID(exampleUserAccountID)
createResourceGroupOptions.SetName("ExampleGroup")
resCreateResourceGroup, response, err := resourceManagerService.CreateResourceGroup(createResourceGroupOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resCreateResourceGroup, "", "  ")
fmt.Println(string(b))

開始前に

Terraformを使ってリソースグループを管理する前に、以下のことが完了していることを確認してください:

  • Terraform CLIをインストールし、IBM Cloudを設定します。Terraform用のProviderプラグインをインストールします。 詳しくは IBM Cloud®のTerraformを始める のチュートリアルを参照。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。

  • main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、HashiCorpConfiguration Languageを使用してリソースを定義します。 詳細については 、Terraformのドキュメントを参照してください。

Terraform を使用したリソース・グループの作成

以下の手順で、Terraformを使ってリソースグループを作成します:

  1. main.tf ファイルに引数を作成する。 ibm_resource_group リソースを使用してリソース・グループを作成する例を以下に示します。name は、リソース・グループを識別するための固有の名前です。

    resource "ibm_resource_group" "resourceGroup" {
     name     = "prod"
    }
    

    リソース・グループ・インスタンスに関連付ける tags を指定できます。 詳細については、 Terraformリソース管理ページの引数リファレンスの詳細を参照してください。

  2. 設定ファイルのビルドが終わったら、Terraform CLIを初期化します。 詳しくは、作業ディレクトリの初期化を参照のこと。

    terraform init
    
  3. main.tf ファイルからリソースを供給する。 詳しくは Terraformによるインフラのプロビジョニングを参照してください。

    1. terraform plan 実行してTerraformの実行計画を生成し、提案されたアクションをプレビューする。
      terraform plan
      
    2. terraform apply を実行し、プランで定義されたリソースを作成する。
      terraform apply
      

リソース・グループの名前変更

最初のリソース・グループは、Default という名前で自動で作成されています。 このグループ、または自分で作成した他のグループの名前は更新することができます。

コンソールでのリソース・グループの名前変更

  1. IBM Cloud コンソールで、管理 > アカウント > アカウント・リソース > リソース・グループに移動します。
  2. アクションアクション・アイコンのリスト・メニューをクリックし、名前変更を選択します。
  3. 固有の名前を入力して**「保存」**をクリックします。

CLI を使用したリソース・グループの名前変更

  1. ログインし、アカウントを選択します。
    ibmcloud login
    
  2. ibmcloud resource group-update コマンドを実行して、リソース・グループの名前を変更します。 例えば、次のコマンドでは、Default リソース・グループの名前を Admin に変更します。
ibmcloud resource group-update Default [-n, --name Admin]

API を使用したリソース・グループの名前変更

変数 name は、リソース・グループの新しい名前を示します。 詳細については、リソースグループの更新 を参照してください。

curl -X PATCH https://resource-controller.cloud.ibm.com/v2/resource_groups/09f8c1c0742c493f80baaf7835212345 -H 'Authorization: Bearer <IAM_TOKEN>'
  -H 'Content-Type: application/json' -d '{
      "name": "test1"
    }'
UpdateResourceGroupOptions updateResourceGroupOptions = new UpdateResourceGroupOptions.Builder()
  .id(resourceGroupId)
  .name("RenamedExampleGroup")
  .state("ACTIVE")
  .build();
Response<ResourceGroup> response = resourceManagerService.updateResourceGroup(updateResourceGroupOptions).execute();
ResourceGroup resourceGroup = response.getResult();
System.out.println(resourceGroup);
const params = {
  id: resourceGroupId,
  state: 'ACTIVE',
  name: 'RenamedExampleGroup'
};
resourceManagerService.updateResourceGroup(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
resource_group = resource_manager_service.update_resource_group(
  id=resource_group_id,
  name='RenamedExampleGroup',
  state='ACTIVE',
).get_result()
print(json.dumps(resource_group, indent=2))
updateResourceGroupOptions := resourceManagerService.NewUpdateResourceGroupOptions(
  resourceGroupID,
)
updateResourceGroupOptions.SetName("RenamedExampleGroup")
updateResourceGroupOptions.SetState("ACTIVE")
resourceGroup, response, err := resourceManagerService.UpdateResourceGroup(updateResourceGroupOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceGroup, "", "  ")
fmt.Println(string(b))

Terraform を使用したリソース・グループの名前変更

Terraform を使用してリソース・グループの名前を変更できます。

  1. Terraform CLI をインストールし、Terraform 用の IBM Cloud Provider プラグインを構成するために、Terraform on IBM Cloud® 入門のチュートリアルに従ってください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。

  2. main.tfという名前の Terraform 構成ファイルを作成します。 このファイルで、HashiCorp Configuration Language を使用して、リソース・グループの名前を変更するための構成を追加します。 詳細については 、Terraformのドキュメントを参照してください。

    次の例のように、name を新しい値に更新してリソース・グループの名前を変更できます。

    resource "ibm_resource_group" "resourceGroup" {
     name     = "prod"
    }
    

    詳細については、 Terraformリソース管理ページの引数リファレンスの詳細を参照してください。

  3. Terraform CLI を初期設定します。

    terraform init
    
  4. terraform plan 実行してTerraformの実行計画を生成し、提案されたアクションをプレビューする。 Terraform 実行プランに、リソース・グループの名前を変更するために実行する必要があるすべてのアクションが要約されます。

    terraform plan
    
  5. リソース・グループの名前を変更します。

    terraform apply
    

リソース・グループへのリソースの追加

IAMで管理されるサービスはリソース・グループに属する。 カタログから、それらのサービスのいずれかのインスタンスを作成すると、そのインスタンスをリソース・グループに割り当てるよう求めるプロンプトが出されます。 リソース・グループに割り当てる前に、アカウント内のリソースを編成する方法を計画してください。 インスタンスの作成時に選択したリソース・グループは最終的なものであり、変更できません。

インスタンスの作成時に選択したリソース・グループは最終的なものであり、変更できません。

IBM Cloud アカウント所有者は任意のリソース・グループにリソースを追加できますが、その他のユーザーは、IAM アクセス・ポリシーを使用してアクセス権限を付与される必要があります。 カタログからリソースを作成してリソース・グループに追加するには、アカウントのユーザーに 2 つのアクセス・ポリシーを割り当てる必要があります。

  • リソース・グループ自体に対するビューアー以上の役割があるポリシー
  • アカウント内のサービスに対するエディター以上の役割があるポリシー

リソース・グループにリソースを追加するには、以下の手順を実行します。

  1. IBM Cloud コンソールで、管理 > アカウント > アカウント・リソース > リソース・グループに移動します。
  2. アクションアクション・アイコンのリスト・メニューをクリックし、リソースの追加を選択します。
  3. ここからカタログに誘導されます。 特定のカテゴリー、プロバイダー、料金プラン、コンプライアンスの種類、リリースタイプに基づいて、製品を検索したり、フィルタリングすることができます。 リソースの例としては、アプリケーション、サービス・インスタンス、コンテナー・クラスター、ストレージ・ボリューム、仮想サーバー、ソフトウェアなどがあります。

API を使用したリソース・グループへのリソースの追加

「カタログ設定の管理 」を参照し、 IBM Cloud® カタログの表示設定を行い、お客様のアカウントのユーザーによるパブリックカタログおよびプライベートカタログ内の製品へのアクセスを制御してください。

リソース・グループ内のリソースの表示

リソースグループに割り当てられているリソースを簡単に表示するには、 ナビゲーションメニューアイコンをクリックし 、ナビゲーションメニューアイコン > リソースリストの順にクリックします。 次に、リソース・グループでフィルタリングします。

リソース一覧ページでクラシックインフラストラクチャリソースが見つからない場合は、「ナビゲーションメニューアイコンの「ナビゲーション・メニュー・アイコン クラシック・インフラ デバイスリスト」をクリックしてデバイス一覧を確認してください。

CLIを使用してリソースグループ内のリソースを表示する

  1. ログインし、アカウントを選択します。

    ibmcloud login
    
  2. ibmcloud resource service-instances コマンドを実行して、特定のリソース・グループに割り当てられているリソースを表示します。 例えば、次のコマンドでは、Default リソース・グループ内のすべてのリソースをリストします。

ibmcloud resource service-instances -g Default

API を使用したリソース・グループ内のリソースの表示

リソース・グループ内のリソースを表示するには、以下の例のように IBM Cloud® Resource Controller API を呼び出します。

curl -X GET https://resource-controller.cloud.ibm.com/v2/resource_instances -H 'Authorization: Bearer <>'
ListResourceInstancesOptions listResourceInstancesOptions = new ListResourceInstancesOptions.Builder()
  .name(resourceInstanceName)
  .build();
Response<ResourceInstancesList> response = service.listResourceInstances(listResourceInstancesOptions).execute();
ResourceInstancesList resourceInstancesList = response.getResult();
System.out.printf("listResourceInstances() response:\n%s\n", resourceInstancesList.toString());
const params = {
  name: resourceInstanceName,
};
resourceControllerService.listResourceInstances(params)
  .then(res => {
    console.log('listResourceInstances() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
resource_instances_list = resource_controller_service.list_resource_instances(
    name=resource_instance_name
).get_result()
print('\nlist_resource_instances() response:\n',
      json.dumps(resource_instances_list, indent=2))
listResourceInstancesOptions := resourceControllerService.NewListResourceInstancesOptions()
listResourceInstancesOptions = listResourceInstancesOptions.SetName(resourceInstanceName)
resourceInstancesList, response, err := resourceControllerService.ListResourceInstances(listResourceInstancesOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceInstancesList, "", "  ")
fmt.Printf("\nListResourceInstances() response:\n%s\n", string(b))

コンソールを使用してリソースグループを削除する

アカウントに追加されているデフォルトのリソース・グループは削除できません。 またデフォルト以外に、リソース・グループは、リソースが含まれていない場合にしか削除できません。

リソースが含まれていない、デフォルトではないリソース・グループを削除するには、以下のステップを実行します。

  1. IBM Cloud コンソールで、管理 > アカウント > アカウント・リソース > リソース・グループに移動します。
  2. アクション・アイコンアクション・アイコン > 削除をクリックします。

CLI を使用したリソース・グループの削除

リソースが含まれていない、デフォルトではないリソース・グループを削除するには、ibmcloud resource group-delete を実行します。 例えば、以下のようにしてリソース・グループ example-group を削除します。

ibmcloud resource group-delete example-group -f

API を使用したリソース・グループの削除

以下のサンプル要求に示すように、Resource Manager API を呼び出すことによって、プログラマチックにリソース・グループを削除できます。 APIの詳細については、 Resource Manager API をご覧ください。

curl -X DELETE \
  https://resource-controller.cloud.ibm.com/v2/resource_groups/09f8c1c0742c493f80baaf7835212345 \
  -H 'Authorization: Bearer <IAM_TOKEN>'
  -H 'Content-Type: application/json'
String id = '09f8c1c0742c493f80baaf7835212345';
DeleteResourceGroupOptions options = new DeleteResourceGroupOptions.Builder().id(id).build();
Response<Void> response = service.deleteResourceGroup(options).execute();
System.out.println(response):
const params = {
    id: '09f8c1c0742c493f80baaf7835212345'
};
service.deleteResourceGroup(params).then(response => {
    console.log(response)
}).catch(err => {});
delete_resource_group(self,
        id: str,
        **kwargs
    ) -> DetailedResponse
ID := "09f8c1c0742c493f80baaf7835212345"
deleteResourceGroupOptionsModel := service.NewDeleteResourceGroupOptions(ID)
detailedResponse, err := service.DeleteResourceGroup(deleteResourceGroupOptionsModel)

Terraform を使用したリソース・グループの削除

Terraformを使ってリソースグループを削除する前に、以下のことが完了していることを確認してください:

  • Terraform CLIをインストールし、IBM Cloudを設定します。Terraform用のProviderプラグインをインストールします。 詳しくは IBM Cloud®のTerraformを始める のチュートリアルを参照。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。
  • main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、HashiCorpConfiguration Languageを使用してリソースを定義します。 詳細については 、Terraformのドキュメントを参照してください。

リソースグループを削除するには、以下の手順に従います

リソースグループは、その中にリソースが存在しない場合にのみ削除できます。

  1. Terraform main.tf ファイルから次のコードブロックを削除することで、リソースグループを削除できます。 Terraformファイルを使用して resourceGroup を作成したはずです。

    resource "ibm_resource_group" "resourceGroup" {
     name     = "prod"
    }
    

    詳細については、 Terraformリソース管理ページの引数リファレンスの詳細を参照してください。

  2. 設定ファイルのビルドが終わったら、Terraform CLIを初期化します。 詳しくは、作業ディレクトリの初期化を参照のこと。

    terraform init
    
  3. main.tf ファイルからリソースを供給する。 詳しくは Terraformによるインフラのプロビジョニングを参照してください。

    1. terraform plan 実行してTerraformの実行計画を生成し、提案されたアクションをプレビューする。

      terraform plan
      
    2. terraform apply を実行し、プランで定義されたリソースを作成する。

      terraform apply
      

次の terraform destroy コマンドを実行してリソース・グループを削除することもできます。

terraform destroy -target RESOURCE_TYPE.NAME -target RESOURCE_TYPE2.NAME