Compare commits

..

No commits in common. "50dbc9380c5ff34196ac3ec4411277499a9902ea" and "a4a4f55d085c5590ed50c65c0b71b463d1a60d29" have entirely different histories.

4 changed files with 27 additions and 17 deletions

View File

@ -1,6 +1,5 @@
{
"arrowParens": "avoid",
"printWidth": 120,
"semi": true,
"singleQuote": true,
"tabWidth": 4,

View File

@ -9,7 +9,8 @@ export class JbApiAwsStack extends cdk.Stack {
const apiDomainName = DomainName.fromDomainNameAttributes(this, id, {
domainName: 'api.jessebrault.com',
domainNameAliasTarget: 'd-fax16c4l5l.execute-api.us-east-2.amazonaws.com',
domainNameAliasTarget:
'd-fax16c4l5l.execute-api.us-east-2.amazonaws.com',
domainNameAliasHostedZoneId: 'ZOJJZC49E0EPZ'
});

View File

@ -1,5 +1,13 @@
import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
import { SendEmailCommand, SESClient, SESClientConfig } from '@aws-sdk/client-ses';
import {
APIGatewayProxyEvent,
APIGatewayProxyResult,
Context
} from 'aws-lambda';
import {
SendEmailCommand,
SESClient,
SESClientConfig
} from '@aws-sdk/client-ses';
interface ContactRequest {
name: string;
@ -21,7 +29,10 @@ const sesClient = new SESClient({
region: 'us-east-2'
} satisfies SESClientConfig);
export async function handler(event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult> {
export async function handler(
event: APIGatewayProxyEvent,
context: Context
): Promise<APIGatewayProxyResult> {
if (event.body === null) {
return {
statusCode: 400,
@ -31,7 +42,9 @@ export async function handler(event: APIGatewayProxyEvent, context: Context): Pr
};
}
const { name, email, institution, message } = JSON.parse(event.body) as ContactRequest;
const { name, email, institution, message } = JSON.parse(
event.body
) as ContactRequest;
const errors: ValidationError[] = [];
// name

View File

@ -1,8 +1,12 @@
import { Construct } from 'constructs';
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { BasePathMapping, IDomainName, LambdaIntegration, RestApi } from 'aws-cdk-lib/aws-apigateway';
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
import {
BasePathMapping,
IDomainName,
LambdaIntegration,
RestApi
} from 'aws-cdk-lib/aws-apigateway';
export interface ContactConstructProps {
apiDomainName: IDomainName;
@ -27,15 +31,8 @@ export class ContactConstruct extends Construct {
runtime: lambda.Runtime.NODEJS_24_X
});
const contactIntegration = new LambdaIntegration(contactLambda);
const contactResource = contactServiceRestApi.root.addResource('contact');
const contactResource =
contactServiceRestApi.root.addResource('contact');
contactResource.addMethod('POST', contactIntegration);
contactLambda.addToRolePolicy(
new PolicyStatement({
actions: ['ses:SendEmail', 'ses:SendRawEmail'],
effect: Effect.ALLOW,
resources: ['*']
})
);
}
}