UPD: moved apigw-cloudwatch role outside of this module
This commit is contained in:
parent
7383f66749
commit
cd170c0f78
@ -26,3 +26,30 @@ data "archive_file" "lambda" {
|
|||||||
type = "zip"
|
type = "zip"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# apigateway account settings, needed for first apigateway deployment only
|
||||||
|
resource "aws_api_gateway_account" "settings" {
|
||||||
|
cloudwatch_role_arn = aws_iam_role.apigw-logging-role.arn
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_iam_role" "apigw-logging-role" {
|
||||||
|
name = "ApiGatewayLoggingRole"
|
||||||
|
assume_role_policy = data.aws_iam_policy_document.apigw-logging-role.json
|
||||||
|
}
|
||||||
|
|
||||||
|
data "aws_iam_policy_document" "apigw-logging-role" {
|
||||||
|
statement {
|
||||||
|
effect = "Allow"
|
||||||
|
|
||||||
|
principals {
|
||||||
|
type = "Service"
|
||||||
|
identifiers = ["apigateway.amazonaws.com"]
|
||||||
|
}
|
||||||
|
|
||||||
|
actions = ["sts:AssumeRole"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_iam_role_policy_attachment" "apigw-cloudwatch" {
|
||||||
|
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
|
||||||
|
role = aws_iam_role.apigw-logging-role.id
|
||||||
|
}
|
||||||
|
@ -82,61 +82,6 @@ resource "aws_api_gateway_method_settings" "apigw-method-settings" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# apigateway account setting
|
|
||||||
data "aws_iam_roles" "check-if-cwl-role-exists" {
|
|
||||||
name_regex = "^ApiGatewayLoggingRole$"
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "aws_api_gateway_account" "settings" {
|
|
||||||
count = length(data.aws_iam_roles.check-if-cwl-role-exists.arns) >= 1 ? 0 : 1
|
|
||||||
cloudwatch_role_arn = aws_iam_role.apigw-logging-role[0].arn
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "aws_iam_role" "apigw-logging-role" {
|
|
||||||
count = length(data.aws_iam_roles.check-if-cwl-role-exists.arns) >= 1 ? 0 : 1
|
|
||||||
name = "ApiGatewayLoggingRole"
|
|
||||||
assume_role_policy = data.aws_iam_policy_document.apigw-logging-role.json
|
|
||||||
}
|
|
||||||
|
|
||||||
data "aws_iam_policy_document" "apigw-logging-role" {
|
|
||||||
statement {
|
|
||||||
effect = "Allow"
|
|
||||||
|
|
||||||
principals {
|
|
||||||
type = "Service"
|
|
||||||
identifiers = ["apigateway.amazonaws.com"]
|
|
||||||
}
|
|
||||||
|
|
||||||
actions = ["sts:AssumeRole"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
data "aws_iam_policy_document" "cloudwatch" {
|
|
||||||
statement {
|
|
||||||
effect = "Allow"
|
|
||||||
|
|
||||||
actions = [
|
|
||||||
"logs:CreateLogGroup",
|
|
||||||
"logs:CreateLogStream",
|
|
||||||
"logs:DescribeLogGroups",
|
|
||||||
"logs:DescribeLogStreams",
|
|
||||||
"logs:PutLogEvents",
|
|
||||||
"logs:GetLogEvents",
|
|
||||||
"logs:FilterLogEvents",
|
|
||||||
]
|
|
||||||
|
|
||||||
resources = ["*"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "aws_iam_role_policy" "cloudwatch" {
|
|
||||||
count = length(data.aws_iam_roles.check-if-cwl-role-exists.arns) >= 1 ? 0 : 1
|
|
||||||
name = "AllowLoggingFromApiGateway"
|
|
||||||
role = aws_iam_role.apigw-logging-role[0].id
|
|
||||||
policy = data.aws_iam_policy_document.cloudwatch.json
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Cloudwatch log group path: API-Gateway-Execution-Logs_{rest-api-id}/{stage_name}
|
# Cloudwatch log group path: API-Gateway-Execution-Logs_{rest-api-id}/{stage_name}
|
||||||
resource "aws_cloudwatch_log_group" "this" {
|
resource "aws_cloudwatch_log_group" "this" {
|
||||||
name = "API-Gateway-Execution-Logs_${aws_api_gateway_rest_api.api.id}/${var.stage-name}"
|
name = "API-Gateway-Execution-Logs_${aws_api_gateway_rest_api.api.id}/${var.stage-name}"
|
||||||
@ -145,6 +90,12 @@ resource "aws_cloudwatch_log_group" "this" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# lambda function
|
# lambda function
|
||||||
|
resource "aws_cloudwatch_log_group" "lambda-logs" {
|
||||||
|
name = "/aws/lambda/${var.name}-lambda-function"
|
||||||
|
retention_in_days = var.cloudwatchlog-retention
|
||||||
|
kms_key_id = var.cwl-cmk-key-id
|
||||||
|
}
|
||||||
|
|
||||||
resource "aws_lambda_function" "function" {
|
resource "aws_lambda_function" "function" {
|
||||||
filename = var.lambda-archive-file
|
filename = var.lambda-archive-file
|
||||||
function_name = "${var.name}-lambda-function"
|
function_name = "${var.name}-lambda-function"
|
||||||
|
Loading…
Reference in New Issue
Block a user