このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
このトピックでは、Space で API リソースを作成して管理する方法について説明します。API プロキシ、共有フロー、API プロダクトは Space で作成できます。Space で作成されたリソースは、Space と同じ権限を継承します。
Space にリソースを作成する方法は、Apigee 組織にリソースを作成する方法と同じです。ただし、リソースの作成時に Space を選択できます。API リソースは、Apigee API を使用してコマンドラインから作成することも、Cloud コンソールの Apigee を使用して作成することもできます。
このガイドでは、次の手順について説明します。
Apigee Spaces の概要については、Apigee Space をご覧ください。
Apigee API リソースタイプの詳細については、以下をご覧ください。
始める前に
Apigee Spaces で API リソースの作成を開始する前に、次のタスクを完了してください。
- Apigee サブスクリプションまたは従量課金制の組織をプロビジョニングしている。Apigee のプロビジョニングに必要な手順の詳細については、Apigee を設定するをご覧ください。
- Apigee 組織に Space を作成している。詳細については、Apigee Space を作成するをご覧ください。
- Space にメンバーを割り当てる。詳細については、Space のメンバーとロールを管理するをご覧ください。
必要なロールと権限
Apigee Spaces の導入により、IAM が API リソースに対する一部のオペレーションの実行に必要な権限を確認する方法が変更されました。API リソースが Space に存在する場合、IAM は、Space レベルで、オペレーションを実行する Space メンバーに対して適切な権限があるかどうかを確認します。詳細については、 Apigee Spaces のロールと権限と Apigee Spaces の IAM 権限階層をご覧ください。
Space のメンバーにロールと権限を割り当てる
Space のメンバーには次の 3 つのカスタムロールがあります。
apigee.spaceContentEditor
: Space に関連付けることができるリソースに対する完全アクセス権を付与します。 このロールは Space レベルで付与する必要があります。apigee.spaceContentViewer
: Space に関連付けることができるリソースに対する読み取りアクセス権を付与します。 このロールは Space レベルで付与する必要があります。apigee.spaceConsoleUser
: Google Cloud コンソールを使用して Space 内のリソースを管理するために必要な最小限の権限を付与します。このロールは、その Space のリソースにアクセスできるユーザーに Google Cloud プロジェクト レベルで付与する必要があります。
このセクションで説明するカスタムロールでは、Space メンバーに API プロキシまたは共有フローのデプロイまたはデプロイ解除の権限は付与されません。Space メンバーにデプロイメントの管理を許可する場合は、Apigee 環境または Google Cloud プロジェクト レベルで IAM ポリシーを設定し、Space メンバーに apigee.environment.admin
ロールを付与します。
Space メンバーにロールを割り当てるには、次のいずれかの方法を使用します。
- API を使用して Space に
apigee.spaceContentEditor
ロールを追加し、API を使用してターゲット環境にapigee.environmentAdmin
ロールを追加します。 - IAM ユーザー インターフェースを使用して、ロールをプロジェクトに追加します。
Google Cloud プロジェクト レベルでロールを確認するには:
-
Google Cloud コンソールで、[IAM] ページに移動します。
[IAM] に移動 - プロジェクトを選択します。
-
[プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。
- 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうか確認します。
ロールを付与する
-
Google Cloud コンソールで、[IAM] ページに移動します。
[IAM] に移動 - プロジェクトを選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、[ 別のロールを追加] をクリックしてロールを追加します。
- [保存] をクリックします。
Space レベルで適用されている IAM ポリシーを確認するには、Space のメンバーとロールを管理するをご覧ください。
Space で API プロキシを管理する
Space に割り当てられた Apigee 組織のメンバーは、API プロキシを Space のリソースとして作成できます。他の Space にのみ割り当てられているメンバーは、これらのプロキシへのアクセスおよびプロキシの管理はできません。
API プロキシは、以降のセクションで説明するように、Cloud コンソールの Apigee または API を使用して、Space のリソースとして作成します。
Cloud コンソールの Apigee
Cloud コンソールの Apigee を使用して、Space のリソースとして API プロキシを作成するには:
- API プロキシを作成するの手順に沿って操作します。
- ステップ 5 では、[Proxy details] の下に追加のフィールドが表示されます。ここでは、API プロキシの Space を選択できます。リストボックスから Space を選択します。API プロキシをスペースに割り当てない場合は、このフィールドをスキップできます。
- [次へ] をクリックして、プロキシの作成のオプションのデプロイ手順に進むか、[作成] をクリックして、デプロイせずにプロキシを作成します。
Apigee API
Apigee API を使用して API プロキシを Space のリソースとして作成するには、次のコマンドを使用します。
curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/apis?name=PROXY_NAME&space=SPACE_NAME&action=import" \ -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-type: multipart/form-data" \ -F "file=@PROXY_BUNDLE"
ここで
- ORG_NAME は実際の Apigee 組織の名前です。
- PROXY_NAME は、作成する API プロキシの名前です。名前は、Space 内だけでなく、グローバルに一意である必要があります。
- SPACE_NAME は、API プロキシを作成する Space の名前です。
- PROXY_BUNDLE は API プロキシ バンドル ファイルの名前です。
たとえば、red チームのメンバーが proxy-bundle.zip ファイルを使用して、acme 組織の red Space のリソースとして proxy-1 という名前の API プロキシを作成する場合は、次のコマンドを実行します。
curl "https://apigee.googleapis.com/v1/organizations/acme/apis?name=proxy-1&space=red&action=import" \ -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-type: multipart/form-data \ -F "file=@proxy-bundle.zip"
次の例では、このコマンドに対するレスポンスを示します。
{ "basepaths": ["/proxy-1"], "revision": 1, "apiProxyId": "proxy-1", "resourceName": "organizations/acme/apis/proxy-1/revisions/1", "space": "red", "createTime": ..., "updateTime": ... }
共有フローを Space のリソースとして管理する
Space に割り当てられたメンバーは、Space のリソースとして共有フローを作成することもできます。他の Space のメンバーは、これらの共有フローにアクセスできず、管理することもできません。
以降のセクションで説明するように、Apigee in Cloud コンソールまたは API を使用して、共有フローを Space のリソースとして作成します。
Cloud コンソールの Apigee
Cloud コンソールの Apigee を使用し、共有フローを Space のリソースとして作成するには:- 共有フローは、Apigee UI で共有フローを作成するの手順に沿ってゼロから新規に作成するか、既存のフローバンドルをアップロードします。
- ステップ 4 では、[Create a shared flow] ダイアログに追加のフィールドが表示され、API プロキシの Space を選択できます。リストボックスから Space を選択します。API プロキシをスペースに割り当てない場合は、このフィールドをスキップできます。
- [作成] をクリックして共有フローを作成します。
Apigee API
Apigee API を使用して共有フローを Space リソースとして作成するには、次のコマンドを使用します。
curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/sharedflows?name=FLOW_NAME&space=SPACE_NAME&action=import" \ -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-type: multipart/form-data" \ -F "file=@SHARED_FLOW_BUNDLE"
ここで:
- ORG_NAME は実際の Apigee 組織の名前です。
- FLOW_NAME は、作成する共有フローの名前です。名前は、Space 内だけでなく、グローバルに一意である必要があります。
- SPACE_NAME は、共有フローを作成する Space の名前です。
- SHARED_FLOW_BUNDLE は、共有フロー バンドル ファイルの名前です。
たとえば、red チームのメンバーが acme 組織の red Space に関連付けられた flow-1 という名前の共有フローを作成する場合は、次のコマンドを実行します。
curl "https://apigee.googleapis.com/v1/organizations/acme/sharedflows?name=flow-1&space=red&action=import" \ -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-type: multipart/form-data" \ -F "file=@sharedflow-bundle.zip"
次の例では、このコマンドに対するレスポンスを示します。
{ "name": "organizations/acme/sharedflows/flow-1", "revision": 1, "sharedFlowId": "flow-1", "space": "red", "createTime": ..., "updateTime": ... }
API プロダクトを Space のリソースとして管理する
Space に割り当てられたメンバーは、API プロキシをバンドルする API プロダクトを作成できます。API プロダクトを作成するときに、Space のメンバーは、組織の直下に作成されたプロキシや、メンバーシップを持つ Space でリソースとして作成された API プロキシなど、アクセス可能な API プロキシを選択できます。他の Space のメンバーは、これらの API プロダクトにアクセスしたり、管理することはできません。
API プロダクトは、以降のセクションで説明するように、Cloud コンソールの Apigee または API を使用して、Space のリソースとして作成します。
Cloud コンソールの Apigee
Cloud コンソールの Apigee を使用して、Space のリソースとして API プロダクトを作成するには:
- API プロダクトを作成するの手順に沿って操作します。
- ステップ 4 では、[プロダクトの詳細] ページに追加のフィールドが表示されます。このフィールドで、API プロダクトの Space を選択できます。リストボックスから Space を選択します。API プロダクトをスペースに割り当てない場合、このフィールドはスキップできます。
- 残りの構成情報を入力し、[保存] をクリックします。
Apigee API
API を使用して API プロダクトを Space リソースとして作成するには、apiproducts/create
エンドポイントにリクエストを送信し、space
プロパティを追加します。
たとえば、次のコマンドは、acme
組織に product-1 という名前の API プロダクトを作成し、red Space に関連付けます。
curl -X POST "https://apigee.googleapis.com/v1/organizations/acme/apiproducts" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-type: application/json" -d \ `{ "name": "product-1", "displayName": "product-1", "approvalType": "auto", "attributes": [ { "name": "access", "value": "internal" } ], "environments": [ "test" ], "operationGroup": { "operationConfigs": [ { "apiSource": "proxy-1", "operations": [ { "resource": "/", "methods": [ "GET" ] } ] } ], "operationConfigType": "proxy" }, "space": "red" }'
次の例では、このコマンドに対するレスポンスを示します。
{ "name": "product-1", "displayName": "product-1", "approvalType": "auto", "attributes": [ { "name": "access", "value": "internal" } ], "environments": [ "test" ], "createdAt": "1741977778448", "lastModifiedAt": "1741977778448", "operationGroup": { "operationConfigs": [ { "apiSource": "proxy-1", "operations": [ { "resource": "/", "methods": [ "GET" ] } ] } ], "operationConfigType": "proxy" }, "space": "red" }
Space に関連付けられているすべての API リソースを一覧表示する
ListApiProxies
、ListSharedFlows
、ListApiProducts
などのすべてのリスト オペレーションで、Space 名を指定すると、その Space に関連付けられたすべてのリソースを一覧表示できます。Space 名を指定しない場合、リスト オペレーションは、Space に関連付けられているかどうかにかかわらず、アクセス権を持つ組織内のすべてのリソースを返します。
Apigee Spaces 機能を使用する場合、Space に割り当てられた API リソースの list
オペレーションの結果は、プリンシパルがアクセスできる Space の結果に制限されます。たとえば、acme-team@acme.com
に red Space の apigee.spaceContentEditor
ロールが付与されている場合、list
オペレーションを使用するチーム acme-team
メンバーには、red Space に関連付けられている API プロキシのみが表示され、組織内のすべての API プロキシは表示されません。
このタスクを実行するには、apigee.apiResources.list
権限が必要です。この権限は、Apigee > Apigee Organization Admin
のロールに含まれています。
特定の Space に関連付けられた API リソースを一覧表示する
特定の Space に関連付けられているすべての API リソースを一覧表示するには、Google Cloud コンソールの Apigee または API を使用します。詳細については、以降のセクションをご覧ください。
Cloud コンソールの Apigee
Cloud コンソールの Apigee で特定の Space に関連付けられているすべての API リソースを一覧表示するには、関連するリソースタイプ(API プロキシ、共有フロー、API プロダクト)の概要ページを開きます。[フィルタ] ボックスで、リストから [Space] オプションを選択し、Space の名前を入力します。そのスペースに割り当てられたリソースのリストが表示されます。ユーザーがメンバーであるスペースに関連付けられているリソースのみが表示されます。
Apigee API
指定した Space に関連付けられているすべての API リソースを一覧表示するには、次のコマンドを使用します。
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE?space=SPACE_NAME"
ここで
- ORG_NAME は実際の Apigee 組織の名前です。
- RESOURCE_TYPE は、一覧表示するリソースの種類です。有効な値は次のとおりです。
apis
sharedFlows
apiProducts
- SPACE_NAME は、リソースを一覧表示する Space の名前です。
たとえば、red チームのメンバーが acme 組織の red Space に関連付けられたすべての API プロキシを一覧表示する場合は、次のコマンドを実行します。
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/acme/apis?space=red"
次の例では、このコマンドに対するレスポンスを示します。
{ "proxies": [ { "basepaths": "/proxy-1", "revision": "1", "apiProxyId": "proxy-1", "resourceName": "organizations/acme/apis/proxy-1/revisions/1", "space": "red", "createTime": ..., .... } ] }
Space を指定せずに API リソースを一覧表示する
すべての API リソースは、以降のセクションで説明するように、Google Cloud コンソールの Apigee または API を使用して Space を指定せずに一覧表示します。
Cloud コンソールの Apigee
Cloud コンソールの Apigee で、Space の関連付けに関係なく、特定のタイプのすべての API リソースのリストを表示するには、関連するリソースタイプ(API プロキシ、共有フロー、API プロダクト)の概要ページを開きます。使用可能なすべてのリソースのリストが表示されます。なお、表示されリソースは、ユーザーに表示権限があるものに限られます。これには、ユーザーがメンバーである Space に関連付けられたリソースや、Space に関連付けられていないリソースが含まれます。
Apigee API
API リソースは、次のコマンドを使用して、Space を指定せずに一覧表示することもできます。
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/RESOURCE_TYPE"
ここで:
- ORG_NAME は実際の Apigee 組織の名前です。
- RESOURCE_TYPE は、一覧表示するリソースの種類です。有効な値は次のとおりです。
apis
sharedFlows
apiProducts
たとえば、組織内のすべてのリソースに対する Organization Admin
権限をユーザーは、次のコマンドを使用して acme 組織内のすべての API プロキシを一覧表示できます。
curl -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/acme/apis"
acme 組織に 3 つのプロキシがある場合、このコマンドは 3 つのプロキシに関する詳細情報をすべて返します。次に例を示します。
{ "proxies": [ { "basepaths": "/proxy-1", "revision": "1", "apiProxyId": "proxy-1", "resourceName": "organizations/acme/apis/proxy-1/revisions/1", "space": "red", "createTime": ..., .... }, { "basepaths": "/proxy-2", "revision": "1", "apiProxyId": "proxy-2", "resourceName": "organizations/acme/apis/proxy-2/revisions/1", "space": "blue", "createTime": ..., .... }, { "basepaths": "/proxy-3", "revision": "1", "apiProxyId": "proxy-3", "resourceName": "organizations/acme/apis/proxy-3/revisions/1", "space": "green", "createTime": ..., .... } ] }
Space red 内のリソースへの apiAdmin
権限のみを持つ別のユーザーが同じコマンドを使用すると、コマンドは proxy-1 の詳細のみを返します。レスポンスは次のようになります。
{ "proxies": [ { "basepaths": "/proxy-1", "revision": "1", "apiProxyId": "proxy-1", "resourceName": "organizations/acme/apis/proxy-1/revisions/1", "space": "red", "createTime": ..., .... } ] }
次のステップ
- Apigee Space の詳細を確認する。
- Apigee Spaces の作成と管理方法を学習する。
- Identity and Access Management(IAM)のドキュメントを読む。