我有 6 个子网,我想从中过滤 3 个子网匹配子字符串internal并在 rds 中使用。
标签名称有内部词,并希望以此为基础进行过滤。
有人可以帮我吗?
data "aws_vpc" "vpc_nonprod-sctransportationops-vpc" {
tags {
Name = "vpc_nonprod-sctransportationops-vpc"
}
}
data "aws_subnet_ids" "all" {
vpc_id = "${data.aws_vpc.vpc_nonprod-sctransportationops-vpc.id}"
}
output "aws_subnet_ids" {
value = "${data.aws_subnet_ids.all.ids}"
}
# 6 subnets
# Now look up details for each subnet
data "aws_subnet" "filtered_subnets" {
count = "${length(data.aws_subnet_ids.all.ids)}"
id = "${data.aws_subnet_ids.all.ids[count.index]}"
filter {
name = "tag:Name"
values = ["*internal*"]
}
}
Run Code Online (Sandbox Code Playgroud)
一些标签名称有internal子串
需要获取标签名称具有内部子字符串的所有子网ID
values = ["*"]6但是,返回IDvalues = ["any …
我一直在使用以下内容在 Azure 存储中为 terraform 成功创建后端状态文件,但由于某种原因它停止工作。我已经为存储回收了密码,尝试了两个密钥并每次都得到相同的错误
后端.tf
terraform {
backend "azurerm" {
storage_account_name = "terraformstorage"
resource_group_name = "automation"
container_name = "terraform"
key = "testautomation.terraform.tfstate"
access_key = "<storage key>"
}
}
Run Code Online (Sandbox Code Playgroud)
返回错误
terraform init 正在
初始化后端...
成功配置后端“azurerm”!除非后端配置更改,否则 Terraform 将自动使用此后端。
错误刷新状态:存储:服务返回错误:StatusCode=403,ErrorCode=AuthenticationFailed,ErrorMessage=服务器无法验证请求。确保 Authorization 标头的值形成正确,包括签名。RequestId:665e0067-b01e-007a-6084-97da67000000
时间:2018-12-19T10:18:18.7148241Z, RequestInitiated=2018 年 12 月 19 日星期三 10:18:186060707007000000000000000000000000000000008000008G API 版本=, QueryParameterName=, QueryParameterValue=
任何想法我做错了什么?
我正在设置一个 terraform 模块来创建一个 Aurora 集群。
我需要有一个跨区域复制的选项,所以我需要决定与源区域相关的副本区域。
有没有办法在 terraform 中做一个有条件的多选项?
我在 Azure 中有两个订阅。我们称它们为 sub-dev 和 sub-prod。在 sub-dev 下,我有用于开发的资源(在资源组 rg-dev 中)和用于生产的 sub-prod 资源(在资源组 rg-prod 中)。
现在,我只想为开发和生产只有一个状态文件。我可以这样做,因为我使用 Terraform 工作区(开发和生产)。在 sub-dev (rg-dev) 下有一个名为 tfsate 的存储帐户。它有一个容器等。Azure 后端配置如下:
terraform {
backend "azurerm" {
resource_group_name = "rg-dev"
storage_account_name = "tfstate"
container_name = "tfcontainer"
key = "terraform.tfstate"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我想申请开发环境,我必须将 Az Cli 切换到子开发环境。同样,对于生产,我将不得不使用 sub-prod。我使用 az cli 切换默认订阅:
az account set -s sub-prod
Run Code Online (Sandbox Code Playgroud)
问题是状态的存储帐户在 sub-dev 而不是 sub-prod 下。terraform init当默认订阅设置为 sub-prod 时,我会在尝试(或应用)时遇到访问错误。
Error: Failed to get existing workspaces: Error retrieving keys for Storage Account "tfstate": storage.AccountsClient#ListKeys: Failure …Run Code Online (Sandbox Code Playgroud) 在云构建中使用 terraform,但在这一步失败了
steps:
# Terraform
- id: 'configure_terraform'
name: node:10.16.3
entrypoint: "node"
args: ["./create_terraform_config.js",
"../terraform/override.tf",
"${_TERRAFORM_BUCKET_NAME}",
"${_TERRAFORM_BUCKET_PATH}"]
dir: "app/scripts"
- id: 'init_terraform'
name: hashicorp/terraform:light
args: ["init"]
dir: "app/terraform"Run Code Online (Sandbox Code Playgroud)
正在初始化后端...
成功配置后端“gcs”!除非后端配置更改,否则 Terraform 将自动使用此后端。
错误:无法获取现有工作区:查询 Cloud Storage 失败:存储:存储桶不存在
我正在尝试在我的 aws 项目上启用 CORS,该项目由API Gateway和Lambda功能组成。我正在使用GET和OPTIONS方法创建一个 API 网关。
OPTIONS旨在成为根据 aws文档启用 CORS 的模拟端点。有一个 lambda 函数 ( aws_lambda_function.app_lambda) 由方法调用GET,并且在响应标头中具有:
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
Run Code Online (Sandbox Code Playgroud)
但我仍然无法通过 CORS。
resource "aws_api_gateway_rest_api" "rest_api" {
name = "appAPIGateway"
description = "App App App"
}
resource "aws_api_gateway_resource" "rest_api_resource" {
depends_on = ["aws_api_gateway_rest_api.rest_api"]
rest_api_id = "${aws_api_gateway_rest_api.rest_api.id}"
parent_id = "${aws_api_gateway_rest_api.rest_api.root_resource_id}"
path_part = "playground"
}
resource "aws_api_gateway_method" "opt" {
rest_api_id = "${aws_api_gateway_rest_api.rest_api.id}"
resource_id = "${aws_api_gateway_resource.rest_api_resource.id}"
http_method = …Run Code Online (Sandbox Code Playgroud) 我有一个包含 Terraform Cloud 的供应管道,我们的领导层要求我们使用 Terragrunt 来提高 Terraform 代码质量。
Terragrunt 是一个很好的工具,但我没有看到任何证据表明有人在 Terraform Cloud 上成功使用过它。
任何人都可以解决这个问题吗?请只回答如果你
在创建实际的 lambda 资源之前,我需要从 URL 下载 lambda 存档文件,并且在运行 terraform destroy 时需要删除该文件。基本上是从远程 URL 创建的本地文件资源。我目前已使用如下所示的配置程序完成此null_resource操作local-exec。但是,当我运行 terraform destroy 时,这不会删除该文件。有没有更好的办法?
resource "null_resource" "lambda_jar" {
triggers = {
on_version_change = "${var.lambda_archive_version}"
}
provisioner "local-exec" {
command = "curl -o lambda.jar ${var.server_url}/${var.lambda_archive_version}.jar"
}
}
Run Code Online (Sandbox Code Playgroud) 任何人都可以参考或向我展示如何使用 Terraform 创建 AWS Lambda 触发器的示例吗?
在AWS控制台中,单击函数名称并选择配置选项卡后,您可以创建触发器,例如SNS触发器
您好,我想知道我们是否可以通过电子邮件订阅从 Terraform 添加 SNS 主题。
\n因此,使用一个 \xe2\x80\x9cTerraform apply\xe2\x80\x9d 命令可以轻松设置警报并创建 SNS 主题以将警报发送到电子邮件。
\n谢谢
\n