「aws_sns_topic_subscription」の「エンドポイント」の補間文字列で変数を使用するにはどうすればよいですか?

アンソニー・コン

ラムダ関数名に変数を使用したい。例えば:

variable "lambda_function_name" {
  default = "my-project-lambda-func"
}


resource "aws_lambda_function" "${var.lambda_function_name}" {
  filename         = "${data.archive_file.package-zip.output_path}"
  function_name    = "this_is_a_test"
  handler          = "lambda_function.simple_handler"
  source_code_hash = "${data.archive_file.package-zip.output_base64sha256}"
  runtime          = "python3.7"
  tags             = "${var.tags}"
  timeout          = 300
}

変数を使用してSNSサブスクリプションを作成したい:

resource "aws_sns_topic_subscription" "call_lambda_by_sns" {
  topic_arn = "${module.myproject_event_sns.arn}"
  protocol  = "lambda"
  endpoint  = "${aws_lambda_function.${var.lambda_rotate_db_function_name}.arn}"
}

terraform validateを実行すると、このエラーがスローされます

aws_sns_topic_subscription [call_lambda_by_sns]の設定の読み取りエラー:1:23の解析エラー:「}」が必要ですが、無効なシーケンス「$」が見つかりました

だから私は別の方法を試しました:

resource "aws_sns_topic_subscription" "call_lambda_by_sns" {
  topic_arn = "${module.myproject_event_sns.arn}"
  protocol  = "lambda"
  endpoint  = "aws_lambda_function.${var.lambda_rotate_db_function_name}.arn"
}

ここで、エンドポイントラインがこのエラーを引き起こします。

Error: Error parsing address 'aws_lambda_function.${var.lambda_rotate_db_function_name}': invalid resource address "aws_lambda_function.${var.lambda_rotate_db_function_name}"

では、ここで変数を使用できるようにするための構文は何ですか?

SomeGuyOnAComputer

これは、いくつかの問題を修正した後に完了することができます

  • リソース名に補間を使用できないため、変更してください

    resource "aws_lambda_function" "${var.lambda_function_name}" {
    

    ハードコードされた一般的な値に

    resource "aws_lambda_function" "default" {
    
  • 補間内で補間を使用できないため、変更してください

    endpoint  = "${aws_lambda_function.${var.lambda_rotate_db_function_name}.arn}"
    

    総称名を使用するにはdefault、上から

    endpoint  = "${aws_lambda_function.default.arn}"
    

ワーキングテラフォーム

variable "lambda_function_name" {
  default = "my-project-lambda-func"
}

resource "aws_lambda_function" "default" {
  filename         = "${data.archive_file.package-zip.output_path}"
  function_name    = "this_is_a_test"
  handler          = "lambda_function.simple_handler"
  source_code_hash = "${data.archive_file.package-zip.output_base64sha256}"
  runtime          = "python3.7"
  tags             = "${var.tags}"
  timeout          = 300
}

resource "aws_sns_topic_subscription" "call_lambda_by_sns" {
  topic_arn = "${module.myproject_event_sns.arn}"
  protocol  = "lambda"
  endpoint  = "${aws_lambda_function.default.arn}"
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ