tencent cloud

クラウドAPIの呼び出し
最終更新日:2025-07-31 16:31:36
クラウドAPIの呼び出し
最終更新日: 2025-07-31 16:31:36

概要

CloudAppは、アプリケーションプロセスが安全かつ制御された方法でクラウドAPIを呼び出し、顧客のクラウドリソースにアクセスまたは操作するためのソリューションを提供します。一般的なシナリオは次のとおりです:
クラウド管理系ソフトウェア
パブリッククラウドのSaaSを呼び出してソフトウェア機能(例:SMS)を実現する
自動でスケールアウト・インする
ソフトウェア権限付与の検証


操作手順

一、権限ポリシーを宣言する

package.yamlで権限ポリシーを宣言し、アプリケーションが呼び出すクラウドAPIの範囲を制限します。CloudAppは、インストールパッケージをインストールする際に、宣言された権限ポリシーに基づいてCAMポリシーを生成します。したがって、権限ポリシーの宣言に含まれていないAPIは、プロセス内で呼び出す権限がありません。
# package.yaml
role:
policy:
version: "2.0"
statement:
- action:
- cloudapp:VerifyLicense
- cvm:DescribeInstances
resource: "*"
effect: allow

二、ロール変数の使用を宣言する

variable.tf でロール変数を宣言します:
# variable.tf variable "cloudapp_cam_role" {}

三、割り当てられたロール名をプロセス内へ注入する

CloudAppは、アプリケーションのインストール時に生成されたソフトウェアのランタイムロールをTerraform変数としてインストールパッケージに渡します。インストールパッケージは、クラウドリソースを宣言する際に、ロール名の変数cloudapp_cam_roleをプロセスの環境変数または設定ファイルに注入する必要があります。以下はCVMとコンテナの例です。
CVMの例
コンテナサンプル

方法1:環境変数に注入する

CVM宣言のユーザースクリプトで環境変数を追加することが可能です。
# deployment.tf
resource "tencentcloud_instance" "demo_cvm" {
# 注意:CAMロールをCVMインスタンスのランタイムロールに紐付ける必要があります。
cam_role_name = var.cloudapp_cam_role
user_data_raw = <<-EOT
#!/bin/bash
# ロール名を環境変数へエクスポートする
export CLOUDAPP_CAM_ROLE=${var.cloudapp_cam_role}
# 起動プロセスは環境変数からロール名を読み取ることが可能です
node main.js
EOT
}

方法2:設定ファイルに注入する

ロール名を設定ファイルに注入することもできます。
# deployment.tf
resource "tencentcloud_instance" "demo_cvm" {
#注意:CVMのインスタンスランタイムロールにCAMロールを紐付ける必要があります。
cam_role_name = var.cloudapp_cam_role
user_data_raw = <<-EOT
#!/bin/bash
# ロール名を設定ファイルへエクスポートする
echo "${var.cloudapp_cam_role}" >> /usr/local/.cloudapp_cam_role
#プロセスを起動する際、コンフィグファイル /usr/local/.cloudapp_cam_role からロール名を読み取ることができます。
node main.js
EOT
}

まず、変数をChart変数として渡す

まず、TerraformでWorkerに対応するクラウドホストのランタイムロールを紐付けることを宣言し、同時に変数をHelmのChart Valuesに渡します。
# <deployment.tf>
resource "tencentcloud_kubernetes_cluster" "tke-cluster1" {
worker_config {
# その他のworker_configの内容は省略しています。
cam_role_name = var.cloudapp_cam_role
}
}
resource "cloudapp_helm_app" "helm_charts" {
chart_values = {
CAM_ROLE = var.cloudapp_cam_role # ロール変数名をここに注入します。
}
}

方法1:Chart変数をStatefulSetの環境変数として使用する

Helm Chartでは、Chart変数をワークロードで参照します:
# <values.yaml>
# CAMロール名。クラウドAPIの呼び出しに必要な一時キーを取得するために使用され、tf宣言から注入されます。
CAM_ROLE: ""

# <templates/statefulset.yaml>
kind: StatefulSet
spec:
spec:
containers:
- name: "my-container"
image: {{ quote .Values.SERVER_IMAGE }}
env:
# CAM_ROLEをコンテナの環境変数に付与します。
- name: CAM_ROLE
value: {{ quote .Values.CAM_ROLE }}
コンテナ起動後、環境変数CAM_ROLEはロール名を含みます。

方法2:変数をConfigMapに書き込み、StatefulSetで使用する

HelmチャートでConfigmapを宣言し、ワークロードで参照します。
# <values.yaml>
# CAMロール名、クラウドAPIを呼び出すための一時的なキーを取得するために使用され、tf宣言から注入されます。
CAM_ROLE: ""

# <configmap.yaml>
# ConfigMapを宣言する
kind: ConfigMap
metadata:
name: cloudapp-config
data:
.cloudapp_cam_role: {{ quote .Values.CAM_ROLE }}

# <templates/statefulset.yaml>
kind: StatefulSet
spec:
template:
spec:
containers:
- name: "my-container"
image: {{ quote .Values.SERVER_IMAGE }}
valueMounts:
- name: cloudapp-cam-role
mountPath: /usr/local/cloudapp
subPath: .cloudapp_cam_role
volumes:
- name: cloudapp-cam-role
configMap:
name: cloudapp-config
これにより、コンテナ起動後、プロセスは/usr/local/cloudapp/.cloudapp_cam_roleからCAMロールを読み取ることができます。

四、 ロールの一時キーを取得する

プロセス内でロール名を取得した後、HTTPリクエストによってロールの一時キーを取得できます。
リクエストのCURL例は次の通りです:
curl http://metadata.tencentyun.com/meta-data/cam/security-credentials/$CLOUDAPP_CAM_ROLE
応答結果は次の通りです:
{
"TmpSecretId": "(RESPONSED SECRET ID)",
"TmpSecretKey": "(RESPONSED SECRET KEY)",
"ExpiredTime": 1658866289,
"Expiration": "2022-07-26T20:11:29Z",
"Token": "(RESPONSED TOKEN)",
"Code": "Success"
}

五、一時的なキーを利用してクラウドAPIを呼び出す

上記の一時キーを使用すると、クラウドAPIを呼び出すことができます。クラウドAPIを呼び出すための認証資格情報には、SecretId、SecretKey、Tokenが含まれる必要があります。
各言語の呼び出し方法については、対応するSDKドキュメントを参照してください:

この記事はお役に立ちましたか?
営業担当者に お問い合わせ いただくか チケットを提出 してサポートを求めることができます。
はい
いいえ

フィードバック