Mam już moje lambda/role zdefiniowane w cloudformation i chciałbym również użyć go do dodania zaplanowanych wydarzeń ... Czy są jakieś dokumenty lub przykłady w pobliżu?AWS Lambda zaplanowane źródło zdarzenia przez cloudformation
Odpowiedz
Zastosowanie Aws::Event::Rule z ScheduleExpression
i AWS::Lambda::Permission
// rule to periodically call the lambda
"TagWatcherRule": {
"Type": "AWS::Events::Rule",
"Properties": {
"ScheduleExpression": "rate(10 minutes)",
"Targets": [
{
"Id": "TagWatcherScheduler",
"Arn": {
"Fn::GetAtt": [
"TagWatcherFunction",
"Arn"
]
}
}
]
}
},
// role may call the lambda
"InvokeLambdaPermission": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"FunctionName": {
"Fn::GetAtt": [
"TagWatcherFunction",
"Arn"
]
},
"Action": "lambda:InvokeFunction",
"Principal": "events.amazonaws.com",
"SourceArn": {
"Fn::GetAtt": [
"TagWatcherRule",
"Arn"
]
}
}
}
Niestety, skonfigurowanie zaplanowanych źródeł zdarzeń dla funkcji lambda nie jest obecnie obsługiwane przez CloudFormation. Będziesz musiał wdrożyć swoją lambdę za pomocą CloudFormation, a następnie ręcznie skonfigurować zaplanowane zdarzenia.
CloudFormation obsługuje typ zasobu AWS::Lambda::EventSourceMapping
. Jednak ten zasób ogranicza konfigurowanie strumieni Kinesis lub DynamoDB, więc prawdopodobnie nie jest to pomocne.
** Update - od kwietnia 2016 roku, jest obecnie obsługiwane przy użyciu CloudWatch Wydarzenia - https://aws.amazon.com/about-aws/whats-new/2016/04/amazon-cloudwatch-events-now-supported-in-aws-cloudformation-templates/
Od tego tygodnia (18 kwietnia 2016) jest obecnie możliwe, aby dodać zaplanowana reguła zdarzenia CloudWatch, która uruchomi twoją funkcję Lambda.
Pole AWS::Event::Rule ma pole ScheduleExpression
dla harmonogramu w stylu crona i tablicę Targets
, która może przyjmować ARN funkcji Lambda.
I rozwiązać ten sam problem.
"RoleForLambdaStopEC2Instances" : {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
},
"Policies": [
{
"PolicyName": "LambdaStopEC2InstancesPolicy",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"ec2:StopInstances"
],
"Resource": [
"arn:aws:logs:*:*:*",
"arn:aws:ec2:*"
]
}
]
}
}
],
"Path": "/"
}
},
"LambdaStopEC2Instances": {
"Type": "AWS::Lambda::Function",
"Properties": {
"Code": {
"S3Bucket": "XXXXXXXXXXXXXXXXX",
"S3Key": "XXXXXXXXXXXXXXXXXX"
},
"Handler": "stopEC2Instances.handler",
"Role": { "Fn::GetAtt" : ["RoleForLambdaStopEC2Instances", "Arn"] },
"Runtime": "nodejs4.3",
"Timeout": "5"
}
},
"StopEC2InstancesRule": {
"Type" : "AWS::Events::Rule",
"Properties" : {
"Name" : "StopEC2Instances",
"ScheduleExpression" : "cron(0 13 ? * MON-FRI *)",
"State": "ENABLED",
"Targets": [{
"Arn": { "Fn::GetAtt": ["LambdaStopEC2Instances", "Arn"] },
"Id": "stopEC2Instances"
}]
}
},
"LambdaInvokePermission": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"FunctionName" : { "Fn::GetAtt" : ["LambdaStopEC2Instances", "Arn"] },
"Action": "lambda:InvokeFunction",
"Principal": "events.amazonaws.com",
"SourceAccount": { "Ref" : "AWS::AccountId" },
"SourceArn": { "Fn::GetAtt": ["StopEC2InstancesRule","Arn"] }
}
}
AWS supports periodic run through sourcedetails.
EventSource: "aws.config"
MaximumExecutionFrequency: Twelve_Hours
MessageType: "ScheduledNotification"
- 1. AWS Lambda - CloudWatch Typ zdarzenia
- 2. Nie można utworzyć źródło SNS wydarzenie w funkcji lambda stosując CloudFormation
- 3. AWS :: CloudFormation :: Init jak to działa?
- 4. aws CloudFormation AWS :: EC2 :: Instancja BlockDeviceMappings and Volumes
- 5. Ustawianie możliwości szablonu aws cloudformation-validate
- 6. Jak zabezpieczyć stos AWS CloudFormation przed usunięciem?
- 7. AWS Limit czasu połączenia Lambda z Elasticache
- 8. Asyncpg i AWS Lambda
- 9. Jak znaleźć główną przyczynę niepowodzenia tworzenia stosu AWS CloudFormation?
- 10. Uruchamianie 'git' w AWS lambda
- 11. AWS Obraz Lambda jest uszkodzony
- 12. Żądania HTTP w AWS Lambda
- 13. AWS Lambda VPC na Terraform
- 14. AWS: Jak określić logiczną parametru w szablonie CloudFormation
- 15. Aws cloudformation validate-szablon utrzymuje dając błąd (błąd formatu Template)
- 16. JavaScript jak znaleźć źródło zdarzenia przewijania
- 17. Wysyłanie wiadomości e-mail przez AWS SES w ramach funkcji AWS Lambda
- 18. Jak przekazać parametry do funkcji AWS Lambda
- 19. AWS Lambda: Jak wywołać funkcję lambda z prostej klasy java
- 20. Źródło zdarzenia i podstawowe uwierzytelnianie http
- 21. Źródło zdarzenia w stosunku do oryginalnego źródła
- 22. AWS Lambda: Czy przechowywanie danych na dysku lokalnym AWS Lambda jest bezpieczne?
- 23. CloudFormation, Apply Condition on DependsOn
- 24. W jaki sposób można reprezentować zaplanowane zdarzenia w RDBMS?
- 25. Identyfikator grupy replikacji elastycznej w szablonie CloudFormation
- 26. Jak wywołać funkcję AWS Lambda w Swift
- 27. Wysyłanie z bramy AWS-API do Lambda
- 28. prosty przykład node.js w aws lambda
- 29. Chrome - bez głowicy dla AWS Lambda?
- 30. AWS Funkcja Lambda nigdy nie wywołuje oddzwonienia
Według dokumentów, w ScheduleExpression musi być wiele minut, a nie minut. http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ScheduledEvents.html –
@ timmah.faase Nie prawda? "Poprawne wartości: minuta | minuty | godzina | godziny | dzień | dni" – dsvensson
Masz prawo do liczby pojedynczej na "1", np. "1 minuta", ale w przeciwnym razie musi użyć liczby mnogiej, np. "10 minut". Gramatyka jest egzekwowana! – helloPiers