Amazon web services 我可以在CloudFormation中共享ScalableTarget或ScalingPolicy吗?

Amazon web services 我可以在CloudFormation中共享ScalableTarget或ScalingPolicy吗?,amazon-web-services,aws-lambda,amazon-cloudformation,autoscaling,aws-sam,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Autoscaling,Aws Sam,我在CloudFormation模板中定义了多个AWS lambda。我想为所有配置的Concurrency定义缩放比例,比如最小配置1个lambda,最大配置4个lambda 然后我有一个lambda的缩放配置,如下所示: HelloWorldScalingTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 4 MinCapacity: 1 Reso

我在CloudFormation模板中定义了多个AWS lambda。我想为所有配置的Concurrency定义缩放比例,比如最小配置1个lambda,最大配置4个lambda

然后我有一个lambda的缩放配置,如下所示:

HelloWorldScalingTarget:
  Type: AWS::ApplicationAutoScaling::ScalableTarget
  Properties:
    MaxCapacity: 4
    MinCapacity: 1
    ResourceId: !Sub function:${HelloWorld}:live
    RoleARN: !Sub arn:aws:iam::${AWS::AccountId}:role/aws-service-role/lambda.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_Lambda
    ScalableDimension: lambda:function:ProvisionedConcurrency
    ServiceNamespace: lambda

HelloWorldScalingPolicy:
  Type: AWS::ApplicationAutoScaling::ScalingPolicy
  Properties:
    PolicyName: utilization
    PolicyType: TargetTrackingScaling
    ScalingTargetId: !Ref HelloWorldScalingTarget
    TargetTrackingScalingPolicyConfiguration:
      TargetValue: 0.8
      PredefinedMetricSpecification:
        PredefinedMetricType: LambdaProvisionedConcurrencyUtilization
问题是我需要按名称引用每个lambda,并为每个lambda提供单独的ScalableTarget和ScalingPolicy。但是缩放策略对于所有lambda都是相同的


有没有办法在lambdas或ScalableTarget之间删除此重复并共享缩放策略?

从逻辑上讲,没有办法做到这一点。Lambda并不表示单个实例,它表示一个层,该层能够根据到达Lambda的请求生成多个实例来运行函数

由于每个lambda可以具有不同的属性,如运行时和内存,因此每个lambda的缩放策略将影响它仅创建的实例。这使得在多个lambda之间共享缩放策略是不现实的,因为每个lambda的利用率值根据其属性而不同