適切な IAM 権限があり、必須の組織のポリシーが適用されている場合、Resource Manager API を使用して、組織リソース間でプロジェクト リソースを移行できます。
gcloud
プロジェクトを別の組織リソースに移行するには、次のコマンドを実行します。
gcloud beta projects move PROJECT_ID \ --organization ORGANIZATION_ID
次のコマンドで、対象リソースとしてフォルダを指定することもできます。
gcloud beta projects move PROJECT_ID \ --folder FOLDER_ID
次のフィールドを置き換えます。
- PROJECT_ID は、移行するプロジェクトの ID または番号です。
- ORGANIZATION_ID は、プロジェクトの移行先となる組織リソースの ID です。1 つの組織リソースまたはフォルダのどちらか 1 つの対象のみを指定できます。
- FOLDER_ID は、プロジェクトの移行先フォルダの ID です。1 つのフォルダまたは組織リソースのどちらか 1 つの対象のみを指定できます。
API
v1 Resource Manager API を使用して、parent
フィールドを移行先リソースの ID に設定することで、組織リソース間でプロジェクトを移行できます。
プロジェクトの移行は、次の手順で行います。
projects.get()
メソッドを使用してproject
オブジェクトを取得します。parent
フィールドを組織リソースの組織リソース ID か、移行先のフォルダのフォルダ ID に設定します。projects.update()
メソッドを使用して、project
オブジェクトを更新します。
次のコード スニペットは、上記の手順を示しています。
project = crm.projects().get(projectId=flags.projectId).execute()
project['parent'] = {
'type': 'organization',
'id': flags.organizationId
}
project = crm.projects().update(
projectId=flags.projectId, body=project).execute()
移行のロールバック
プロジェクトを誤って移行した場合は、古いソースを新しい移行先、元の移行先を新しいソースとしてもう一度移行を実行することで、そのオペレーションをロールバックできます。実行するには、これがまったく新しい移行であるかのように、必要な IAM 権限と組織のポリシーが適用されている必要があります。
プロジェクトが [組織なし] から [組織] リソースに移行された移行をロールバックするには、Google Cloud カスタマーケアにお問い合わせください。