既存の Google Cloud リソースの一括インポートとエクスポート
このページでは、config-connector bulk-export コマンドと、そのコマンドを使用して Google Cloud リソースを Config Connector の YAML ファイルにエクスポートする方法について説明します。YAML ファイルは、その後 Config Connector にインポートできます。
config-connector bulk-export は、Cloud Asset Inventory の エクスポート機能を使用して既存の Google Cloud リソースを検出します。Cloud Asset Inventory のエクスポートを提供することも、config-connector がユーザーに代わってエクスポートを実行することもできます。
Cloud Asset Inventory は JSON 構造をエクスポートします。構造ごとに、リソースの名前、アセット インベントリのタイプ、祖先リソース(プロジェクト、フォルダ、組織)があります。アセット インベントリでサポートされているタイプを確認するには、サポートされているアセットタイプを参照してください。
制限事項
すべてのリソースが bulk-export コマンドをサポートしているわけではありません。サポートされているリソースのリストを取得するには、config-connector print-resources を実行します。
始める前に
config-connectorツールを使用して Cloud Asset Inventory から直接エクスポートする場合は、gcloudで Google CloudIdentity のプロジェクトの Cloud Asset Inventory API を有効にします。gcloud services enable cloudasset.googleapis.com
一括エクスポートの例
この例では、Google Cloud CLI で PubSubTopic を作成し、Config Connector にインポートします。
Google Cloud CLI を使用して
sample-topicという名前のトピックを作成します。gcloud pubsub topics create sample-topicトピックが作成されたという確認を受け取ります。
Created topic [projects/PROJECT_ID/topics/sample-topic].この出力の
PROJECT_IDは、Google Cloud プロジェクトに置き換えられます。次のコマンドを使用して、トピックの Google Cloud リソース名を取得し、環境変数に保存します。
TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")オブジェクトを識別するために、
config-connectorツールは Cloud Asset Inventory JSON 構造を使用します。トピックのアセット JSON の構造を環境変数に保存します。TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'次のコマンドを実行して、アセットを
config-connector bulk-exportに渡します。echo ${TOPIC_ASSET} | config-connector bulk-export出力は、YAML 形式の Config Connector リソースです。
--- apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: annotations: cnrm.cloud.google.com/project-id: PROJECT_ID name: sample-topic ...この出力の
PROJECT_IDは、Google Cloud プロジェクトに置き換えられます。このリソースを、
kubectl apply -f -を使用して Config Connector に渡すことができます。リソースを直接渡すには、次のコマンドを実行します。echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl apply -f - --namespace CC_NAMESPACECC_NAMESPACE は、Config Connector がリソースを管理する名前空間に置き換えます。
Config Connector がリソースを取得します。
kubectl describeで Config Connector がリソースを管理していることを確認します。kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACECC_NAMESPACEは、Config Connector がリソースを管理する名前空間に置き換えます。
クリーンアップ
PubSubTopic は config-connector bulk-export と kubectl delete で削除できます。
echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl delete -f - --namespace CC_NAMESPACE
CC_NAMESPACE は、Config Connector がリソースを管理する名前空間に置き換えます。
インポートするリソースの検出
リソースをインポートするときに、Cloud Asset Inventory のエクスポートを実行し、config-connector bulk-export に結果を提供するか、config-connector bulk-export にエクスポートを実行させることができます。
Cloud Asset Inventory のエクスポートからのインポート
Asset Inventory のエクスポートを提供するには、エクスポートを含むローカル ファイルへのパスを指定するか、エクスポートの結果をストリームの config-connector にパイプします。
ローカル ファイルからのインポート
--input パラメータでローカル ファイルを使用して、config-connector bulk-export への Asset Inventory のエクスポートを指定できます。
config-connector bulk-export --input ASSET_INVENTORY_EXPORT
ASSET_INVENTORY_EXPORT を、Cloud Asset Inventory エクスポートのファイル名に置き換えます。
STDIN からのインポート
STDIN に Asset Inventory を提供するには、エクスポートした結果を config-connector bulk-export にパイプします。たとえば、エクスポートが export.json という名前のローカル ファイルにある場合、エクスポート パラメータを指定せずにファイルの内容を config-connector bulk-export にパイプ処理します。
cat export.json | config-connector bulk-export
STDIN での Asset Inventory のエクスポートのフィルタリング
Asset Inventory のエクスポートをフィルタリングするには、jq ツールとパイプを使用して結果を config-connector bulk-export に入力します。たとえば、ファイル EXPORT_FILE から PubSubTopic アセットのみをインポートする場合は、次のコマンドを実行します。
cat EXPORT_FILE | jq '. | select( .asset_type == "pubsub.googleapis.com/Topic" )' | config-connector bulk-export
config-connector を使用したインベントリのエクスポート
config-connector bulk-export ツールは、 Google Cloud
リソース階層からリソースをエクスポートできます。
プロジェクトのエクスポート
プロジェクトからすべてのリソースをエクスポートするには、--project パラメータを使用します。
config-connector bulk-export --project PROJECT_ID
PROJECT_ID は、実際の Google Cloud プロジェクトに置き換えます。
フォルダのエクスポート
フォルダからすべてのリソースをエクスポートするには、--folder パラメータを使用します。
config-connector bulk-export --folder FOLDER_NUMBER
FOLDER_NUMBER は、 Google Cloud フォルダ番号に置き換えます。
組織のエクスポート
組織からすべてのリソースをエクスポートするには、--organization パラメータを使用します。
config-connector bulk-export --organization ORGANIZATION_ID
ORGANIZATION_ID は、 Google Cloud 組織 ID に置き換えます。
Cloud Storage のロケーション
アセット インベントリのエクスポートの出力場所は、Cloud Storage URI です。config-connector bulk-export は、エクスポートを実行するときに、Cloud Storage バケットを使用します。デフォルトでは、config-connector bulk-export は一時バケットを作成します。バケット名を指定することもできます。
一時的な Cloud Storage バケット
--storage-key パラメータを指定しない場合、ユーザーに代わって config-connector
bulk-export が一時的な Cloud Storage バケットを作成します。バケットは、ストレージ バケットのデフォルト ロケーション(US マルチリージョン)に作成されます。そのバケットはエクスポートが完了すると削除されます。
一時的なバケットの指定
バケットを指定するには、storage-key パラメータで Cloud Storage URI を使用します。URI がバケットの名前のみの場合、エクスポート ストレージ オブジェクトの名前が生成されます。URI がストレージ オブジェクトへのフルパスの場合は、フルパスが使用されます。
config-connector bulk-export --storage-key gs://BUCKET_NAME
出力
config-connector bulk-export コマンドは、YAML 形式の Config Connector リソースを出力します。その YAML ファイルは、デフォルトで STDOUT に書き込まれます。この出力は、output オプションを使用して、ファイルに書き込むようにも指示できます。
1 つのファイルへの出力
--output パラメータを設定すると、次のいずれかに該当する場合、config-connector bulk-export はその結果を 1 つのファイルに書き込みます。
outputで指定されたファイルが存在し、regularファイルである。outputで指定されたファイルは存在せず、outputで表される親ディレクトリが存在する。
ディレクトリへの出力
--output パラメータが / で終わるディレクトリの場合、config-connector は結果を複数のファイルに書き込みます。config-connector bulk-export はリソースごとに 1 つのファイルを作成し、ファイル名はリソース名と一致します。
config-connector bulk-export --project PROJECT_ID --on-error continue --output OUTPUT_DIRECTORY/
PROJECT_ID は、実際の Google Cloud プロジェクトに置き換えます。
たとえば、プロジェクト my-project から sample ディレクトリにアセットを出力するには、次のコマンドを実行します。
config-connector bulk-export --project my-project --on-error continue --output sample/
コマンドライン オプション
config-connector bulk-export コマンドには次のオプションがあります。
config-connector bulk-export
--input FILENAME \
--output FILENAME \
--storage-key gs://BUCKET_NAME \
--project PROJECT_ID \
--folder FOLDER_NUMBER \
--organization ORGANIZATION_ID \
--oauth2-token TOKEN \
--on-error [halt | continue | ignore] \
--iam-format [policy | policymember | none] \
--filter-deleted-iam-members [true | false] \
--verbose
--input: Cloud Asset Inventory 入力ファイル。--output: 標準出力を無効にする出力ファイルのパス(省略可)。ファイルの場合、結果にはすべてのコマンド出力が含まれます。ディレクトリの場合、出力リソースごとに新しいファイルがディレクトリに追加されます。--storage-key: 一時的な Cloud Storage バケットをエクスポートの対象にします。--project:エクスポートする Google Cloud プロジェクト ID--folder: Google Cloud エクスポートするフォルダ ID--organization:エクスポートする Google Cloud 組織 ID。--oauth2-token: Google Cloud ID としての OAUTH2 トークン。デフォルトでは、config-connectorは Google Cloud CLI のデフォルト認証情報を使用します。--on-error: 回復可能なエラーが発生したときの動作を制御します。オプションは「続行」、「停止」、「無視」です。halt: エラーが発生すると実行を停止します(デフォルト)continue: リソースの処理を続行し、エラーを STDERR に出力します。ignore: リソースの処理を続行し、エラーを出力しません。
--iam-format: エクスポートにより出力される IAM リソースの種類を指定します。指定できる値は、policy(デフォルト)、policymember、noneのいずれかです。--filter-deleted-iam-members: 削除された IAM プリンシパルを除外するかどうかを指定します。trueかfalseを指定できます。デフォルト値はfalseです。--verbose: 詳細ロギングを有効にします。
次のステップ
- Config Connector が既存の Google Cloud リソースを取得する方法を確認する
- Cloud Asset Inventory と Cloud Storage へのアセットのエクスポートについて学習する。
- Config Connector がサポートするリソースについて学習する。