Compare commits
No commits in common. "50dbc9380c5ff34196ac3ec4411277499a9902ea" and "a4a4f55d085c5590ed50c65c0b71b463d1a60d29" have entirely different histories.
50dbc9380c
...
a4a4f55d08
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"arrowParens": "avoid",
|
"arrowParens": "avoid",
|
||||||
"printWidth": 120,
|
|
||||||
"semi": true,
|
"semi": true,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"tabWidth": 4,
|
"tabWidth": 4,
|
||||||
|
|||||||
@ -9,7 +9,8 @@ export class JbApiAwsStack extends cdk.Stack {
|
|||||||
|
|
||||||
const apiDomainName = DomainName.fromDomainNameAttributes(this, id, {
|
const apiDomainName = DomainName.fromDomainNameAttributes(this, id, {
|
||||||
domainName: 'api.jessebrault.com',
|
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'
|
domainNameAliasHostedZoneId: 'ZOJJZC49E0EPZ'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,13 @@
|
|||||||
import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda';
|
import {
|
||||||
import { SendEmailCommand, SESClient, SESClientConfig } from '@aws-sdk/client-ses';
|
APIGatewayProxyEvent,
|
||||||
|
APIGatewayProxyResult,
|
||||||
|
Context
|
||||||
|
} from 'aws-lambda';
|
||||||
|
import {
|
||||||
|
SendEmailCommand,
|
||||||
|
SESClient,
|
||||||
|
SESClientConfig
|
||||||
|
} from '@aws-sdk/client-ses';
|
||||||
|
|
||||||
interface ContactRequest {
|
interface ContactRequest {
|
||||||
name: string;
|
name: string;
|
||||||
@ -21,7 +29,10 @@ const sesClient = new SESClient({
|
|||||||
region: 'us-east-2'
|
region: 'us-east-2'
|
||||||
} satisfies SESClientConfig);
|
} 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) {
|
if (event.body === null) {
|
||||||
return {
|
return {
|
||||||
statusCode: 400,
|
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[] = [];
|
const errors: ValidationError[] = [];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
import { Construct } from 'constructs';
|
import { Construct } from 'constructs';
|
||||||
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
|
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
|
||||||
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
||||||
import { BasePathMapping, IDomainName, LambdaIntegration, RestApi } from 'aws-cdk-lib/aws-apigateway';
|
import {
|
||||||
import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam';
|
BasePathMapping,
|
||||||
|
IDomainName,
|
||||||
|
LambdaIntegration,
|
||||||
|
RestApi
|
||||||
|
} from 'aws-cdk-lib/aws-apigateway';
|
||||||
|
|
||||||
export interface ContactConstructProps {
|
export interface ContactConstructProps {
|
||||||
apiDomainName: IDomainName;
|
apiDomainName: IDomainName;
|
||||||
@ -27,15 +31,8 @@ export class ContactConstruct extends Construct {
|
|||||||
runtime: lambda.Runtime.NODEJS_24_X
|
runtime: lambda.Runtime.NODEJS_24_X
|
||||||
});
|
});
|
||||||
const contactIntegration = new LambdaIntegration(contactLambda);
|
const contactIntegration = new LambdaIntegration(contactLambda);
|
||||||
const contactResource = contactServiceRestApi.root.addResource('contact');
|
const contactResource =
|
||||||
|
contactServiceRestApi.root.addResource('contact');
|
||||||
contactResource.addMethod('POST', contactIntegration);
|
contactResource.addMethod('POST', contactIntegration);
|
||||||
|
|
||||||
contactLambda.addToRolePolicy(
|
|
||||||
new PolicyStatement({
|
|
||||||
actions: ['ses:SendEmail', 'ses:SendRawEmail'],
|
|
||||||
effect: Effect.ALLOW,
|
|
||||||
resources: ['*']
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user