【作業メモ】TerraformコードとしてエクスポートできるGCPリソースを整理する

とりあえずbulk-exportでプロジェクト配下のリソースをエクスポートしたけど、
bulk-exportコマンドでエクスポートできる・できないリソースを整理。

エクスポートしたときの作業メモ

https://qiita.com/Pretzelisa/items/00ed0506dffb90e879af

https://qiita.com/Pretzelisa/items/6a6ed9cff814cdb11ce5

コマンドでエクスポートできるリソース一覧を出力して、bulk-exportできる/できないで分類。
実行日は2023/7/27。

エクスポートできるリソース

```
ArtifactRegistryRepository
BigQueryDataset
BigQueryTable
BigtableAppProfile
BigtableInstance
BigtableTable
ComputeAddress
ComputeAddress
ComputeBackendBucket
ComputeBackendService
ComputeBackendService
ComputeDisk
ComputeDisk
ComputeExternalVPNGateway
ComputeFirewall
ComputeForwardingRule
ComputeForwardingRule
ComputeHTTPHealthCheck
ComputeHTTPSHealthCheck
ComputeHealthCheck
ComputeHealthCheck
ComputeImage
ComputeInstance
ComputeInstanceGroup
ComputeInstanceTemplate
ComputeInterconnectAttachment
ComputeNetwork
ComputeNetworkEndpointGroup
ComputeNodeGroup
ComputeNodeTemplate
ComputeReservation
ComputeResourcePolicy
ComputeRoute
ComputeRouter
ComputeSSLCertificate
ComputeSSLPolicy
ComputeSecurityPolicy
ComputeSnapshot
ComputeSubnetwork
ComputeTargetHTTPProxy
ComputeTargetHTTPSProxy
ComputeTargetInstance
ComputeTargetPool
ComputeTargetTCPProxy
ComputeTargetVPNGateway
ComputeURLMap
ComputeVPNGateway
ComputeVPNTunnel
ContainerCluster
ContainerNodePool
DNSManagedZone
DNSPolicy
IAMCustomRole
IAMServiceAccount
KMSCryptoKey
KMSKeyRing
LoggingLogSink
MemcacheInstance
MonitoringAlertPolicy
PubSubSubscription
PubSubTopic
RedisInstance
Folder
Project
SecretManagerSecret
SecretManagerSecretVersion
ServiceDirectoryNamespace
Service
SourceRepoRepository
SpannerDatabase
SpannerInstance
SQLInstance
StorageBucket
```
<br>

エクスポートできないリソース
```
AccessContextManagerAccessLevel
AccessContextManagerAccessPolicy
AccessContextManagerServicePerimeter
BigQueryJob 
BigtableGCPolicy
CloudBuildTrigger
CloudIdentityGroup
ComputeNetworkPeering
ComputeProjectMetadata
ComputeRegionNetworkEndpointGroup
ComputeRouterInterface
ComputeRouterNAT
ComputeRouterPeer
ComputeSharedVPCHostProject
ComputeSharedVPCServiceProject
ComputeTargetGRPCProxy
DataflowFlexTemplateJob
DataflowJob
DNSRecordSet
FirestoreIndex
MonitoringNotificationChannel
ComputeTargetSSLProxy
PubSubSchema
ResourceManagerLien
ResourceManagerPolicy
IAMServiceAccountKey
ServiceDirectoryEndpoint
ServiceDirectoryService
ServiceNetworkingConnection
SQLDatabase
SQLSSLCert
SQLUser
StorageBucketAccessControl
StorageDefaultObjectAccessControl
StorageNotification
StorageTransferJob
```
 
<br>

## 2. サポートされていないリソースタイプを指定してエクスポートしようとしてみる

INVALIDって言われるけど、サポートしているリソース一覧のURLもくれた

https://cloud.google.com/asset-inventory/docs/supported-asset-types?hl=ja

エラーメッセージ
```
INVALID_ARGUMENT: No CONTENT_TYPE_UNSPECIFIED found that matches asset type storagetransfer.googleapis.com/Job for consumer project: xxxxxxxxxx. For a list of supported content types and asset types, see https://cloud.google.com/asset-inventory/docs/supported-asset-types
- '@type': type.googleapis.com/google.rpc.BadRequest
```

## 3. エクスポート可能なリソース一覧を表示する方法 
エクスポートできるリソースを表示
```
gcloud beta resource-config list-resource-types
```

リダイレクトして.txtに出力したのでローカルに持ってくる

cloudshellで以下コマンドを実行するとファイルをローカルにダウンロードできる
（受け渡しできるのはホームディレクトリのフォルダ・ファイルのみ）
```
cloudshell download ファイル名
```

参考

https://cloud.google.com/shell/docs/uploading-and-downloading-files?hl=ja