import cdk = require("@aws-cdk/core");
import apigateway = require("@aws-cdk/aws-apigateway");
import lambda = require("@aws-cdk/aws-lambda");
interface MultistackProps extends cdk.StackProps {
stage: "staging" | "production";
functionArn: string;
domainName: string;
domainNameAliasHostedZoneId: string;
domainNameAliasTarget: string;
}
export class MuaFrontendApiGatewayStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props: MultistackProps) {
super(scope, id, props);
const domain = apigateway.DomainName.fromDomainNameAttributes(
this,
`existing-domain-${props.stage}`,
{
domainName: props.domainName,
domainNameAliasHostedZoneId: props.domainNameAliasHostedZoneId,
domainNameAliasTarget: props.domainNameAliasTarget
}
);
const api = new apigateway.RestApi(this, `api-gateway-${props.stage}`, {
restApiName: `api-gateway-${props.stage}`
});
new apigateway.BasePathMapping(this, `basePathMapping-${props.stage}`, {
domainName: domain,
restApi: api
});
const lambdaOne = lambda.Function.fromFunctionArn(
this,
`lambdaOne-${props.stage}`,
props.functionArn
);
const lambdaIntegration = new apigateway.LambdaIntegration(lambdaOne, {
contentHandling: apigateway.ContentHandling.CONVERT_TO_BINARY
});
const rootProxy = api.root.addProxy({
anyMethod: false
});
const methodOne = rootProxy.addMethod("ANY", lambdaIntegration);
new lambda.CfnPermission(this, `permission-for-lambda-${props.stage}`, {
action: "lambda:invokeFunction",
principal: "apigateway.amazonaws.com",
functionName: lambdaOne.functionArn,
sourceArn: methodOne.methodArn.toString()
});
}
}
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (1)
What is domainNameAliasTarget and where do you get it?