Невозможно добавить лямбда-мишень в запланированное правило в AWS cloudwatch - PullRequest
0 голосов
/ 05 февраля 2020

Я на самом деле создаю запланированное правило в aws облачных часах в. net в качестве цели лямбды, но я не могу добавить свою лямбду в качестве цели.

что здесь не так

   `var region = RegionEndpoint.GetBySystemName("us-east-2");`
        `AmazonCloudWatchEventsClient client = new AmazonCloudWatchEventsClient(region);`
        `AmazonLambdaClient lambda = new AmazonLambdaClient();`
        `var putRuleRequest = new PutRuleRequest`
        `{`
           ` Name = "Rule1check",`
            `ScheduleExpression = "cron(0 11 24 * ? 2020)",`
            `State = RuleState.ENABLED,`

        `};`
        `//var putTargetRequest =  "EC2 RebootInstances API call`
        `var putRuleResponse = client.PutRuleAsync(putRuleRequest);`
        `AddPermissionRequest lambdaparam = new AddPermissionRequest`
        `{`
           ` Action = "lambda:InvokeFunction",`
            `FunctionName = "stop_ec2",`
            `Principal = "events.amazonaws.com",`
            `SourceArn = putRuleResponse.ToString(),`
            `StatementId = "ID-1"`
        `};`
       `lambda.AddPermissionAsync(lambdaparam);`
        `var putTargetRequest = new PutTargetsRequest`
       ` {`
            `Rule = "Rule1check",`
            `Targets =`
            `{`
                `new Target { Arn = "arn:aws:lambda:us-east-2:394451858625:function:stop_ec2",` 
                    `Id = "myCloudWatchEventsTarget",`
                    `Input = "{\"region\": \"us-east-2\",\"instances\": \"*******\"}"`
               ` }`
               ` }`
            `};`
        `client.PutTargetsAsync(putTargetRequest);`

1 Ответ

0 голосов
/ 05 февраля 2020

У вас есть несколько проблем здесь.

  1. SourceArn = putRuleResponse.ToString(). Объект PutRuleResponse содержит свойство RuleArn. Это то, что вы должны использовать. SourceArn = putRuleResponse.RuleArn.
  2. client.PutRuleAsync(putRuleRequest) - это вызов async, но вы не await звоните. В результате вы получаете Task<PutRuleResponse> назад, а не PutRuleResponse, и вы получаете его до того, как операция, вероятно, будет завершена.
  3. Вы не await что-либо, что может быть проблема при работе с зависимостями.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...