API Gateway
parent
ac5d8ac50e
commit
77042f4263
@ -0,0 +1,30 @@
|
|||||||
|
resource "aws_api_gateway_resource" "transponder-tracker-load" {
|
||||||
|
parent_id = aws_api_gateway_rest_api.transponder-tracker.root_resource_id
|
||||||
|
path_part = "load"
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_api_gateway_method" "transponder-tracker-load" {
|
||||||
|
authorization = "NONE"
|
||||||
|
http_method = "GET"
|
||||||
|
resource_id = aws_api_gateway_resource.transponder-tracker-load.id
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_api_gateway_integration" "transponder-tracker-load" {
|
||||||
|
http_method = aws_api_gateway_method.transponder-tracker-load.http_method
|
||||||
|
resource_id = aws_api_gateway_resource.transponder-tracker-load.id
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
type = "AWS_PROXY"
|
||||||
|
uri = module.load-lambda.invoke_arn
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_lambda_permission" "apigw_lambda_load" {
|
||||||
|
statement_id = "AllowExecutionFromAPIGateway"
|
||||||
|
action = "lambda:InvokeFunction"
|
||||||
|
function_name = module.load-lambda.function_name
|
||||||
|
principal = "apigateway.amazonaws.com"
|
||||||
|
|
||||||
|
# More: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html
|
||||||
|
source_arn = "arn:aws:execute-api:${data.aws_region.current.name}:${data.aws_caller_identity.current.id}:${aws_api_gateway_rest_api.transponder-tracker.id}/*/${aws_api_gateway_method.transponder-tracker-load.http_method}${aws_api_gateway_resource.transponder-tracker-load.path}"
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
resource "aws_api_gateway_resource" "transponder-tracker-metrics" {
|
||||||
|
parent_id = aws_api_gateway_rest_api.transponder-tracker.root_resource_id
|
||||||
|
path_part = "metrics"
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_api_gateway_method" "transponder-tracker-metrics" {
|
||||||
|
authorization = "NONE"
|
||||||
|
http_method = "GET"
|
||||||
|
resource_id = aws_api_gateway_resource.transponder-tracker-metrics.id
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_api_gateway_integration" "transponder-tracker-metrics" {
|
||||||
|
http_method = aws_api_gateway_method.transponder-tracker-metrics.http_method
|
||||||
|
resource_id = aws_api_gateway_resource.transponder-tracker-metrics.id
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
type = "AWS_PROXY"
|
||||||
|
uri = module.metrics-lambda.invoke_arn
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_lambda_permission" "apigw_lambda-metrics" {
|
||||||
|
statement_id = "AllowExecutionFromAPIGateway"
|
||||||
|
action = "lambda:InvokeFunction"
|
||||||
|
function_name = module.metrics-lambda.function_name
|
||||||
|
principal = "apigateway.amazonaws.com"
|
||||||
|
|
||||||
|
# More: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html
|
||||||
|
source_arn = "arn:aws:execute-api:${data.aws_region.current.name}:${data.aws_caller_identity.current.id}:${aws_api_gateway_rest_api.transponder-tracker.id}/*/${aws_api_gateway_method.transponder-tracker-metrics.http_method}${aws_api_gateway_resource.transponder-tracker-metrics.path}"
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
resource "aws_api_gateway_rest_api" "transponder-tracker" {
|
||||||
|
name = "transponder-tracker"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_api_gateway_deployment" "transponder-tracker" {
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
|
||||||
|
triggers = {
|
||||||
|
# NOTE: The configuration below will satisfy ordering considerations,
|
||||||
|
# but not pick up all future REST API changes. More advanced patterns
|
||||||
|
# are possible, such as using the filesha1() function against the
|
||||||
|
# Terraform configuration file(s) or removing the .id references to
|
||||||
|
# calculate a hash against whole resources. Be aware that using whole
|
||||||
|
# resources will show a difference after the initial implementation.
|
||||||
|
# It will stabilize to only change when resources change afterwards.
|
||||||
|
redeployment = sha1(jsonencode([
|
||||||
|
aws_api_gateway_resource.transponder-tracker-load.id,
|
||||||
|
aws_api_gateway_method.transponder-tracker-load.id,
|
||||||
|
aws_api_gateway_integration.transponder-tracker-load.id,
|
||||||
|
]))
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
create_before_destroy = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_api_gateway_stage" "transponder-tracker" {
|
||||||
|
deployment_id = aws_api_gateway_deployment.transponder-tracker.id
|
||||||
|
rest_api_id = aws_api_gateway_rest_api.transponder-tracker.id
|
||||||
|
stage_name = "sandbox"
|
||||||
|
}
|
Loading…
Reference in New Issue