aws VS2017 Синтаксис приложения без сервера в serverless.template для добавления фильтра в уведомление s3 - PullRequest
0 голосов
/ 04 июня 2018

Я создал приложение VS2017 C #, используя шаблон приложения без сервера AWS с планом «Простая функция S3».Файл CloudFormation serverless.template содержит спецификацию для моей функции-обработчика со спецификацией события для ответа на события "s3.ObjectCreated: *".Я пытаюсь добавить спецификацию фильтра к этой спецификации события, чтобы отвечать только на события с префиксом «Source /».Вот мой код:

{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Transform" : "AWS::Serverless-2016-10-31",
  "Description" : "Template that creates a S3 bucket and a Lambda function that will be invoked when new objects are upload to the bucket.",
  "Parameters" : {
    "BucketName" : {
        "Type" : "String",
        "Description" : "Name of S3 bucket to be created. The Lambda function will be invoked when new objects are upload to the bucket. If left blank a name will be generated.",
        "MinLength" : "0"
    }
  },

  "Conditions" : {
    "BucketNameGenerated" : {"Fn::Equals" : [{"Ref" : "BucketName"}, ""]}
  },


  "Resources" : {

    "Bucket" : {
        "Type" : "AWS::S3::Bucket",
        "Properties" : {
            "BucketName" : { "Fn::If" : ["BucketNameGenerated", {"Ref" : "AWS::NoValue" }, { "Ref" : "BucketName" } ] }
        }
    },

    "S3Function" : {
      "Type" : "AWS::Serverless::Function",
      "Properties": {
        "Handler": "DCATInventory::DCATInventory.Function::FunctionHandler",
        "Runtime": "dotnetcore2.0",
        "CodeUri": "",
        "Description": "Default function",
        "MemorySize": 256,
        "Timeout": 30,
        "Role": null,
        "Policies": [ "AWSLambdaFullAccess", "AmazonRekognitionReadOnlyAccess" ],
        "Events": {
            "NewImagesBucket" : {
                "Type" : "S3",
                "Properties" : {
                    "Bucket" : { "Ref" : "Bucket" },
                    "Events" : [
                        "s3:ObjectCreated:*"
                    ],
                    "Filter" : {
                        "S3Key" : {
                            "Rules" : [{
                                "Name" : "prefix", 
                                "Value": "Source/"
                            }]
                        }
                    }
                }
            }
        }
      }
    }
  },
  "Outputs" : {
    "Bucket" : {
        "Value" : {"Ref":"Bucket"},
        "Description" : "Bucket that will invoke the lambda function when new objects are created."
    }
  }
}

Это код по умолчанию, сгенерированный шаблоном с добавлением только спецификации фильтра в свойства события.В строке 48 я получаю сообщение об ошибке «Ключ правил недопустим для этого объекта». Я прочитал документацию и нашел ее в Google, и, похоже, это правильный синтаксис.Я указал что-то здесь не так?Заранее спасибо.

1 Ответ

0 голосов
/ 04 июня 2018

Оказывается, мой приведенный выше синтаксис правильный, хотя Visual Studio сообщает об ошибке.Я решил попробовать опубликовать приложение в AWS даже с этой ошибкой.Я ожидал, что получу ошибку от CloudFront, но она успешно опубликована.Событие S3 опубликовано и содержит мое правило фильтра с префиксом «Source /».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...