Ho già definito i miei ruoli lambda/ruoli in cloudformation e mi piacerebbe usarlo anche per aggiungere una fonte di eventi programmata ... ci sono documenti o esempi in giro?AWS Lambda ha programmato la fonte dell'evento tramite cloudformation
risposta
Utilizzare Aws::Event::Rule con ScheduleExpression
e 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"
]
}
}
}
Sfortunatamente, la configurazione delle origini evento programmate per le funzioni lambda non è attualmente supportata da CloudFormation. Dovrai distribuire il tuo lambda usando CloudFormation e quindi configurare manualmente gli eventi pianificati.
CloudFormation supporta un tipo di risorsa AWS::Lambda::EventSourceMapping
. Tuttavia, questa risorsa è limitata alla configurazione di stream Kinesis o DynamoDB, quindi probabilmente non ti sarà utile.
** Aggiornamento - a partire da aprile 2016, questo è ora supportato utilizzando CloudWatch Eventi - https://aws.amazon.com/about-aws/whats-new/2016/04/amazon-cloudwatch-events-now-supported-in-aws-cloudformation-templates/
A partire da questa settimana (18 aprile 2016) è ora possibile aggiungere un Regola evento programmata di CloudWatch che attiverà la tua funzione Lambda.
Il AWS::Event::Rule ha un campo ScheduleExpression
per la pianificazione cron-style e un array Targets
che può accettare una funzione Lambda ARN.
ho risolto stesso problema.
"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. Accesso AWS CloudFormation ARN dall'interno Funzione Lambda
- 2. AWS :: CloudFormation :: Init come funziona?
- 3. AWS cloudformation opzionale line
- 4. Impossibile creare una fonte SNS evento su una funzione lambda utilizza CloudFormation
- 5. AWS lambda Impossibile creare una fonte evento pianificata
- 6. Accesso negato usando boto3 tramite AWS Lambda
- 7. Inserisci dati in AWS Redshift tramite AWS Lambda
- 8. Come proteggere uno stack AWS CloudFormation dall'eliminazione?
- 9. AWS CloudFormation dove verrà archiviato UserData?
- 10. AWS Lambda NoClassDefFoundError
- 11. Pandas & AWS Lambda
- 12. AWS Lambda Java compatibilità
- 13. Richiamare una funzione AWS Lambda tramite una richiesta http
- 14. AWS lambda e la concorrenza Java
- 15. AWS Lambda e la memoria imprecisa allocazione
- 16. Autorizzazioni AWS SQS per AWS Lambda
- 17. L'invio di e-mail tramite AWS SES entro funzione AWS Lambda
- 18. AWS Lambda - CloudWatch Tipo evento
- 19. analogia di Google Cloud con AWS Lambda
- 20. Amazon AWS Kinesis & Lambda Tentativi
- 21. Come creare un evento cloudwatch utilizzando un modello di cloudformation?
- 22. Immagine lambda di AWS danneggiata
- 23. AWS Lambda TooManyRequestsException: Tasso superato
- 24. Attivazione della funzione Lambda AWS due volte
- 25. AWS: Pubblica messaggio SNS per la funzione Lambda tramite boto3 (Python2)
- 26. creare cartella all'interno S3 secchio utilizzando Cloudformation
- 27. Come imporre la ridistribuzione del mio gateway API utilizzando Cloudformation
- 28. aws-lambda Impossibile trovare il modulo
- 29. Esecuzione di "git" in AWS lambda
- 30. Controllo origine e distribuzione per AWS Lambda
Secondo i documenti, ScheduleExpression deve essere plurale minuti non minuti. http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ScheduledEvents.html –
@ timmah.faase Non vero? "Valori validi: minuto | minuti | ora | ore | giorno | giorni" – dsvensson
Sei autorizzato singolare su "1", ad es. "1 minuto", ma è necessario utilizzare il plurale altrimenti, ad es. "10 minuti". La grammatica è applicata! – helloPiers