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

バックエンドタイプ: oss

Alibaba Cloud OSSの指定されたバケット内の指定されたキーとして状態を保存します。このバックエンドは、Alibaba Cloud Table Storeを介した状態のロックと整合性チェックもサポートしており、tablestore_tableフィールドを既存の TableStore テーブル名に設定することで有効にできます。

このバックエンドは、TableStore を介した状態のロックをサポートしています。

設定例

コードブロック
terraform {
backend "oss" {
bucket = "bucket-for-tofu-state"
prefix = "path/mystate"
key = "version-1.tfstate"
region = "cn-beijing"
tablestore_endpoint = "https://tofu-remote.cn-hangzhou.ots.aliyuncs.com"
tablestore_table = "statelock"
}
}

これは、bucket-for-tofu-stateという名前の作成済みのOSSバケットtofu-remoteという名前のOTSインスタンス、およびstatelockという名前のOTS TableStoreがあることを前提としています。OpenTofuの状態は、ファイルpath/mystate/version-1.tfstateに書き込まれます。TableStoreには、LockIDという名前のタイプがStringのプライマリキーが必要です。

データソースの設定

別の構成でOSSリモート状態を使用するには、terraform_remote_stateデータソースを使用します。

コードブロック
terraform {
backend "oss" {
bucket = "remote-state-dns"
prefix = "mystate/state"
key = "terraform.tfstate"
region = "cn-beijing"
}
}

terraform_remote_stateデータソースは、参照されたリモート状態に定義されたすべてのルート出力を返します。出力例は次のようになります。

コードブロック
data "terraform_remote_state" "network" {
backend = "oss"
config = {
bucket = "remote-state-dns"
key = "terraform.tfstate"
prefix = "mystate/state"
region = "cn-beijing"
}
outputs = {}
workspace = "default"
}

設定変数

次の構成オプションまたは環境変数がサポートされています。

  • access_key - (オプション) Alibaba Cloudアクセスキー。環境変数ALICLOUD_ACCESS_KEYおよびALICLOUD_ACCESS_KEY_IDをサポートしています。

  • secret_key - (オプション) Alibaba Cloudシークレットアクセスキー。環境変数ALICLOUD_SECRET_KEYおよびALICLOUD_ACCESS_KEY_SECRETをサポートしています。

  • security_token - (オプション) STSアクセストークン。環境変数ALICLOUD_SECURITY_TOKENをサポートしています。

  • ecs_role_name - (オプション、0.12.14以降で使用可能) API操作のためにECSインスタンスにアタッチされたRAMロール名。Alibaba Cloudコンソールの「アクセス制御」セクションから取得できます。

  • region - (オプション) OSSバケットのリージョン。環境変数ALICLOUD_REGIONおよびALICLOUD_DEFAULT_REGIONをサポートしています。

  • endpoint - (オプション) OSS APIのカスタムエンドポイント。環境変数ALICLOUD_OSS_ENDPOINTおよびOSS_ENDPOINTをサポートしています。

  • bucket - (必須) OSSバケットの名前。

  • prefix - (オプション) ステートファイルが保存されるパスディレクトリ。デフォルトは "env:" です。

  • key - (オプション) ステートファイルの名前。デフォルトはterraform.tfstateです。

  • tablestore_endpoint / ALICLOUD_TABLESTORE_ENDPOINT - (オプション) TableStore APIのカスタムエンドポイント。

  • tablestore_table - (オプション) 状態ロックと整合性のためのTableStoreテーブル。テーブルには、LockIDという名前のタイプがStringのプライマリキーが必要です。

  • sts_endpoint - (オプション、1.0.11以降で使用可能) AliCloud Security Token Service (STS) APIのカスタムエンドポイント。環境変数ALICLOUD_STS_ENDPOINTをサポートしています。

  • encrypt - (オプション) ステートファイルのサーバー側暗号化を有効にするかどうか。trueの場合、OSSは'AES256'暗号化アルゴリズムを使用してステートファイルを暗号化します。

  • acl - (オプション) ステートファイルに適用されるオブジェクトACL

  • shared_credentials_file - (オプション、0.12.8以降で使用可能) これは、共有認証情報ファイルへのパスです。ALICLOUD_SHARED_CREDENTIALS_FILE環境変数からソースを取得することもできます。これが設定されておらず、プロファイルが指定されている場合は、~/.aliyun/config.jsonが使用されます。

  • profile - (オプション、0.12.8以降で使用可能) これは、共有認証情報ファイルで設定されているAlibaba Cloudプロファイル名です。ALICLOUD_PROFILE環境変数からソースを取得することもできます。

  • assume_role_role_arn - (オプション、1.1.0以降で使用可能) 引き受けるロールのARN。ARNが空の文字列に設定されている場合、ロールスイッチングは実行されません。環境変数ALICLOUD_ASSUME_ROLE_ARNをサポートしています。OpenTofuは、提供された認証情報を持つアカウントで構成を実行します。

  • assume_role_policy - (オプション、1.1.0以降で使用可能) 一時的な認証情報に適用するより制限的なポリシー。これにより、結果の一時的なセキュリティ認証情報の権限をさらに制限できます。このポリシーを使用して、引き受けられるロールの権限を超える権限を付与することはできません。

  • assume_role_session_name - (オプション、1.1.0以降で使用可能) ロールを引き受けるときに使用するセッション名。省略した場合、'tofu' がセッション名としてAssumeRole呼び出しに渡されます。環境変数ALICLOUD_ASSUME_ROLE_SESSION_NAMEをサポートしています。

  • assume_role_session_expiration - (オプション、1.1.0以降で使用可能) ロール引き受けのために確立されたセッションが期限切れになるまでの時間。有効な値の範囲: [900-3600]秒。デフォルトは3600(この場合、Alibaba Cloudは独自のデフォルト値を使用します)。環境変数ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATIONをサポートしています。

  • assume_role - (1.1.0+で非推奨、0.12.6+で利用可能) ロールARNが指定された場合、提供されたクレデンシャルを使用してこのロールをAssumeしようとします。assume_role_role_arn が指定されている場合は無視されます。

    assume_role_* オプションをフラット化するために非推奨となりました。

    • role_arn - (必須) AssumeするロールのARN。ARNが空文字列に設定されている場合、ロールの切り替えは行いません。環境変数 ALICLOUD_ASSUME_ROLE_ARN をサポートします。OpenTofu は、提供されたクレデンシャルを持つアカウント上で構成を実行します。

    • policy - (オプション) 一時的なクレデンシャルに適用する、より制限的なポリシー。これにより、結果として得られる一時的なセキュリティクレデンシャルの権限をさらに制限する方法が提供されます。このポリシーを使用して、Assumeされるロールの権限を超える権限を付与することはできません。

    • session_name - (オプション) ロールをAssumeする際に使用するセッション名。省略した場合、'tofu' がセッション名として AssumeRole 呼び出しに渡されます。環境変数 ALICLOUD_ASSUME_ROLE_SESSION_NAME をサポートします。

    • session_expiration - (オプション) ロールをAssumeするための確立されたセッションが期限切れになるまでの時間。有効な値の範囲: [900-3600] 秒。デフォルトは3600(この場合、Alibaba Cloudは独自のデフォルト値を使用します)。環境変数 ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION をサポートします。