【发布时间】:2021-04-06 02:56:45
【问题描述】:
我正在尝试创建一个指向 lambda 函数的自定义资源,然后调用它来生成随机优先级或我的 ELB 侦听器。
Lambda函数代码如下。
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespace aws_listenser_rule_priority_generator {
public class Function {
public async Task<int> FunctionHandler(FunctionParams input, ILambdaContext context) {
AmazonElasticLoadBalancingV2Client elbV2Client = new AmazonElasticLoadBalancingV2Client(RegionEndpoint.EUWest1);
var describeRulesResponse = await elbV2Client.DescribeRulesAsync(new DescribeRulesRequest {
ListenerArn = input.ListenerArn
});
var priority = 0;
var random = new Random();
do {
priority = random.Next(1, 50000);
}
while(describeRulesResponse.Rules.Exists(r => r.Priority == priority.ToString()));
return priority;
}
}
public class FunctionParams {
public string ListenerArn { get; set; }
}
}
我已经在 AWS 控制台上使用以下参数测试了这个 lambda,它成功返回。
{
"ListenerArn": "arn:aws:elasticloadbalancing:eu-west-1:706137030892:listener/app/Cumulus/dfcf28e0393cbf77/cdfe928b0285d5f0"
}
但是一旦我尝试将它与 Cloud Formation 一起使用。自定义资源在创建过程中停滞不前。
Resources:
ListenerPriority:
Type: Custom::Number
Properties:
ServiceToken: "arn:aws:lambda:eu-west-1:706137030892:function:GenerateListenerPriority"
ListenerArn: "arn:aws:elasticloadbalancing:eu-west-1:706137030892:listener/app/Cumulus/dfcf28e0393cbf77/cdfe928b0285d5f0"
【问题讨论】:
-
CF 为您的自定义资源创建 lambda 函数。此 lambda 在 cloudwatch 中创建日志组,您可以检查错误
-
@OleksiiDonoha 感谢您的意见。尝试了日志,但奇怪的是没有发现,我认为这意味着该函数根本没有被调用。虽然我在经历了这个page 之后找到了解决方案。我们需要严格遵守自定义资源的 lambda 函数格式。如果这对我有用,我会将其发布为答案。
标签: amazon-web-services .net-core aws-lambda amazon-cloudformation