Compare commits

..

2 Commits

Author SHA1 Message Date
Jesse Brault
50dbc9380c Fix print width. 2026-01-13 16:15:53 -06:00
Jesse Brault
4493c808b4 Update to iam policy. 2026-01-13 16:14:17 -06:00
4 changed files with 17 additions and 27 deletions

View File

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

View File

@ -9,8 +9,7 @@ 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,13 +1,5 @@
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;
@ -29,10 +21,7 @@ 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,
@ -42,9 +31,7 @@ export async function handler(
};
}
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,12 +1,8 @@
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 { BasePathMapping, IDomainName, LambdaIntegration, RestApi } from 'aws-cdk-lib/aws-apigateway';
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
export interface ContactConstructProps {
apiDomainName: IDomainName;
@ -31,8 +27,15 @@ 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: ['*']
})
);
}
}