📝
CDK Lambdaでロググループが存在しませんとなるとき
CDKでLambdaをdeployしていたところエラー発生。コンソール画面でテストしたときはログが出るが、Cloud Watchにロググループが存在しない問題が発生。検索したところ、こちらがヒット。
どうやら2つのfunctionで共通のroleを設定すると駄目なようです。以下のようにlog groupのpolicyを追加することでロググループが作成されるようになりました。
const iamRoleForLambdaReader = new iam.Role(this, "iamRoleForLambdaReader", {
assumedBy: new iam.ServicePrincipal("lambda.amazonaws.com"),
});
// これを追加する
iamRoleForLambdaReader.addToPolicy(
new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
],
resources: [
`arn:aws:logs:${cdk.Aws.REGION}:${cdk.Aws.ACCOUNT_ID}:log-group:/aws/lambda/*`,
],
}),
);
new lambda.Function(this, "Function1", {
codeSigningConfig,
runtime: lambda.Runtime.NODEJS_18_X,
handler: "index.handler1",
code: lambda.Code.fromAsset(path.join(__dirname, "lambda-handler")),
role,
});
new lambda.Function(this, "Function2", {
codeSigningConfig,
runtime: lambda.Runtime.NODEJS_18_X,
handler: "index.handler2",
code: lambda.Code.fromAsset(path.join(__dirname, "lambda-handler")),
role,
});
Discussion