CDK で API Gateway Mock 統合と Lambda Authorizer を作る
CDK(TypeScript) で API Gateway(REST API) の Mock 統合と、Lambda Authorizer を作ってみました。
ソースコード全体はこちらです。
https://github.com/kazfuku/apigateway-java-lambda-authorizer/blob/master/lib/apigateway-java-lambda-authorizer-stack.ts
Mock 統合
Mock 統合はこの部分です。
const mockIntegration = new apigateway.MockIntegration({
requestTemplates: {
'application/json': '{"statusCode": 200}'
},
integrationResponses: [
{
statusCode: '200',
responseTemplates: {
'application/json': '{ "message": "mock", "now": "$context.authorizer.now" }'
}
}
]
});
const method = api.root.addMethod('GET', mockIntegration, {
methodResponses: [
{
statusCode: '200'
}
],
authorizer: lambdaAuthorizer
});
Mock 統合の仕組み上、リクエストテンプレートとレスポンステンプレートが要ります。
リクエストテンプレートでステータスコードを定義して、レスポンステンプレートでそのステータスコードに対応するレスポンス本文を設定します。
$context.authorizer.now の部分は、Lambda Authorizer が返している現在日時 を指しています。
Lambda Authorizer
Lambda Authorizer はこの部分です。
const authorizerFunction = new lambda.Function(this, 'AuthorizerFunction', {
runtime: lambda.Runtime.JAVA_8,
handler: 'com.kazfuku.aws.MapLambdaAuthorizer::handleRequest',
code: lambda.Code.fromAsset('lambda/authorizer/target/apigateway-java-lambda-authorizer-1.0.jar')
});
const lambdaAuthorizer = new apigateway.RequestAuthorizer(this, 'Authorizer', {
handler: authorizerFunction,
identitySources: [IdentitySource.header('Authorization')]
});
Lambda 関数と、API Gateway の Lambda Authorizer (REQUEST タイプ) を定義してます。
最後に、Method に設定するのを忘れずに。
const method = api.root.addMethod('GET', mockIntegration, {
methodResponses: [
{
statusCode: '200'
}
],
authorizer: lambdaAuthorizer // <----
});
参考
関連記事
この記事は、Java Lambda で API Gateway の Lambda Authorizer を実装する と関連しています。
Java Lambda に興味がある方は、ぜひこちらもご覧ください。
Author And Source
この問題について(CDK で API Gateway Mock 統合と Lambda Authorizer を作る), 我々は、より多くの情報をここで見つけました https://qiita.com/kazfuku/items/76a2e731866ba0da687b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .