폴더 만들기 및 관리

폴더는 Cloud Platform 리소스 계층 구조의 노드입니다. 폴더에는 프로젝트, 다른 폴더 또는 이 두 가지의 조합이 포함될 수 있습니다. 조직 리소스는 폴더를 사용하여 계층 구조의 조직 리소스 노드 아래에 있는 프로젝트를 그룹화할 수 있습니다. 예를 들어 조직 리소스에는 여러 부서가 있을 수 있고 부서마다 자체 Google Cloud 리소스가 있을 수 있습니다. 폴더를 사용하면 부서별로 이러한 리소스를 그룹화할 수 있습니다. 폴더는 공통 IAM 정책을 공유하는 리소스를 그룹화하는 데 사용됩니다. 한 폴더는 폴더 또는 리소스를 여러 개 포함할 수 있지만 지정된 폴더 또는 리소스는 단 하나의 상위 항목만 가질 수 있습니다.

아래 다이어그램에서 'Company' 조직 리소스에는 두 개의 부서를 나타내는 폴더 'Dept X' 및 'Dept Y'와 두 부서에 공통되는 항목을 나타내는 폴더 'Shared Infrastructure'가 있습니다. 'Dept Y'는 두 팀으로 구성되어 있고, 팀 폴더는 다시 제품으로 구성됩니다. 'Product 1' 폴더에는 세 개의 프로젝트가 있는데, 각 프로젝트는 프로젝트에 필요한 리소스로 구성됩니다. 이를 통해 적합한 수준으로 IAM 정책 및 조직 정책에 할당할 때 유연성을 높일 수 있습니다.

폴더 계층 구조 예시

폴더 수준 IAM 정책을 사용하여 폴더에 있는 리소스에 대한 액세스를 제어할 수 있습니다. 예를 들어 사용자에게 폴더에 대한 Compute 인스턴스 관리자 역할이 부여되는 경우 사용자는 폴더의 모든 프로젝트에 대한 Compute 인스턴스 관리자 역할을 갖게 됩니다.

시작하기 전에

폴더 기능은 조직 리소스가 있는 Google Workspace 및 Cloud ID 고객만 사용할 수 있습니다. 조직 리소스 확보에 관한 자세한 내용은 조직 만들기 및 관리를 참조하세요.

폴더를 가장 잘 사용하는 방법을 모색하고 있다면 다음을 수행하는 것이 좋습니다.

  1. IAM을 사용하여 폴더에 대한 액세스 제어를 검토합니다. 이 항목에서는 폴더와 폴더에 있는 리소스에 대해 누가 어떤 액세스 권한을 갖는지를 제어하는 방법에 대해 설명합니다.
  2. 폴더 권한을 설정하는 방법을 파악합니다. 폴더는 다양한 IAM 역할을 지원합니다. 사용자가 프로젝트 구조를 볼 수 있도록 권한을 광범위하게 설정하려면 조직 리소스 수준에서 전체 도메인에 조직 뷰어폴더 뷰어 역할을 부여합니다. 폴더 계층 구조의 분기에 대한 가시성을 제한하려면 사용자에게 표시할 폴더에 대해서만 폴더 뷰어 역할을 부여합니다.
  3. 폴더를 만듭니다. 클라우드 리소스를 구성하는 방법을 계획할 때 조직 리소스에 가장 적합한 계층 구조를 실험할 수 있는 샌드박스로 단일 폴더를 시작하는 것이 좋습니다. 폴더는 액세스 및 구성 정책에 대한 리소스와 연결 지점 간의 격리 경계라는 관점으로 보면 됩니다. 다른 부서에 속하는 리소스를 포함하는 폴더를 만들고 폴더에 대한 관리자 역할을 할당하여 관리자 권한을 위임할 수 있습니다. 또한 폴더를 사용하여 애플리케이션 또는 개발, 프로덕션, 테스트와 같이 다른 환경에 속하는 리소스를 그룹화할 수 있습니다. 중첩된 폴더를 사용하여 이러한 여러 시나리오를 모델링하세요.

위의 이미지와 같이 추가 폴더 또는 프로젝트를 포함하는 폴더를 만드는 것이 일반적입니다. 이 구조를 폴더 계층 구조라고 합니다. 폴더 계층 구조를 만들 때 다음 요소를 고려하세요.

  • 폴더는 최대 10수준까지 중첩할 수 있습니다.
  • 상위 폴더는 300개를 초과하는 폴더를 포함할 수 없습니다. 이는 직접 하위 폴더만 의미합니다. 이러한 하위 폴더는 추가 폴더 또는 프로젝트를 포함할 수 있습니다.
  • 폴더 표시 이름은 계층 구조의 동일한 수준 내에서 고유해야 합니다.

폴더 관리 권한 설정

폴더에 액세스하고 관리하려면 특정 사용자 그룹에 폴더별 IAM 역할을 할당해야 합니다. 이러한 역할에 대한 자세한 내용은 IAM을 사용하여 폴더에 대한 액세스 제어를 참조하세요. 또한 권장사항을 검토하는 것도 폴더 권한에 대한 최적의 구성을 파악하는 데 도움이 됩니다.

처음에는 조직 관리자가 조직 리소스에 대한 폴더 관리자 역할을 할당할 수 있습니다. 이후 이 역할에 할당되는 계정은 이 역할을 다른 계정에 부여할 수 있습니다.

폴더 권한을 설정하려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지를 엽니다.

    리소스 관리 페이지 열기

  2. 왼쪽 상단의 조직 드롭다운 목록을 클릭하고 리소스 목록에서 조직을 선택합니다.

  3. 구성원 추가 필드에 이메일 주소를 입력합니다.

  4. 역할 선택 드롭다운 목록 상자에서 Resource Manager 카테고리로 이동하고 폴더 관리자 역할을 선택합니다.

  5. 추가를 클릭하여 새 역할을 부여합니다.

gcloud

Google Cloud CLI를 사용하여 프로그래매틱 방식으로 폴더를 만들 수 있습니다. 이렇게 하려면 다음 명령어를 실행하세요.

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member=user:USER_ID \
    --role=roles/resourcemanager.folderAdmin

API

요청 JSON:

request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [   "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'

curl 요청:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/ORGANIZATION_NAME:setIamPolicy

ORGANIZATION_NAME을 IAM 정책을 설정하는 조직의 이름으로 바꿉니다(예: organizations/123).

폴더 만들기

폴더를 만들려면 상위 수준의 폴더 관리자 또는 폴더 생성자 역할이 있어야 합니다. 예를 들어 조직 수준에서 폴더를 만들려면 조직 수준에 이러한 역할 중 하나가 있어야 합니다.

폴더를 만드는 과정에서 폴더에 이름을 지정해야 합니다. 폴더 이름은 다음 요구 사항을 충족해야 합니다.

  • 이름은 문자, 숫자, 공백, 하이픈, 밑줄을 포함할 수 있습니다.
  • 폴더의 표시 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.
  • 이름은 3~30자(영문 기준) 사이여야 합니다.
  • 이름은 상위 항목을 공유하는 다른 모든 폴더와 구분되어야 합니다.

폴더를 만드는 방법은 다음과 같습니다.

콘솔

'프로젝트 및 폴더 관리' 섹션을 사용하여 UI에서 폴더를 만들 수 있습니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지 열기

  2. 페이지 상단의 조직 드롭다운 목록에서 조직 리소스 이름이 선택되어 있는지 확인합니다.

  3. 폴더 만들기를 클릭하고 다음 옵션 중 하나를 선택합니다.

    • 표준 폴더: 표준 폴더 리소스입니다.
    • Assured Workloads 폴더: Google Cloud 리소스에 대한 추가 규제, 리전 또는 주권 제어를 제공하는 Assured Workloads 폴더입니다. 이 옵션을 선택하면 Assured Workloads에서 폴더를 만들 수 있습니다.
  4. 폴더 이름 상자에 새 폴더의 이름을 입력합니다.

  5. 대상 아래에서 찾아보기를 클릭한 다음 새 폴더를 만들 조직 리소스 또는 폴더를 선택합니다.

    1. 만들기를 클릭합니다.

gcloud

Google Cloud CLI를 사용하여 프로그래매틱 방식으로 폴더를 만들 수 있습니다.

gcloud 명령줄 도구를 사용하여 조직 리소스 아래에 폴더를 만들려면 다음 명령어를 실행합니다.

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --organization=[ORGANIZATION_ID]

상위 항목이 다른 폴더인 폴더를 만들려면 다음 명령어를 실행합니다

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --folder=[FOLDER_ID]

각 항목의 의미는 다음과 같습니다.

  • [DISPLAY_NAME]은 폴더의 표시 이름입니다. 상위 요소가 동일한 두 개의 폴더는 표시 이름을 공유할 수 없습니다. 표시 이름은 문자 또는 숫자로 시작하고 끝나야 하며 문자, 숫자, 공백, 하이픈, 밑줄을 포함할 수 있고 30자를 초과할 수 없습니다.
  • [ORGANIZATION_ID]는 상위 요소가 조직 리소스인 경우 상위 조직 리소스의 ID입니다.
  • [FOLDER_ID]는 상위 요소가 폴더인 경우 상위 폴더의 ID입니다.

API

폴더는 API 요청으로 만들 수 있습니다.

요청 JSON:

request_json= '{
  display_name: DISPLAY_NAME,
  parent: ORGANIZATION_NAME
}'

폴더 생성 curl 요청:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders

각 항목의 의미는 다음과 같습니다.

  • [DISPLAY_NAME]은 새 폴더의 표시 이름입니다(예: 'My Awesome Folder').
  • [ORGANIZATION_NAME]은 폴더를 만드는 조직 리소스의 이름입니다(예: organizations/123).

폴더 생성 응답:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  }
}

작업 가져오기 curl 요청:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fc.123456789

작업 가져오기 응답:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

폴더 생성 중에 태그 추가

태그를 사용하면 리소스 주석을 만들 수 있습니다. 폴더를 만들 때 태그를 추가할 수 있습니다. 이렇게 하려면 태그 사용자 역할을 부여해야 합니다. 이 역할에 포함된 권한에 대한 자세한 내용은 리소스에서 태그 관리를 참조하세요. 다음 방법 중 하나를 통해서만 태그 키-값 쌍의 네임스페이스를 추가할 수 있습니다.

gcloud

폴더를 만드는 동안 태그를 추가하려면 다음 명령어를 실행합니다.

  gcloud resource-manager folders create \
  --display-name=DISPLAY_NAME \
  --organization=ORGANIZATION_ID
  --tags=KEY_VALUE_PAIRS

다음을 바꿉니다.

  • DISPLAY_NAME은 폴더의 표시 이름입니다.
  • ORGANIZATION_ID는 상위 조직 리소스의 고유 식별자입니다.
  • KEY_VALUE_PAIRS는 리소스에 할당할 수 있는 쉼표로 구분된 키-값 쌍 목록입니다. 쉼표로 구분된 키-값 쌍의 예시는 123/environment=production, 456/create=testresource입니다.

API

다음 스니펫은 폴더를 만들고 여기에 태그를 추가하는 JSON 요청입니다.

  POST https://cloudresourcemanager.googleapis.com/v3/projects/
  Authorization: *************
  Content-Type: application/json

  {
    "display_name": "our-folder-456",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
    }
  }

폴더에 대한 액세스 구성

폴더에 대한 액세스를 구성하려면 상위 수준에 폴더 IAM 관리자 또는 폴더 관리자 역할이 있어야 합니다.

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지를 엽니다.

    리소스 관리 페이지 열기

  2. 왼쪽 상단의 조직 드롭다운 목록을 클릭한 다음 조직 리소스를 선택합니다.

  3. 권한을 변경할 프로젝트 옆에 있는 체크박스를 선택합니다.

    1. 오른쪽 정보 패널권한 아래에 추가할 구성원의 이메일 주소를 입력합니다.

    2. 역할 선택 드롭다운 목록에서 해당 구성원에게 부여할 역할을 선택합니다.

    3. Add(추가)를 클릭합니다. 구성원의 새로운 역할 추가 또는 업데이트를 확인하는 알림이 나타납니다.

gcloud

Google Cloud CLI 또는 API를 사용하여 프로그래매틱 방식으로 폴더에 대한 액세스를 구성할 수 있습니다.

gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderEditor
gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderViewer

다른 방법은 다음과 같습니다.

gcloud resource-manager folders \
  set-iam-policy [FOLDER_ID] [POLICY_FILE]

각 항목의 의미는 다음과 같습니다.

  • [FOLDER_ID]는 새 폴더의 ID입니다.
  • [POLICY_FILE]은 폴더에 대한 정책 파일의 경로입니다.

API

setIamPolicy 메서드는 폴더에 대한 액세스 제어 정책을 설정하여 모든 기존 정책을 대체합니다. resource 필드는 폴더의 리소스 이름이어야 합니다(예: folders/1234).

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

curl 요청:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]:setIamPolicy

각 항목의 의미는 다음과 같습니다.

  • [FOLDER_NAME]은 IAM 정책을 설정하는 폴더의 이름입니다(예: folders/123).

폴더에서 프로젝트 만들기

폴더에서 프로젝트를 만들려면 폴더에 대한 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 있어야 합니다. 이 역할은 상위 폴더에서 상속될 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지를 엽니다.

    Google Cloud 콘솔 열기

  2. 리소스 관리 페이지로 이동합니다.
  3. 페이지 왼쪽 상단의 조직 드롭다운에서 조직 리소스를 선택합니다.
  4. 프로젝트 만들기를 클릭합니다.
  5. 프로젝트 이름을 입력합니다.
  6. 대상 상자에서 찾아보기를 클릭하여 프로젝트를 만들려는 폴더를 선택합니다.

  7. 만들기를 클릭합니다.

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

다음을 바꿉니다.

  • PROJECT_ID는 만들 프로젝트 ID의 ID입니다.
  • FOLDER_ID는 프로젝트를 만들어야 하는 폴더의 ID입니다.

API

요청 JSON:

   request_json= '{
      name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
   }'

curl 요청:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/projects

다음을 바꿉니다.

  • PROJECT_ID는 생성되는 프로젝트의 고유 식별자입니다. 예를 들면 my-awesome-proj-123입니다.
  • DISPLAY_NAME은 생성 중인 프로젝트의 표시 이름입니다.
  • PARENT_ID는 생성 중인 상위 요소의 고유 식별자입니다. 예를 들면 123입니다.
  • PARENT_TYPE은 상위 요소 유형입니다(예: folder 또는 organization).

폴더 이름이나 기타 리소스 이름에 민감한 정보를 포함하지 마세요. 폴더나 관련 리소스에 대한 모든 참조는 폴더 이름과 리소스 이름을 노출합니다.

폴더로 프로젝트 이동

프로젝트를 폴더 안팎으로 이동하기 전에 정책의 모든 영향을 신중하게 고려해야 합니다. 프로젝트 수준에서 정의한 Identity and Access Management 정책은 프로젝트와 함께 이동하지만 상위 리소스에서 상속된 정책은 이동하지 않습니다.

프로젝트를 이동하면 직접 연결된 모든 Identity and Access Management 정책 또는 조직 정책이 함께 이동됩니다. 하지만 리소스 계층의 프로젝트도 상위 리소스로부터 상속되는 정책의 영향을 받습니다. 사용자에게 특정 서비스 사용 권한을 제공하는 IAM 역할이 프로젝트에 상속될 경우, 대상에서도 권한이 상속되지 않으면 사용자가 대상에서 해당 서비스에 액세스하지 못합니다.

예를 들어 폴더 A에서 사용자에게 연결된 스토리지 객체 생성자 역할이 있는 서비스 계정을 가정해보세요. 이 서비스 계정은 폴더 A에서 어느 프로젝트에서든 Cloud Storage에 데이터를 업로드할 수 있는 권한이 있습니다. 이러한 프로젝트 중 하나를 폴더 B로 이동했을 때, 이 폴더에 동일하게 상속되는 권한이 없으면, 해당 프로젝트에 대한 서비스 계정이 데이터 업로드 기능을 상실하여, 서비스 중단이 발생합니다.

조직 정책이 소스 및 대상 폴더에서 정의되는 경우 동일한 고려사항이 적용됩니다. IAM 정책과 마찬가지로 조직 정책도 상속됩니다. 따라서 조직 정책이 소스 폴더와 대상 폴더 간에 일관되는지 확인해야 합니다.

조직 정책에 대해 자세히 알아보려면 조직 정책 서비스 소개를 참조하세요.

프로젝트를 이동하려면 소스 폴더와 대상 폴더 모두에 대한 프로젝트 이동자 IAM 역할(roles/resourcemanager.projectMover)이 필요합니다. 리소스가 폴더에 없으면 조직 리소스에 대한 이 역할이 필요합니다.

이러한 역할은 다음과 같은 필수 권한을 부여합니다.

  • 프로젝트에 대한 resourcemanager.projects.update
  • 리소스가 폴더에 있는 경우: 소스 폴더 및 대상의 resourcemanager.projects.move
  • 리소스가 폴더에 없는 경우: 조직 리소스의 resourcemanager.projects.move

커스텀 역할 또는 사전 정의된 다른 역할을 사용하여 이 권한을 얻을 수도 있습니다.

콘솔

프로젝트를 이동하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 페이지 왼쪽 상단의 조직 드롭다운에서 조직을 선택합니다.

  3. 프로젝트 행을 클릭하여 리소스 목록에서 프로젝트를 선택합니다. 프로젝트의 IAM 페이지로 연결되는 프로젝트 이름을 클릭하지 않아야 합니다.

  4. 행에서 옵션 메뉴(세로 생략 기호)를 클릭하고 이동을 클릭합니다.

  5. 찾아보기를 클릭하고 프로젝트를 이동할 폴더를 선택합니다.

  6. 이동을 클릭합니다.

gcloud

프로젝트를 이동하려면 gcloud beta projects move 명령어를 실행합니다.

gcloud beta projects move PROJECT_ID \
--DESTINATION_TYPE DESTINATION_ID

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 이동하려는 프로젝트의 ID 또는 번호입니다.

  • DESTINATION_TYPEorganization 또는 folder입니다.

  • DESTINATION_ID는 프로젝트를 이동할 조직 리소스 또는 폴더의 ID입니다. 대상은 하나만 지정할 수 있습니다.

API

v3 projects.move 메서드를 사용하여 프로젝트를 이동할 수 있습니다.

요청:

POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
  "destinationParent": DESTINATION_PARENT
}

각 항목의 의미는 다음과 같습니다.

  • PROJECT_NAME은 업데이트할 프로젝트의 이름입니다. 예를 들면 projects/415104041262입니다.

  • DESTINATION_PARENT는 프로젝트를 이동하려는 새 상위 조직 리소스 또는 폴더입니다. 예를 들면 organizations/12345678901입니다.

성공하면 요청에서 프로젝트 이동을 추적하는 데 사용할 수 있는 Operation을 반환합니다.

다른 폴더로 폴더 이동

폴더를 다른 폴더로 이동하려면 소스 폴더와 대상 폴더 모두에 resourcemanager.folders.move 권한이 있어야 합니다.

콘솔

콘솔에서 폴더를 다른 폴더로 이동하는 과정은 프로젝트를 이동하는 과정과 유사합니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지를 엽니다.

    Google Cloud 콘솔 열기

  2. 페이지 왼쪽 상단의 조직 드롭다운에서 조직 리소스를 선택합니다.
  3. 프로젝트 및 폴더 목록에서 폴더의 행을 클릭하여 폴더를 선택합니다.
  4. 행에서 옵션 메뉴(세로 생략 기호)를 클릭하고 이동을 클릭합니다.
  5. 찾아보기를 클릭하고 폴더를 이동할 대상 폴더를 선택합니다.
  6. 이동을 클릭합니다.

gcloud

폴더를 조직 리소스로 이동하려면 Google Cloud CLI에서 다음 명령어를 실행합니다.

gcloud resource-manager folders move [FOLDER_ID] \
  --organization=[PARENT_ID]

폴더를 다른 폴더로 이동하는 명령어는 다음과 같습니다.

gcloud resource-manager folders move [FOLDER_ID] \
  --folder=[PARENT_ID]

다음을 바꿉니다.

  • [FOLDER_ID]는 이동할 폴더의 ID입니다.
  • [PARENT_ID]는 상위 조직 리소스 또는 폴더의 조직 리소스 ID 또는 폴더 ID입니다.

API

요청 JSON:

request_json= '{
   destinationParent: "folders/[DESTINATION_FOLDER_ID]"
}'

폴더 이동 curl 요청:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/[DISPLAY_NAME]:move

다음을 바꿉니다.

  • [DESTINATION_FOLDER_ID]는 다른 폴더를 이동하려는 폴더의 ID입니다(예: 98765).
  • [DISPLAY_NAME]은 이동 중인 폴더의 표시 이름입니다(예: My Awesome Folder').

폴더 이동 응답:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "MOVE"
  }
}

작업 가져오기 curl 요청:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890

작업 가져오기 응답:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "MOVE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "folders/98765",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-20T00:54:44.295Z"
  }
}

폴더 및 프로젝트 보기 또는 나열

폴더를 보거나 나열하려면 조직 뷰어폴더 뷰어 역할이 있어야 합니다.

폴더 및 프로젝트를 보거나 나열하는 방법은 다음과 같습니다.

콘솔

  1. Google Cloud 콘솔에서 리소스 관리 페이지를 엽니다.

    리소스 관리 페이지 열기

  2. 페이지 상단의 프로젝트 선택기에서 조직 리소스를 선택합니다. 폴더는 이 목록에 표시되기 전에 만들어야 합니다.

  3. 트리에서 행을 선택하여 폴더 또는 프로젝트별 작업을 수행합니다.

  4. 프로젝트 또는 폴더 이름/ID를 검색창에 입력하여 목록을 필터링합니다.

gcloud

폴더 하나의 세부정보를 가져오려면 resource-manager folders describe 명령어를 사용합니다.

gcloud resource-manager folders describe FOLDER_ID

FOLDER_ID를 보려는 폴더의 ID로 바꿉니다.

조직 리소스의 하위 폴더를 나열하려면 resource-manager folders list 명령어를 사용합니다.

gcloud resource-manager folders list \
  --organization ORGANIZATION_ID

ORGANIZATION_ID를 하위 폴더 목록을 보려는 조직 리소스의 ID로 바꿉니다.

폴더 리소스의 하위 폴더를 나열하려면 resource-manager folders list 명령어를 사용합니다.

gcloud resource-manager folders list \
  --folder FOLDER_ID

FOLDER_ID를 하위 폴더 목록을 보려는 폴더 리소스의 ID로 바꿉니다.

조직, 폴더 리소스 또는 폴더에 속한 프로젝트를 나열하려면 projects list 명령어와 filter 인수를 사용합니다.

gcloud projects list \
  --filter=" parent.id: 'RESOURCE_ID' "

RESOURCE_ID를 하위 프로젝트 목록을 보려는 조직 또는 폴더 리소스의 ID로 바꿉니다.

API

폴더를 가져오기 위한 curl 요청:

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]

FOLDER_NAME을 폴더 이름으로 바꿉니다(예: folders/123).

폴더를 나열하기 위한 curl 요청:

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/folders?parent=[PARENT_NAME]

PARENT_NAME을 폴더 생성 시의 상위 리소스 이름으로 바꿉니다(예: organizations/123 또는 folders/123).

Google Cloud CLI 사용

gcloud 명령줄 도구를 사용하여 폴더 API와 상호작용하기 위한 명령어는 gcloud resource-manager folders 명령어 그룹에서 제공합니다.

만들기

새 폴더를 만들려면 폴더 이름과 폴더를 만들 조직 리소스또는 폴더 ID를 설정하는 플래그와 함께 gcloud resource-manager folders create를 사용합니다.

gcloud resource-manager folders create \
  --display-name="Super Fantastic Folder" \
  --organization=2518

Created Folder 245321.

폴더를 보려면 보려는 폴더 ID와 함께 gcloud resource-manager folders describe를 사용합니다.

gcloud resource-manager folders describe 245321
name: folders/245321
parent: organizations/2518
display_name: Super Fantastic Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <timestamp info …>

목록

폴더를 폴더 아래 나열하려면 gcloud resource-manager folders list를 사용하여 폴더 ID를 --folder 플래그로 전달합니다. --organization 플래그를 사용하여 최상위 폴더를 조직 리소스 아래 나열할 수도 있습니다.

gcloud resource-manager folders list --folder 245321
<table output showing the folders underneath the folder with the specified ID>

gcloud resource-manager folders list --organization 2518
<table output showing folders in this Organization but not in any folder>

목록에 삭제가 요청된 폴더를 포함하려면 --show-deleted 플래그를 추가합니다.

gcloud beta resource-manager folders list --folder 245321 --show-deleted
<table output showing all the folders including the delete requested ones underneath the folder with the specified ID>

gcloud projects list 명령어를 사용하고 상위 폴더 또는 조직 리소스 ID를 --filter 플래그로 전달하여 프로젝트를 나열할 수 있습니다.

gcloud projects list --filter=" parent.id: '245321' "
<table output showing the projects underneath the resource with the specified ID>

권한과 필터가 list 명령어와 상호작용하는 방법에 대한 자세한 내용은 계층 구조의 모든 리소스 나열을 참조하세요.

지정된 쿼리와 일치하는 폴더를 검색하려면 gcloud alpha resource-manager folders search를 사용하여 --query 플래그에 조건을 전달합니다. 검색 범위는 사용자가 보기 권한을 가지고 있는 모든 폴더입니다.

gcloud alpha resource-manager folders search --query="name:vij*"
<table output showing the folders with names starting from vij eg. vijeta, vijay-folder>

gcloud alpha resource-manager folders search --query="state:DELETE_REQUESTED"
<table output showing folders for which delete has been requested>

사용자가 보기 권한을 가지는 모든 폴더는 gcloud folders search 명령어를 사용하여 표시할 수 있습니다.

gcloud folders search
<table output showing all viewable folders>

업데이트

gcloud resource-manager folders update 명령어를 사용하여 폴더를 업데이트할 수 있습니다. 현재는 폴더의 display_name 입력란만 업데이트할 수 있습니다.

gcloud resource-manager folders update \
  --display-name="Mega Incredible Folder" 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

삭제

폴더는 명령줄에서 삭제 및 삭제 취소할 수 있습니다. 사용자는 폴더를 삭제할 권한을 가지려면 폴더 관리자 또는 폴더 편집자 역할을 소유해야 합니다. 비어 있는 폴더만 삭제할 수 있습니다.

gcloud resource-manager folders delete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: DELETE_REQUESTED
create_time: <timestamp info …>
update_time: <recent timestamp info …>

gcloud resource-manager folders undelete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

프로젝트 이동

gcloud projects creategcloud projects move 명령어를 사용하여 폴더에서 프로젝트를 만들고 폴더로 이동할 수 있습니다. gcloud resource-manager folders move.를 사용해서 폴더를 이동할 수도 있습니다.

gcloud projects create --folder=245321 fancy-folder-project
project_id: fancy-folder-project
project_number: 905283
parent:
  type: "folder"
  id: 245321
other fields …

gcloud projects move --folder=245321 soon-to-be-fancy-project
project_id: soon-to-be-fancy-project
project_number: 428714
parent:
  type: "folder"
  id: 245321
other fields …

장기 실행 작업

폴더 만들기와 같은 일부 폴더 작업은 시간이 오래 걸릴 수 있습니다. 멀티태스킹을 쉽게 하기 위해 일부 폴더 명령어를 사용하면 비동기식으로 수행할 수 있습니다. 이러한 명령어는 비동기 동작을 활성화하기 위해 --async 플래그를 허용하여 작업이 완료될 때까지 기다리는 대신 장기 실행 작업을 즉시 반환하도록 합니다. gcloud beta resource-manager operations describe 명령어를 사용하여 이 작업을 폴링할 수 있습니다. 현재 folders create 명령어와 folders move 명령어만 비동기 사용이 허용됩니다.

gcloud resource-manager folders create \
  --display-name="Awe-Inspiring Async Folder" \
  --organization=2518 \
  --async

name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: false

[wait for some time …]

gcloud beta resource-manager operations describe fc.8572
name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: true
response:
  name: folders/6428
  parent: organizations/2518
  display_name: Awe-Inspiring Async Folder
  lifecycle_state: ACTIVE
  create_time: <recent timestamp info …>
  update_time: <recent timestamp info …>