Amazon web services 将cloudformation无服务器模板转换为Terraform的最佳方法
我正在尝试将Amazon web services 将cloudformation无服务器模板转换为Terraform的最佳方法,amazon-web-services,terraform,amazon-cloudformation,serverless-framework,Amazon Web Services,Terraform,Amazon Cloudformation,Serverless Framework,我正在尝试将无服务器框架YML文件转换为Terraform脚本 这是我第一次使用terraform,我对infra也没有太多经验 我的地形有一些错误,但我的问题更多的是关于我的方法 有没有更好/更简单/更智能的方法在Terraform中编写相同的无服务器yml 也许有一些模块可以让我的生活更轻松。 地形 # Lambda invoke function role data data "aws_iam_policy_document" "lambda_invoke_function_role" {
无服务器框架
YML文件转换为Terraform脚本
这是我第一次使用terraform
,我对infra也没有太多经验
我的地形有一些错误,但我的问题更多的是关于我的方法
有没有更好/更简单/更智能的方法在Terraform中编写相同的无服务器yml
也许有一些模块可以让我的生活更轻松。
地形
# Lambda invoke function role data
data "aws_iam_policy_document" "lambda_invoke_function_role" {
version = "2012-10-17"
statement {
sid = ""
effect = "Allow"
actions = ["sts:AssumeRole"]
principals {
service = "lambda.amazonaws.com"
}
}
}
# Lambda ec2
data "aws_iam_policy_document" "ec2_lambda_policies_role" {
version = "2012-10-17"
statement {
sid = ""
effect = "Allow"
actions = [
"ec2:CreateNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:DetachNetworkInterface",
"ec2:DeleteNetworkInterface"
]
resources = "*"
}
}
# Lambda allow invoke
data "aws_iam_policy_document" "allow_invoke_role" {
version = "2012-10-17"
statement {
sid = ""
effect = "Allow"
actions = [
"lambda:InvokeFunction"
]
resources = "*"
}
}
# Lambda invoke function role
resource "aws_iam_role" "lambda_invoke_function_role" {
name = "lambdaRole"
assume_role_policy = "${data.aws_iam_policy_document.lambda_invoke_function_role.json}"
}
# EC2 ##############################################################################
resource "aws_iam_policy" "ec2_lambda_policies_policy" {
name = "ec2LambdaPolicy"
assume_role_policy = "${data.aws_iam_policy_document.ec2_lambda_policies_role.json}"
}
resource "aws_iam_role_policy_attachment" "ec2_lambda_policies_policy_attachment" {
role = "${aws_iam_role.lambda_invoke_function_role.name}"
policy_arn = "${aws_iam_policy.ec2_lambda_policies_policy.arn}"
}
###############################################################################
# Allow Invoke #####################################################################
resource "aws_iam_policy" "allow_invoke_policy" {
name = "allowInvokePolicy"
assume_role_policy = "${data.aws_iam_policy_document.allow_invoke_role.json}"
}
resource "aws_iam_role_policy_attachment" "allow_invoke_policy_attachment" {
role = "${aws_iam_role.lambda_invoke_function_role.name}"
policy_arn = "${aws_iam_policy.allow_invoke_policy.arn}"
}
###############################################################################
# Lambda invoke function role policy attachment
resource "aws_iam_role_policy_attachment" "aws_lambda_basic_execution_role" {
role = "${aws_iam_role.lambda_invoke_function_role.name}"
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
}
# Lambda invoke function role policy attachment
resource "aws_iam_role_policy_attachment" "aws_lambda_vpc_access_execution_role" {
role = "${aws_iam_role.lambda_invoke_function_role.name}"
policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
}
无服务器YML(云形成)
你可能想看看哪一种将云层转化为地形
cf-to-tf --stack foobarbaz config | json2hcl | cf-to-tf clean-hcl | terraform fmt -
这将从AWS导入堆栈
foobarbaz
,并将其转换为terraform,然后将其打印到标准输出。您可能想看看哪个将cloudformation转换为terraform
cf-to-tf --stack foobarbaz config | json2hcl | cf-to-tf clean-hcl | terraform fmt -
这将从AWS导入您的堆栈
foobarbaz
,并将其转换为terraform并将其打印到stdout。足够公平。我会更新这个问题。我正在处理错误。这就是为什么我想找到更好的方法。这似乎是很平常的事。我做了一些研究,试图找到流行的模块,但没有幸运地删除任何与错误相关的东西,以避免误解。我会更新这个问题。我正在处理错误。这就是为什么我想找到更好的方法。这似乎是很平常的事。我做了一些研究,试图找到流行的模块,但没有幸运地删除任何与错误相关的东西,以避免误解。我以前没有想过类似的事情。这是一个很好的观点,甚至可以理解我的infra应该如何在terraform中设置。我将尝试转换400多行云信息。非常好的叫声。我以前没想过这样的事。这是一个很好的观点,甚至可以理解我的infra应该如何在terraform中设置。我将尝试转换400多行云信息。非常好的叫声。