AWS CDK単体でもデプロイできますが、CloudFormationの生成にも利用できます。
そうなってくると、ParametersやRefを使いたくなりますね。
cdk.CfnParameter
を使って定義して、.ref
パラメタを使えば値を渡してやることができます。
SAMのハンドラーをParameterで選べるようにした例
import * as cdk from '@aws-cdk/cdk';
import sam = require('@aws-cdk/aws-sam')
export class CdkTestStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const ParamHandler = new cdk.CfnParameter(this, 'handler', {
type: 'String',
description: 'Lambda handler',
default: 'index.handler'
})
new sam.CfnFunction(
this,
'function',
{
handler: ParamHandler.ref,
runtime: 'nodejs8.10',
codeUri: 'src'
}
)
}
}
生成されるCloudFormation
Transform: AWS::Serverless-2016-10-31
Parameters:
handler:
Type: String
Default: index.handler
Description: Lambda handler
Resources:
function:
Type: AWS::Serverless::Function
Properties:
CodeUri: src
Handler:
Ref: handler
Runtime: nodejs8.10
Metadata:
aws:cdk:path: CdkTestStack/function