개발하자
테라폼 - API 게이트웨이 실행 로깅을 활성화하는 방법?
Cuire
2023. 8. 24. 06:06
반응형
테라폼 - API 게이트웨이 실행 로깅을 활성화하는 방법?
질문.
테라폼으로 API 게이트웨이 단계 수준 실행 로깅을 설정하는 방법은 무엇인가요? 아직 지원되지 않습니까?
배경
API Gateway 스테이지 편집기에 구성이 있습니다. 그러나 구성 매개 변수가 있지만 설정할 매개 변수가 없는 것 같습니다.
사용할 다른 자원이 있는지 아니면 단순히 그 매개 변수가 구현되지 않았는지 궁금하다.
당신은 ...을 사용해야 한다...
resource "aws_api_gateway_method_settings" "YOUR_settings" {
rest_api_id = "${aws_api_gateway_rest_api.YOUR.id}"
stage_name = "${aws_api_gateway_stage.YOUR.stage_name}"
method_path = "*/*"
settings {
logging_level = "INFO"
data_trace_enabled = true
metrics_enabled = true
}
}
CloudWatch 로그 그룹은 다음과 같습니다
... 아마도 당신은 IAM 역할에 관한 모든 것들을 설정해야 할 것이다...
이러한 로깅 수준을 전체 "stage" 수준에서 설정하거나 stage 수준을 재정의하고 다음 예제와 같이 메서드 수준에서 정의할 수 있습니다. (여기서 "method_path" 값을 참조하십시오.)
resource "aws_api_gateway_method_settings" "s" {
rest_api_id = aws_api_gateway_rest_api.test.id
stage_name = aws_api_gateway_stage.test.stage_name
method_path =
"${aws_api_gateway_resource.test.path_part}/${aws_api_gateway_method.test.http_method}"
settings {
metrics_enabled = true
logging_level = "INFO"
}
}
다음 위치에서 찾을 수 있습니다:
참고 항목:
미래의 독자들을 위해, @dasrick이 수락한 답변에 언급된 "모든 IAM 역할에 관한 것들을 설정"하는 방법은 다음과 같습니다:
# Allow API Gateway to push logs to CloudWatch
resource "aws_api_gateway_account" "main" {
cloudwatch_role_arn = aws_iam_role.main.arn
}
resource "aws_iam_role" "main" {
name = "api-gateway-logs-role"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "main" {
role = aws_iam_role.main.name
policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs"
}
이 정책은 설명한 대로 AWS에 이미 있습니다.
반응형