44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
|
import { App, Duration, Stack } from 'monocdk';
|
||
|
import { HttpApi } from 'monocdk/aws-apigatewayv2';
|
||
|
import { LambdaProxyIntegration } from 'monocdk/aws-apigatewayv2-integrations';
|
||
|
import { PolicyStatement } from 'monocdk/aws-iam';
|
||
|
import { Runtime } from 'monocdk/aws-lambda';
|
||
|
import { PythonFunction } from 'monocdk/aws-lambda-python';
|
||
|
import { RetentionDays } from 'monocdk/aws-logs';
|
||
|
|
||
|
class EmojosStack extends Stack {
|
||
|
constructor(app: App, id: string) {
|
||
|
super(app, id);
|
||
|
|
||
|
const handler = new PythonFunction(this, 'App', {
|
||
|
entry: 'app',
|
||
|
index: 'emojos.py',
|
||
|
handler: 'handle_request',
|
||
|
runtime: Runtime.PYTHON_3_8,
|
||
|
|
||
|
environment: {
|
||
|
STRIP_STAGE_PATH: 'yes',
|
||
|
},
|
||
|
|
||
|
memorySize: 256,
|
||
|
timeout: Duration.seconds(15),
|
||
|
|
||
|
logRetention: RetentionDays.ONE_MONTH,
|
||
|
});
|
||
|
|
||
|
// allow function to redirect to its own source code
|
||
|
handler.addToRolePolicy(new PolicyStatement({
|
||
|
actions: ['lambda:GetFunction'],
|
||
|
resources: ['*'],
|
||
|
}));
|
||
|
|
||
|
new HttpApi(this, 'HttpApi', {
|
||
|
defaultIntegration: new LambdaProxyIntegration({ handler }),
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const app = new App();
|
||
|
new EmojosStack(app, 'EmojosStack');
|
||
|
app.synth();
|