Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null
Posted
技术标签:
【中文标题】Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null【英文标题】:Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn value null 【发布时间】:2021-08-22 09:07:45 【问题描述】:我正在尝试将自动扩展添加到 AWS 上的 Lambda 的预置并发配置中。 我在使用 DependsOn: Lambda 目标的值时遇到问题,它似乎无法识别我传入的资源并说它为空。在 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,在本例中为 DependsOn:LambdaAlias
文档使用 AutoPublishAlias,它不需要创建资源 AWS::Lambda::Alias 所以需要的配置略有不同
【问题讨论】:
您的代码中没有DependsOn
。
它在 LambdaTarget 下 DependsOn: LambdaAlias
你的代码中真的有像ResourceId: !Sub function:$Lambda:live You need to specify an alis or version here
这样的值吗?
别名是'live'
那么您的代码中的You need to specify an alis or version here
是什么?
【参考方案1】:
因为你没有使用任何AutoPublishAlias
格式
functionLogicalResourceNameAliasaliasName
应该适合你..
在您提供的示例中。您尚未提供部署 Lambda 的部分,因此如果我们假设您的 lambda 逻辑 ID 是 MyLambda
,您应该
DependsOn: MyLambdaAliaslive
【讨论】:
嘿,我尝试了一些依赖项的变体,但仍然无法正确部署,我在模板的资源块中添加了资源 sn-p 模板格式错误:未解决的资源依赖项 [LambdaAliaslive] 【参考方案2】:您是否尝试过仅使用 LambdaAlias 的资源名称
我觉得DependsOn: LambdaAlias
应该可以解决问题
您使用的是普通 Cloudformation,而您参考的文章使用的是 AWS SAM。
【讨论】:
以上是关于Autoscale ProvisionedConcurrentExecutions AWS Lambda DependsOn 值 null的主要内容,如果未能解决你的问题,请参考以下文章
如何为 AutoScale 实例使用 AWS 负载均衡器代理协议?
如何在散点图中制作 relim() 和 autoscale()
对于 Amazon Web Services 上极短的流量峰值,正确的 Cloudwatch/Autoscale 设置是啥?