所以我有这个函数,我正在尝试声明,它工作并部署只是花花公子,除非您取消注释logRetention
设置。如果指定了logRetention
则 cdk 部署操作 将其他参数添加到堆栈。而且,当然,这种行为在文档中是完全无法解释的。
https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-readme.html#log-group
SingletonFunction.Builder.create(this, "native-lambda-s3-fun")
.functionName(funcName)
.description("")
// .logRetention(RetentionDays.ONE_DAY)
.handler("app")
.timeout(Duration.seconds(300))
.runtime(Runtime.GO_1_X)
.uuid(UUID.randomUUID().toString())
.environment(new HashMap<String, String>(){{
put("FILE_KEY", "/file/key");
put("S3_BUCKET", junk.getBucketName());
}})
.code(Code.fromBucket(uploads, functionUploadKey(
"formation-examples",
"native-lambda-s3",
lambdaVersion.getValueAsString()
)))
.build();
"Parameters": {
"lambdaVersion": {
"Type": "String"
},
"AssetParametersceefd938ac7ea929077f2e2f4cf09b5034ebdd14799216b1281f4b28427da40aS3BucketB030C8A8": {
"Type": "String",
"Description": "S3 bucket for asset "ceefd938ac7ea929077f2e2f4cf09b5034ebdd14799216b1281f4b28427da40a""
},
"AssetParametersceefd938ac7ea929077f2e2f4cf09b5034ebdd14799216b1281f4b28427da40aS3VersionKey6A2AABD7": {
"Type": "String",
"Description": "S3 key for asset version "ceefd938ac7ea929077f2e2f4cf09b5034ebdd14799216b1281f4b28427da40a""
},
"AssetParametersceefd938ac7ea929077f2e2f4cf09b5034ebdd14799216b1281f4b28427da40aArtifactHashEDC522F0": {
"Type": "String",
"Description": "Artifact hash for asset "ceefd938ac7ea929077f2e2f4cf09b5034ebdd14799216b1281f4b28427da40a""
}
},
这是一个错误。他们正在努力。™所以,欢欣鼓舞 - 我们可能会期待在未来十年内的某个时候修复。
我还没有尝试过,但我猜解决方法是操纵低级CfnLogGroup
构造,因为它具有权威的retentionInDays
属性。相关的高级日志组构造可能可以通过函数的 logGroup 属性从函数中获取。如果做不到这一点,可以从头开始创建 LogGroup(这本身可能是一个令人头疼的问题(。
我也遇到了上面描述的问题。据我所知,我们无法指定日志组名称,因此日志组名称是可预测的。
我的解决方案是简单地创建一个与我的 Lambda 函数同名的 LogGroup,前缀为/aws/lambda/
。
例:
var function = new Function(
this,
"Thing",
new FunctionProps
{
FunctionName = $"{Stack.Of(this).StackName}-Thing",
// ...
});
_ = new LogGroup(
this,
"ThingLogGroup",
new LogGroupProps
{
LogGroupName = $"/aws/lambda/{function.FunctionName}",
Retention = RetentionDays.ONE_MONTH,
});
这不会创建不必要的"资产参数..." CF 模板参数,就像内联选项一样。
注意:我正在使用带有 C# 的 CDK 版本 1.111.0 和 1.86.0