メインコンテンツにスキップ

バックエンドタイプ: COS

状態を、指定されたTencent Cloud Object Storage (COS) バケット内の設定可能なプレフィックスにオブジェクトとして保存します。

このバックエンドは状態のロックをサポートしています。COSバケットに状態を保存するには、以下の権限が必要です。

  • タグキーtencentcloud-terraform-lockに対するCreateTagDeleteTag、およびDescribeTags
  • 指定されたバケットのプレフィックスに対するファイルのPutGet、およびDelete

設定例

コードブロック
terraform {
backend "cos" {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-1258798060"
prefix = "tofu/state"
}
}

ここでは、bucket-for-tofu-state-1258798060という名前のCOSバケットが既に作成されていると仮定します。OpenTofuの状態は、tofu/state/terraform.tfstateファイルに書き込まれます。

データソースの設定

別の設定でCOSリモート状態を利用するには、terraform_remote_stateデータソースを使用します。

コードブロック
data "terraform_remote_state" "foo" {
backend = "cos"

config = {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-1258798060"
prefix = "tofu/state"
}
}

設定変数

以下の設定オプションまたは環境変数がサポートされています。

  • secret_id - (オプション) Tencent CloudのシークレットID。環境変数TENCENTCLOUD_SECRET_IDをサポートしています。
  • secret_key - (オプション) Tencent Cloudのシークレットキー。環境変数TENCENTCLOUD_SECRET_KEYをサポートしています。
  • security_token - (オプション) 一時アクセス認証情報のTencentCloud Security Token。環境変数TENCENTCLOUD_SECURITY_TOKENをサポートしています。
  • region - (オプション) COSバケットのリージョン。環境変数TENCENTCLOUD_REGIONをサポートしています。
  • bucket - (必須) COSバケットの名前。事前に手動で作成する必要があります。
  • prefix - (オプション) バケット内の状態ファイルを保存するディレクトリ。デフォルトは "env:" です。
  • key - (オプション) バケット内の状態ファイルを保存するパス。デフォルトはterraform.tfstateです。
  • encrypt - (オプション) 状態ファイルのサーバー側暗号化を有効にするかどうか。trueの場合、COSは「AES256」暗号化アルゴリズムを使用して状態ファイルを暗号化します。
  • acl - (オプション) 状態ファイルに適用されるオブジェクトACL。privatepublic-readが許可されます。デフォルトはprivateです。
  • accelerate - (オプション) グローバルアクセラレーションを有効にするかどうか。デフォルトはfalseです。

ロールの引き受け

ロールの引き受けが提供されている場合、OpenTofu は提供された認証情報を使用してこのロールを引き受けようとします。ロールの引き受けは、cosバックエンドブロックにassume_roleブロックを追加することで提供できます。

  • assume_role - (オプション) assume_role ブロック。指定されている場合、OpenTofu は提供された認証情報を使用してこのロールを引き受けようとします。

assume_role ブロックの詳細は以下のとおりです。

  • role_arn - (必須) 引き受けるロールのARN。TENCENTCLOUD_ASSUME_ROLE_ARNから取得できます。
  • session_name - (必須) AssumeRole呼び出しを行うときに使用するセッション名。TENCENTCLOUD_ASSUME_ROLE_SESSION_NAMEから取得できます。
  • session_duration - (必須) AssumeRole呼び出しを行うときのセッションの期間。値の範囲は0〜43200(秒)で、デフォルトは7200秒です。TENCENTCLOUD_ASSUME_ROLE_SESSION_DURATIONから取得できます。
  • policy - (オプション) AssumeRole呼び出しを行うときの、より制限的なポリシー。その内容には、principal要素を含めてはなりません。注意:構文の詳細は、ポリシー構文ロジックを参照してください。

使用方法

コードブロック
terraform {
backend "cos" {
region = "ap-guangzhou"
bucket = "bucket-for-tofu-state-{appid}"
prefix = "tofu/state"
assume_role {
role_arn = "qcs::cam::uin/xxx:roleName/yyy"
session_name = "my-session-name"
session_duration = 3600
}
}
}

さらに、これらのassume_role設定は環境変数によっても提供できます。

使用方法

コードブロック
$ export TENCENTCLOUD_SECRET_ID="my-secret-id"
$ export TENCENTCLOUD_SECRET_KEY="my-secret-key"
$ export TENCENTCLOUD_REGION="ap-guangzhou"
$ export TENCENTCLOUD_ASSUME_ROLE_ARN="qcs::cam::uin/xxx:roleName/yyy"
$ export TENCENTCLOUD_ASSUME_ROLE_SESSION_NAME="my-session-name"
$ export TENCENTCLOUD_ASSUME_ROLE_SESSION_DURATION=3600
$ tofu plan