自动缩放 ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null
Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn value null
我正在尝试将自动缩放添加到 AWS 上 Lambda 的预配置并发配置中。
我在使用 Lambda 目标的 DependsOn: 值时遇到问题,它似乎无法识别传入的资源并说它为空。在 AWS 的示例中,它使用 AutoPublishAlias,这对我来说不是一个选项。 https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/
我引用不正确吗?
**LambdaAlias:**
Type: AWS::Lambda::Alias
Properties:
Description: Adds provisioned concurrency for lambda using alias on arn
FunctionName: !Ref Lambda
FunctionVersion: !GetAtt LambdaVersion.Version
Name: live
ProvisionedConcurrencyConfig:
ProvisionedConcurrentExecutions: !Ref ProvisionedConcurrentExecutions
LambdaTarget:
Type: AWS::ApplicationAutoScaling::ScalableTarget
Properties:
MaxCapacity: 100
MinCapacity: 1
ResourceId: !Sub function:${Lambda}:live # You need to specify an alis or version here
RoleARN: !Ref IamRoleArn
ScalableDimension: lambda:function:ProvisionedConcurrency
ServiceNamespace: lambda
**DependsOn: LambdaAlias** # This is your function logical ID + "Alias" + what you use for AutoPublishAlias
LambdaTrackingScalingPolicy:
Type: AWS::ApplicationAutoScaling::ScalingPolicy
Properties:
PolicyName: utilization
PolicyType: TargetTrackingScaling
ScalingTargetId: !Ref LambdaTarget
TargetTrackingScalingPolicyConfiguration:
TargetValue: 0.70 # Any value between 0.1 and 0.9 can be used here
PredefinedMetricSpecification:
PredefinedMetricType: LambdaProvisionedConcurrencyUtilization
添加资源片段
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
!If
- EnableVpcConfig
- FunctionName: !Ref FunctionName
Description: !Ref FunctionDescription
Code:
S3Bucket: !Ref CodeSourceBucket
S3Key: !Sub 'api-packages/${CodeFile}'
Handler: !Ref Handler
Environment:
Variables:
APP_ID: !If [ UsesPublicKeyAPI, !Ref AppId, !Ref
解决方案
答案是引用我创建的 AWS::Lambda::Alias 资源的逻辑 ID,在本例中是
取决于:LambdaAlias
文档使用的是不需要创建资源的 AutoPublishAlias AWS::Lambda::Alias,因此所需的配置略有不同
因为您没有使用任何 AutoPublishAlias
格式
{functionLogicalResourceName}Alias{aliasName}
应该适合你..
在您提供的示例中。您还没有提供部署 Lambda 的部分,所以如果我们假设您的 lambda 逻辑 ID 是 MyLambda
,您应该
DependsOn: MyLambdaAliaslive
您是否尝试过只使用 LambdaAlias 的资源名称
我觉得 DependsOn: LambdaAlias
应该可以解决问题
您使用的是纯 Cloudformation,而您引用的文章使用的是 AWS SAM。
我正在尝试将自动缩放添加到 AWS 上 Lambda 的预配置并发配置中。 我在使用 Lambda 目标的 DependsOn: 值时遇到问题,它似乎无法识别传入的资源并说它为空。在 AWS 的示例中,它使用 AutoPublishAlias,这对我来说不是一个选项。 https://aws.amazon.com/blogs/aws/new-provisioned-concurrency-for-lambda-functions/
我引用不正确吗?
**LambdaAlias:**
Type: AWS::Lambda::Alias
Properties:
Description: Adds provisioned concurrency for lambda using alias on arn
FunctionName: !Ref Lambda
FunctionVersion: !GetAtt LambdaVersion.Version
Name: live
ProvisionedConcurrencyConfig:
ProvisionedConcurrentExecutions: !Ref ProvisionedConcurrentExecutions
LambdaTarget:
Type: AWS::ApplicationAutoScaling::ScalableTarget
Properties:
MaxCapacity: 100
MinCapacity: 1
ResourceId: !Sub function:${Lambda}:live # You need to specify an alis or version here
RoleARN: !Ref IamRoleArn
ScalableDimension: lambda:function:ProvisionedConcurrency
ServiceNamespace: lambda
**DependsOn: LambdaAlias** # This is your function logical ID + "Alias" + what you use for AutoPublishAlias
LambdaTrackingScalingPolicy:
Type: AWS::ApplicationAutoScaling::ScalingPolicy
Properties:
PolicyName: utilization
PolicyType: TargetTrackingScaling
ScalingTargetId: !Ref LambdaTarget
TargetTrackingScalingPolicyConfiguration:
TargetValue: 0.70 # Any value between 0.1 and 0.9 can be used here
PredefinedMetricSpecification:
PredefinedMetricType: LambdaProvisionedConcurrencyUtilization
添加资源片段
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
!If
- EnableVpcConfig
- FunctionName: !Ref FunctionName
Description: !Ref FunctionDescription
Code:
S3Bucket: !Ref CodeSourceBucket
S3Key: !Sub 'api-packages/${CodeFile}'
Handler: !Ref Handler
Environment:
Variables:
APP_ID: !If [ UsesPublicKeyAPI, !Ref AppId, !Ref
解决方案
答案是引用我创建的 AWS::Lambda::Alias 资源的逻辑 ID,在本例中是 取决于:LambdaAlias
文档使用的是不需要创建资源的 AutoPublishAlias AWS::Lambda::Alias,因此所需的配置略有不同
因为您没有使用任何 AutoPublishAlias
格式
{functionLogicalResourceName}Alias{aliasName}
应该适合你..
在您提供的示例中。您还没有提供部署 Lambda 的部分,所以如果我们假设您的 lambda 逻辑 ID 是 MyLambda
,您应该
DependsOn: MyLambdaAliaslive
您是否尝试过只使用 LambdaAlias 的资源名称
我觉得 DependsOn: LambdaAlias
应该可以解决问题
您使用的是纯 Cloudformation,而您引用的文章使用的是 AWS SAM。