huawei-cloud-swr-enterprise-instance について
hcloud CLI で Huawei Cloud SWR のエンタープライズインスタンスと、関連する名前空間、レジストリ、リポジトリ、ネットワークアクセスを管理するスキルです。コンテナレジストリ運用向けで、認証情報や統計の確認にも対応しますが、一部操作はコンソールで行います。
主な機能
- 01エンタープライズインスタンスの作成・管理
- 02名前空間のスキャンと脆弱性ブロック設定
- 03インスタンス間同期レジストリの管理
- 04リポジトリとイメージ成果物の照会
- 05認証情報の取得とネットワーク設定
活用シーン
- 01組織用の SWR エンタープライズインスタンス作成
- 02名前空間でのスキャンと脆弱性ブロック有効化
- 03別インスタンスをイメージ同期先に設定
- 04Docker ログイン情報の取得や VPC エンドポイント追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-swr-enterprise-instanceインストール後、Claude Code で/huawei-cloud-swr-enterprise-instanceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-format-guide.mdcli-installation-guide.mdcommand-reference.mdcommon-pitfalls.mdcredential-configuration.mdiam-policies.mdoutput-format.mdparameter-reference.mdswr-instance-api-guide.mdtask-instance-artifacts.mdtask-instance-credentials.mdtask-instance-domains.mdtask-instance-endpoints.mdtask-instance-lifecycle.mdtask-instance-namespaces.mdtask-instance-registries.mdverification-method.mdscripts/swr_instance_helper.py詳細
Huawei Cloud SWR エンタープライズインスタンス管理
概要
このスキルでは、hcloud CLI を使用して Huawei Cloud SWR(Software Repository for Container)エンタープライズインスタンスのライフサイクルを管理できます。エンタープライズインスタンスは、セキュリティスキャン、レプリケーションポリシー、カスタムドメインのサポートなどの高度な機能を備えた、専用の分離されたコンテナレジストリ環境を提供します。
注: レプリケーションポリシーなど、一部の機能は CLI ではなく SWR エンタープライズインスタンスのコンソールから管理します。詳しくは、上記の 対象外 を参照してください。
アーキテクチャ: hcloud CLI → SWR Service API → Instance/Namespace/Registry/Repository/Artifact/Credential/Endpoint/Domain リソース
関連スキル:
huawei-cloud-swr-image-management- イメージのライフサイクル管理(基本的な SWR 名前空間、リポジトリ、タグ、認証、クォータ)huawei-cloud-swr-image-governance- イメージのガバナンス(権限、保持、共有、タグ、不変ルール)huawei-cloud-swr-image-automation- イメージの自動化操作(同期、トリガー、ドメイン)
対象外:
このスキルでは、以下の操作はサポートしていません。ユーザーからこれらの操作を依頼された場合は、その旨を伝え、適切なスキルを案内してください。
| 操作 | 代わりに使用するもの | 理由 |
|---|---|---|
| 基本(エンタープライズではない)SWR 名前空間の管理 | huawei-cloud-swr-image-management | 基本的な SWR 名前空間のライフサイクル管理 |
| イメージのプッシュ/プル(docker login/push/pull) | Docker CLI(先にこのスキルで認証情報を取得してください) | Docker CLI の操作であり、API ではありません |
| イメージのビルド | CodeArts Build、CCE、またはローカルの Docker | SWR はレジストリであり、ビルドサービスではありません |
| 名前空間/リポジトリの権限管理 | huawei-cloud-swr-image-governance | 権限ガバナンスは別のスキルです |
| 基本 SWR での保持/エージングポリシーの作成 | huawei-cloud-swr-image-governance | 基本 SWR の保持ガバナンス |
| 基本 SWR でのイメージ同期ルールの作成 | huawei-cloud-swr-image-automation | 基本 SWR の同期自動化 |
| 基本 SWR でのトリガーの作成/削除 | huawei-cloud-swr-image-automation | 基本 SWR のトリガー自動化 |
| 基本 SWR の SWR エージェンシー委任の管理 | huawei-cloud-swr-image-governance | 基本 SWR のエージェンシー委任 |
- SWR エンタープライズインスタンスの作成と管理
- セキュリティスキャンと脆弱性ブロック機能を備えたインスタンス名前空間の管理
- インスタンス間のイメージ同期用のインスタンスレジストリの設定
- インスタンスリポジトリとアーティファクトの照会および管理
- インスタンスアクセス認証情報(長期および一時)の取得
- インスタンスのネットワークアクセス(内部 VPC エンドポイント、ホワイトリストによるパブリックアクセス)の設定
- インスタンスアクセス用のカスタムドメインの管理
- インスタンスの統計情報とジョブステータスの監視
一般的なユースケース:
- 「組織用の SWR エンタープライズインスタンスを作成する」
- 「自動スキャンと脆弱性ブロックを有効にした名前空間を作成する」
- 「別のインスタンスへのイメージ同期用にレジストリを設定する」
- 「インスタンスの docker login 認証情報を取得する」
- 「VPC 内部エンドポイントまたはカスタムドメインをインスタンスに追加する」
前提条件
1. hcloud CLI の要件(必須)
- hcloud CLI がインストールされていること(バージョン >= 7.2.2)
hcloud versionを実行してインストールを確認してください- 初回使用時:プライバシーに関する声明に同意するには、
printf "y\n" | hcloud versionを実行してください
2. 認証情報の設定
hcloud CLI は 2 種類の認証情報モードに対応しています。詳しくは references/credential-configuration.md を参照してください。
クイックセットアップ(いずれかを選択):
# Mode A — Long-term AK/SK
export HUAWEI_CLOUD_AK=<your-ak>
export HUAWEI_CLOUD_SK=<your-sk>
export HUAWEI_CLOUD_REGION=cn-north-4
# Mode B — Temporary AK/SK + SecurityToken
export HUAWEI_CLOUD_AK=<your-temp-ak>
export HUAWEI_CLOUD_SK=<your-temp-sk>
export HUAWEI_CLOUD_SECURITY_TOKEN=<your-security-token>
export HUAWEI_CLOUD_REGION=cn-north-4
- セキュリティルール: AK/SK/SecurityToken の値を決して公開しないでください。
hcloud configure listを使用して、設定されているかどうかだけを確認してください。
3. SWR エンタープライズサービスの有効化(必須)
SWR エンタープライズインスタンスを作成する前に、ユーザーはまず Huawei Cloud コンソールで SWR エンタープライズサービスを有効化する必要があります。これはアカウント/リージョンごとに一度だけ行う有効化手順です。
有効化手順:
- 次の直接 URL から SWR エンタープライズインスタンスのコンソールにアクセスします:
https://console.huaweicloud.com/swr-instance- 重要:SWR エンタープライズインスタンスのコンソールは、メインコンソールのナビゲーションメニューからは利用できません。アクセスするには、この直接 URL を使用する必要があります。
- プロンプトが表示された場合は、SWR エンタープライズサービスの利用規約を確認して同意します。
- コンソールが正常に読み込まれることを確認して、サービスが有効化されていることを確認します。
- 対象リージョンで有効化できない場合、コンソールにエラーが表示されるか、サービスが一覧に表示されません。
確認:有効化後、hcloud SWR ListInstance --cli-region=<region> を実行します。サービスが有効化されている場合は、空の一覧(または既存のインスタンス)が返されます。有効化されていない場合は、エラーが返されます。
コンソールへのアクセス:
- SWR エンタープライズインスタンスのコンソール:
https://console.huaweicloud.com/swr-instance - この URL から、インスタンス管理、名前空間の設定、リポジトリの閲覧、レプリケーションポリシーの設定にアクセスできます。
- コンソールはリージョンに対応しています。URL を開いた後、右上隅で対象リージョンを選択してください。
4. IAM 権限の要件
このスキルには、SWR エンタープライズインスタンスの権限(インスタンス、名前空間、レジストリ、リポジトリ、アーティファクト、認証情報、エンドポイント、ドメイン、ジョブ、統計の各操作)が必要です。権限の完全な一覧とポリシー JSON については、IAM 権限ポリシーを参照してください。
権限エラーへの対処:
- 権限エラーが原因でコマンドが失敗した場合は、
references/iam-policies.mdを読みます。 - 必要な権限の一覧とポリシー JSON をユーザーに提示します。
- IAM コンソールでカスタムポリシーを作成し、権限を付与するようユーザーを案内します。
- 処理を一時停止し、権限が付与されたことをユーザーが確認するまで待ちます。
コアコマンド
1. インスタンスのライフサイクル
詳細なワークフローについては、タスク:インスタンスのライフサイクルを参照してください。
# Create an enterprise instance
# ⚠️ hcloud CLI CreateInstance has a known bug (duplicate --project_id parameter).
# Use the Python SDK helper script instead:
python scripts/swr_instance_helper.py create --name=my-instance --spec=swr.ee.professional \
--vpc_id=<vpc-id> --subnet_id=<subnet-id> --enterprise_project_id=0 --cli-region=cn-north-4
# Alternatively, use --cli-jsonInput (see references/common-pitfalls.md Pitfall 15)
# hcloud SWR CreateInstance --cli-jsonInput=create_instance.json --cli-region=cn-north-4
# List all instances
hcloud SWR ListInstance --cli-region=cn-north-4
# List instances with status filter
hcloud SWR ListInstance --status=Running --cli-region=cn-north-4
# Show instance details
# Show instance details
hcloud SWR ShowInstance --instance_id=<instance-id> --cli-region=cn-north-4
**Note**: `ShowInstance` does not return endpoint information. To view network access endpoints, use:
- `hcloud SWR ListInstanceInternalEndpoints --instance_id=<instance-id> --cli-region=cn-north-4` for internal VPC endpoints
- `hcloud SWR ShowInstanceEndpointPolicy --instance_id=<instance-id> --cli-region=cn-north-4` for public access status and whitelist
# View instance configuration
hcloud SWR ShowInstanceConfiguration --instance_id=<instance-id> --cli-region=cn-north-4
# Update instance configuration (anonymous access)
# Update instance configuration (anonymous access)
hcloud SWR UpdateInstanceConfiguration --instance_id=<instance-id> --anonymous_access=false --cli-region=cn-north-4
**Configuration Scope**: `UpdateInstanceConfiguration` only supports the `--anonymous_access` parameter (boolean). This is the sole instance-level configuration option available via API. Other settings (spec, VPC, encryption) are set at creation time and cannot be modified afterward.
# Delete instance (CAUTION: removes all data permanently)
hcloud SWR DeleteInstance --instance_id=<instance-id> --cli-region=cn-north-4
インスタンスの命名規則:
- 小文字で始める
- 以降は小文字、数字、またはハイフン(
-)を使用する - ハイフンを連続させない
- ハイフンで終わらせない
- 長さ:3~48文字
インスタンスの仕様オプション:swr.ee.basic(ベーシックエディション)、swr.ee.professional(プロフェッショナルエディション)
仕様とリージョンの利用可否:
- すべての仕様(フレーバー)がすべてのリージョンで利用できるわけではありません。インスタンスを作成する前に、目的の仕様が対象リージョンでサポートされていることを確認してください。
hcloud SWR ListInstance --cli-region=<region>を使用して、そのリージョンでSWRエンタープライズサービスが利用できるか確認してください。APIがエラーを返す場合、そのリージョンではサービスを利用できない可能性があります。hcloud SWR ListSyncRegions --cli-region=<region>を使用して、クロスリージョン同期でSWRサービスを利用できるリージョンを一覧表示してください。- SWRエンタープライズがサポートされている主なリージョンは、
cn-north-4、cn-north-1、cn-east-3、cn-south-1、cn-east-2、cn-southwest-2、cn-north-9、ap-southeast-1、ap-southeast-2、ap-southeast-3です。 - 仕様またはリージョンのエラーでインスタンスの作成に失敗した場合は、別の仕様またはリージョンを試してください。仕様が対象リージョンでサポートされていない場合は、エラーメッセージにその旨が示されます。
課金の詳細:
- 警告:SWRエンタープライズインスタンスを作成すると、時間単位の料金が発生します。 続行する前に、ユーザーに通知する必要があります。
--charge_mode:サポートされているのはpostPaid(オンデマンド/従量課金)のみです。前払いまたは年払い/月払いには対応していません。--spec=swr.ee.basic:ベーシックエディション — 小規模なチームに適しており、機能は限定されています。時間単位の料金は低めです。--spec=swr.ee.professional:プロフェッショナルエディション — セキュリティスキャン、レプリケーション、カスタムドメインなど、すべての機能を利用できます。時間単位の料金は高めです。- 料金はインスタンスの仕様に基づいて時間単位で発生します。前払いは不要です。インスタンスが
Running状態になると課金が開始されます。 - 課金を停止するには、
hcloud SWR DeleteInstanceでインスタンスを削除してください。削除後、課金は直ちに停止します。 - コストの追跡と配賦のために、
--enterprise_project_idを使用してインスタンスをエンタープライズプロジェクトに関連付けてください。 - 料金の詳細については、Huawei Cloud SWRの料金ページを参照するか、
https://console.huaweicloud.com/swr-instanceのSWRエンタープライズインスタンスコンソールを確認してください。
インスタンスのステータス値:Initial、Creating、Running、Unavailable
2. インスタンスの名前空間
詳細なワークフローについては、タスク:インスタンスの名前空間を参照してください。
# Create a namespace with auto-scan and vulnerability blocking
hcloud SWR CreateInstanceNamespace --instance_id=<instance-id> --namespace_name=group-dev --metadata.public=false --metadata.auto_scan=true --metadata.prevent_vul=true --metadata.severity=high --cli-region=cn-north-4
# List namespaces
hcloud SWR ListInstanceNamespaces --instance_id=<instance-id> --cli-region=cn-north-4
# List namespaces with filter
hcloud SWR ListInstanceNamespaces --instance_id=<instance-id> --public=false --limit=20 --offset=0 --cli-region=cn-north-4
# Show namespace details
hcloud SWR ShowInstanceNamespace --instance_id=<instance-id> --namespace_name=group-dev --cli-region=cn-north-4
# Update namespace (change visibility, scan settings)
hcloud SWR UpdateInstanceNamespace --instance_id=<instance-id> --namespace_name=group-dev --metadata.public=true --metadata.prevent_vul=false --cli-region=cn-north-4
# Delete namespace (CAUTION: removes all repositories under it)
hcloud SWR DeleteInstanceNamespace --instance_id=<instance-id> --namespace_name=group-dev --cli-region=cn-north-4
名前空間の命名規則:
- 小文字または数字で始める
- 以降は小文字、数字、ピリオド、アンダースコア、またはハイフンを使用する
- ピリオド、アンダースコア、ハイフンを直接つなげない
- 小文字または数字で終える
- 長さ:1~64文字
脆弱性の深刻度レベル:none、low、medium、high、critical
3. インスタンスのレジストリ(同期ターゲット)
詳細なワークフローについては、タスク:インスタンスのレジストリを参照してください。
# Create a registry (sync target for another SWR enterprise instance)
hcloud SWR CreateInstanceRegistry --instance_id=<instance-id> --name=target-instance --type=swr-pro-internal --url=<target-url> --credential.type=basic --credential.access_key=<ak> --credential.access_secret=<sk> --insecure=false --instance_id=<target-instance-id> --project_id=<target-project-id> --region_id=cn-east-3 --cli-region=cn-north-4
# Create a registry for open-source Harbor
hcloud SWR CreateInstanceRegistry --instance_id=<instance-id> --name=harbor-target --type=swr-pro --url=https://harbor.example.com --credential.type=basic --credential.access_key=<username> --credential.access_secret=<password> --insecure=false --cli-region=cn-north-4
# List registries
hcloud SWR ListInstanceRegistries --instance_id=<instance-id> --cli-region=cn-north-4
# Show registry details
hcloud SWR ShowInstanceRegistry --instance_id=<instance-id> --registry_id=<registry-id> --cli-region=cn-north-4
# Update registry
hcloud SWR UpdateInstanceRegistry --instance_id=<instance-id> --registry_id=<registry-id> --name=new-name --url=<new-url> --credential.type=basic --credential.access_key=<new-ak> --credential.access_secret=<new-sk> --insecure=false --type=swr-pro --cli-region=cn-north-4
# Delete registry
hcloud SWR DeleteInstanceRegistry --instance_id=<instance-id> --registry_id=<registry-id> --cli-region=cn-north-4
レジストリの種類:swr-pro(オープンソースのHarbor)、swr-pro-internal(別のSWRエンタープライズインスタンス)、huawei-SWR(ベーシックSWR)
ターゲットレジストリの認証情報の取得:
swr-pro-internal(別のSWRエンタープライズインスタンス)の場合:ターゲットインスタンスでCreateInstanceLtCredentialを使用して、access_key(認証情報名)とaccess_secret(認証情報のパスワード)を取得してください。huawei-SWR(ベーシックSWR)の場合:CreateInstanceTempCredentialまたはベーシックSWRのCreateAuthorizationTokenを使用して、一時的な認証情報を取得してください。swr-pro(Harbor)の場合:Harborアカウントのユーザー名とパスワードを使用してください。- 認証情報はインスタンスによって安全に保存され、レプリケーション操作にのみ使用されます。
4. インスタンスのリポジトリ
リポジトリのセクションについては、タスク:インスタンスのレジストリを参照してください。
# List repositories in instance
hcloud SWR ListInstanceRepositories --instance_id=<instance-id> --cli-region=cn-north-4
# List repositories with filter
hcloud SWR ListInstanceRepositories --instance_id=<instance-id> --namespace_id=<ns-id> --limit=20 --offset=0 --order_column=updated_at --order_type=desc --cli-region=cn-north-4
# Show repository details
hcloud SWR ShowInstanceRepository --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --cli-region=cn-north-4
# Update repository description
hcloud SWR UpdateInstanceRepository --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --description="Updated description" --cli-region=cn-north-4
# Delete repository (CAUTION: removes all artifacts)
hcloud SWR DeleteInstanceRepository --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --cli-region=cn-north-4
5. インスタンスアーティファクト(イメージバージョン)
詳細なワークフローについては、タスク:インスタンスアーティファクトを参照してください。
# List artifacts in a repository
hcloud SWR ListInstanceArtifacts --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --cli-region=cn-north-4
# List artifacts with filter
hcloud SWR ListInstanceArtifacts --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --type=IMAGE --limit=20 --offset=0 --cli-region=cn-north-4
# Show artifact details
hcloud SWR ShowInstanceArtifact --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --reference=<digest> --cli-region=cn-north-4
# Show artifact with scan overview
hcloud SWR ShowInstanceArtifact --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --reference=<digest> --with_scan_overview=true --cli-region=cn-north-4
# Get artifact build history
hcloud SWR ShowInstanceArtifactAddition --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --reference=<digest> --addition=build_history --cli-region=cn-north-4
# List artifact vulnerabilities
hcloud SWR ListInstanceArtifactVulnerabilities --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --reference=<digest> --cli-region=cn-north-4
# Start manual vulnerability scan
hcloud SWR StartManualScanning --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --reference=<digest> --cli-region=cn-north-4
# Delete artifact (CAUTION: removes the image version permanently)
hcloud SWR DeleteInstanceArtifact --instance_id=<instance-id> --namespace_name=group-dev --repository_name=my-app --reference=<digest> --cli-region=cn-north-4
アーティファクトの種類:IMAGE(コンテナイメージ)、CHART(Helm チャート)
⚠️ イメージの脆弱性スキャンに関する制限:イメージの脆弱性スキャンは、Huawei Cloud HSS(Host Security Service)に依存しています。現在、このスキルは HSS の設定や管理に対応していません。スキャン機能を利用するには、次の点にご注意ください。
- Basic エディション(
swr.ee.basic):スキャンには対応していません。Professional エディションにアップグレードしてください。- Professional エディション(
swr.ee.professional):スキャンを利用するには HSS を有効にする必要があります。まず Huawei Cloud コンソールで HSS を有効化してから、SWR エンタープライズインスタンスコンソール(https://console.huaweicloud.com/swr-instance)を使ってスキャンが正常に機能することを確認してから、自動化ワークフローで利用してください。- Professional エディションのインスタンスでスキャンに失敗する場合は、HSS サービスの状態を確認し、対象リージョンで HSS が正しく有効化されていることを確認してください。
6. インスタンスの認証情報
詳細なワークフローについては、タスク:インスタンスの認証情報を参照してください。
# Create a long-term access credential
hcloud SWR CreateInstanceLtCredential --instance_id=<instance-id> --name=my-credential --cli-region=cn-north-4
# Create a temporary access credential
hcloud SWR CreateInstanceTempCredential --instance_id=<instance-id> --cli-region=cn-north-4
# List long-term credentials
hcloud SWR ListInstanceLtCredentials --instance_id=<instance-id> --cli-region=cn-north-4
# Enable/disable a long-term credential
hcloud SWR UpdateInstanceLtCredential --instance_id=<instance-id> --credential_id=<cred-id> --enable=false --cli-region=cn-north-4
# Delete a long-term credential
hcloud SWR DeleteInstanceLtCredential --instance_id=<instance-id> --credential_id=<cred-id> --cli-region=cn-north-4
認証情報の命名規則(名前空間と同じ):小文字または数字で開始し、1~64 文字
7. インスタンスのエンドポイント(ネットワークアクセス)
詳細なワークフローについては、タスク:インスタンスのエンドポイントを参照してください。
# Create internal VPC endpoint
hcloud SWR CreateInstanceInternalEndpoint --instance_id=<instance-id> --vpc_id=<vpc-id> --subnet_id=<subnet-id> --project_id=<vpc-project-id> --cli-region=cn-north-4
# List internal endpoints
hcloud SWR ListInstanceInternalEndpoints --instance_id=<instance-id> --cli-region=cn-north-4
# Show internal endpoint details
hcloud SWR ShowInstanceInternalEndpoint --instance_id=<instance-id> --internal_endpoints_id=<endpoint-id> --cli-region=cn-north-4
# Delete internal endpoint
hcloud SWR DeleteInstanceInternalEndpoint --instance_id=<instance-id> --internal_endpoints_id=<endpoint-id> --cli-region=cn-north-4
# Enable public access
hcloud SWR CreateInstanceEndpointPolicy --instance_id=<instance-id> --enable=true --cli-region=cn-north-4
# Disable public access
hcloud SWR CreateInstanceEndpointPolicy --instance_id=<instance-id> --enable=false --cli-region=cn-north-4
# View public access status and whitelist
hcloud SWR ShowInstanceEndpointPolicy --instance_id=<instance-id> --cli-region=cn-north-4
# Update public access whitelist (full replacement)
hcloud SWR UpdateInstanceEndpointPolicy --instance_id=<instance-id> --ip_list.1.ip=10.0.0.0/8 --ip_list.1.description="Internal network" --ip_list.2.ip=192.168.0.0/16 --ip_list.2.description="VPN network" --cli-region=cn-north-4
8. インスタンスドメイン
詳細なワークフローについては、タスク:インスタンスドメインを参照してください。
# Add a custom domain
hcloud SWR AddDomainName --instance_id=<instance-id> --domain_name=registry.example.com --certificate_id=<scm-cert-id> --cli-region=cn-north-4
# List all domains
hcloud SWR ListDomainNames --instance_id=<instance-id> --cli-region=cn-north-4
# Get domain overview
hcloud SWR ShowDomainOverview --cli-region=cn-north-4
# Delete a domain (default domain cannot be deleted)
hcloud SWR DeleteDomainName --instance_id=<instance-id> --domainname_id=<domain-id> --cli-region=cn-north-4
# Update domain certificate
hcloud SWR UpdateDomainName --instance_id=<instance-id> --domainname_id=<domain-id> --certificate_id=<new-cert-id> --cli-region=cn-north-4
9. インスタンスの統計情報とジョブ
# Get instance statistics
hcloud SWR ListInstanceStatistics --instance_id=<instance-id> --cli-region=cn-north-4
# List instance jobs (async operations)
hcloud SWR ListInstanceJobs --cli-region=cn-north-4
# Show job details
hcloud SWR ShowInstanceJob --job_id=<job-id> --cli-region=cn-north-4
# Delete a job record
hcloud SWR DeleteInstanceJob --job_id=<job-id> --cli-region=cn-north-4
10. インスタンス監査ログ
SWR エンタープライズインスタンスは、ListAuditLogs API を使った組み込みの監査ログ機能(取得/削除/作成操作)を提供します。CTS への依存はありません。
hcloud SWR ListAuditLogs --instance_id=<instance-id> --project_id=<project-id> --operation=pull --cli-region=cn-north-4
# --operation: pull, delete, or create; --limit/--offset for pagination
詳細については、API ガイドを参照してください。
パラメーターリファレンス
共通パラメーター、インスタンス作成(名前、仕様、VPC、サブネット、暗号化)、名前空間(public、auto_scan、prevent_vul、severity)、レジストリ(type、url、credential)、エンドポイントの許可リストパラメーターなど、すべてのパラメーターテーブルについては、パラメーターリファレンスを参照してください。
出力形式
詳細な応答形式の例(インスタンス一覧、インスタンス詳細、名前空間一覧、内部エンドポイント一覧、ドメイン名一覧、長期認証情報)については、出力形式を参照してください。
検証
手順に沿った検証方法については、検証方法を参照してください。
ベストプラクティス
- インスタンス名と VPC:
prod-instance、dev-instanceなど、用途が分かる名前を使用します。ワークロード環境に合った VPC/サブネットを選択します - 名前空間のセキュリティ:本番環境では
auto_scan=trueとprevent_vul=trueを有効にします。本番環境ではseverity=high/critical、開発環境ではnone/lowを設定します - 認証情報:レジストリの認証情報を安全に保管し、定期的にローテーションします。CI/CD には
CreateInstanceLtCredential、一時アクセスにはCreateInstanceTempCredentialを使用します - パブリックアクセス:
UpdateInstanceEndpointPolicyでパブリックアクセスを有効にする場合は、必ず IP 許可リストを設定します。カスタムドメインの HTTPS には SCM 証明書を使用します - 削除は慎重に:インスタンスを削除すると、すべてのデータが完全に削除されます。名前空間を削除すると、すべてのリポジトリが削除されます
- インスタンス仕様:小規模チームには
swr.ee.basic、高度な機能が必要なエンタープライズにはswr.ee.professionalを使用します
パラメーターの確認
| 操作 | CLI コマンド | リスクレベル | 確認事項 |
|---|---|---|---|
| CreateInstance | hcloud SWR CreateInstance | 高 | 有料インスタンスの作成には費用が発生します。インスタンスの仕様(swr.ee.basic または swr.ee.professional)、VPC/サブネットの設定、エンタープライズプロジェクトを確認してから進めてください。 |
| UpdateInstanceConfiguration | hcloud SWR UpdateInstanceConfiguration --anonymous_access=true | 高 | 匿名アクセスを有効にすると、認証されていないユーザーがイメージをプルできるようになり、セキュリティが低下します。この設定が意図したものか確認してから進めてください。 |
| CreateInstanceEndpointPolicy | hcloud SWR CreateInstanceEndpointPolicy --enable=true | 中 | パブリックアクセスを有効にすると、インスタンスがインターネットに公開されます。アクセスを制限するには、UpdateInstanceEndpointPolicy を使って IP ホワイトリストを設定する必要があります。実行前に確認してください。 |
| DeleteInstanceLtCredential | hcloud SWR DeleteInstanceLtCredential | 中 | 認証情報を削除すると、それを使用する CI/CD パイプラインのアクセスが直ちに取り消されます。まず認証情報を無効にし(UpdateInstanceLtCredential --enable=false)、アクティブなパイプラインがないことを確認してから削除することを推奨します。 |
| CreateInstanceRegistry | hcloud SWR CreateInstanceRegistry | 中 | 同期先レジストリを作成すると、同期先レジストリの認証情報(access_key/access_secret)が保存されます。実行前に、同期先レジストリの URL と認証情報を確認してください。 |
ワークフロー
このスキルでは、SWR エンタープライズインスタンス管理の標準的なワークフローに従います。
- ⚠️ 料金の確認(必須) — いずれかの操作を実行する前に、料金が発生する可能性があることをユーザーに伝え、明示的な同意を得てください。
- インスタンスの作成には時間単位の料金が発生します:
swr.ee.basic(約¥0.35/時間)とswr.ee.professional(約¥1.05/時間)は有料の仕様です。エンタープライズインスタンスに無料枠はありません。 - ストレージ料金:エンタープライズインスタンスに保存されたイメージには OBS ストレージ料金が発生します。
- ネットワーク料金:リージョン間の同期やパブリックアクセスには、通信料金が発生する場合があります。
- ユーザーに次のように確認してください:「料金が発生する可能性があることを理解したうえで、続行しますか?(はい/いいえ)」
- ユーザーが明示的に同意した場合に限り続行してください。ユーザーが同意しない場合は、処理を停止し、操作を実行しないでください。
- インスタンスの作成には時間単位の料金が発生します:
- 前提条件の確認 — hcloud CLI がインストールされ、認証情報が設定されていることを確認します。
- インスタンスの特定 — 既存のインスタンスを一覧表示するか、情報を表示して
instance_idを取得します。 - 操作の実行 — 要求された操作(作成/更新/削除/照会)を実行します。
- 結果の検証 — 結果の状態を照会して、操作が成功したことを確認します。
- 認証情報の管理 — 書き込み操作では、返された認証情報を取得して安全に保管します。
- クリーンアップの確認 — 破壊的な操作を実行する前に、ユーザーに確認します。
KooCLIコマンド形式の標準
すべての CLI コマンドは、hcloud SWR <Operation> --param1=value1 --cli-region=<region> 形式を使用します。
主なルール:--key=value 形式を使用し、必ず --cli-region を指定してください。AK/SK を公開せず、書き込み操作の前に確認し、構造化された出力には --cli-output=json を使用してください。
既知の CLI の制限事項:CreateInstance には hcloud CLI の既知のバグがあり、--project_id パラメーターが重複します。主な方法として Python SDK ヘルパースクリプト(scripts/swr_instance_helper.py)を使用するか、代替方法として path/body セクションを指定した --cli-jsonInput を使用してください。同名のパラメーターが競合するその他のコマンド(CreateInstanceInternalEndpoint、CreateInstanceRegistry)では、--cli-jsonInput を使用できます。詳しくは よくある落とし穴(落とし穴 15)と CLI 形式ガイドを参照してください。
参考ドキュメント
- コマンドリファレンス — 例を含む hcloud SWR コマンドの完全なリファレンス
- パラメーターリファレンス — 型と説明を含むすべての API パラメーター
- SWR インスタンス API ガイド — hcloud SWR インスタンス API リファレンス
- 出力形式 — レスポンス形式の例
- 認証情報の設定 — 認証情報の設定(長期および一時的な AK/SK)
- IAM 権限ポリシー — 必要な権限とポリシー JSON
- 検証方法 — 手順に沿った検証
- よくある落とし穴 — トラブルシューティングガイド
- タスク:インスタンスのライフサイクル — インスタンスの作成/一覧表示/詳細表示/設定更新
- タスク:インスタンスの名前空間 — 名前空間の CRUD ワークフロー
- タスク:インスタンスのレジストリ — レジストリの CRUD とリポジトリ
- タスク:インスタンスのアーティファクト — アーティファクトの管理とスキャン
- タスク:インスタンスの認証情報 — 認証情報の管理ワークフロー
- タスク:インスタンスのエンドポイント — 内部アクセスとパブリックアクセスの設定
- タスク:インスタンスのドメイン — カスタムドメインの管理
- CLI インストールガイド — hcloud CLI のインストールと設定
- 受け入れ基準 — すべての操作の成功基準
注意事項
- インスタンス/名前空間/アーティファクトの削除は取り消せません — すべてのデータが完全に削除されます
- デフォルトドメインは削除できません — 削除できるのはカスタムドメインのみです
- AK/SK をハードコードしてはいけません — 環境変数のみを使用してください
- ページネーションのオフセットは limit の倍数である必要があります —
offsetは 0 またはlimitの倍数である必要があります - レジストリの credential.access_secret は機密情報です — アクセスシークレットを公開またはログに記録しないでください
よくある落とし穴
無効なインスタンス名、VPC/サブネットのエラー、インスタンス作成状態、ページネーションのオフセット規則、レジストリ認証情報の問題、ドメイン証明書の問題、パブリックアクセスのホワイトリスト形式、SWR サービスの有効化、仕様の利用可能性に関する詳しいトラブルシューティングガイドは、よくある落とし穴と解決策をご覧ください。