AWS Lambda-S3-Bucket-Benachrichtigungen über CloudFormation
Ich versuche zu schaffen, eine Lambda-Benachrichtigung über CloudFormation aber immer eine Fehlermeldung über die ARN-format nicht mehr korrekt.
Entweder meine CloudFormation ist falsch oder wird nicht unterstützt, die Lambda-Album noch.
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"LambdaArn": {
"Type": "String",
"Default": "arn:aws:lambda:{some-region}:{some-account-id}:function:{some-fn-name}"
}
},
"Resources": {
"EventArchive": {
"Type": "AWS::S3::Bucket",
"Properties": {
"NotificationConfiguration": {
"TopicConfigurations": [
{
"Event": "s3:ObjectCreated:Put",
"Topic": {
"Ref": "LambdaArn"
}
}
]
}
}
}
}
}
Aber wenn ich push-up dieser CloudFormation bekomme ich die Meldung:
The ARN is not well formed
Hat jemand eine Idee, was das bedeutet? Ich weiß, das Beispiel oben wurde modifiziert, so nicht, um meine tatsächlichen ARN, aber in meinem eigentlichen code habe ich kopiert ARN direkt von der GUI aus.
Auch, interessanterweise war ich in der Lage zu schaffen, die Benachrichtigung über die AWS-Konsole, und so bin ich einfach davon ausgehen, dass AWS CloudFormation noch nicht unterstützt, diese Funktion (auch wenn das nicht ganz klar, ich glaube nicht, dass beim Lesen der Dokumentation).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom die docs:
Scheint es, dass, obwohl S3 unterstützt das senden von Ereignissen an die Lambda, CloudFormation noch nicht aufgeholt. Es erwartet Sie ein SNS-ARN, wo Sie eine Lambda-Funktion ARN.
Für jetzt, es sieht aus wie Sie haben, um hook up die Benachrichtigung manuell.
lambda.add_permission()
+s3.BucketNotification.put()
Sieht es aus wie AWS hat jetzt Unterstützung für die Mitteilung von lambda-Funktionen direkt im CloudFormation.
Den S3
NotificationConfiguration
definition verwendet, um nur TopicConfigurations aber wurde aktualisiert, umLambdaConfigurations
als gut.Nach dem hinzufügen der NoficationConfiguration, stellen Sie sicher, dass Sie eine Lambda::Zustimmung Ressource, so dass S3 ist erlaubt, um die Ausführung Ihrer lambda-Funktion. Hier ist ein Beispiel die Erlaubnis kann als eine Vorlage verwendet werden: