Использование списка объектов документа политики IAM как AWS::Serverless::Function Policies

Согласно документации для AWS::Serverless::Function в модели приложения без сервера можно указать список объектов документа политики IAM (PDO) для Policies Свойство Ресурса.

Однако AWS Toolkit для Visual Studio отмечает синтаксическую ошибку, когда я пытаюсь определить IAM PDO: введите описание изображения здесь

Вот полный пример моего Resources раздел:

"Resources": { "Example" : { "Type" : "AWS::Serverless::Function", "Properties": { "Handler": "Example::Example.Controllers.ExampleController::ExampleAction", "Runtime": "dotnetcore2.0", "CodeUri": "", "MemorySize": 256, "Timeout": 30, "Policies": [{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "*", "Resource": "*" } }], "Events": { "PutResource": { "Type": "Api", "Properties": { "Path": "/{id}", "Method": "GET" } } } } } }

Есть ли что-то, что я ошибаюсь, или проблема с проверкой синтаксиса SAM или AWS Toolkit?

3 ответа

Решение

Я только что обновил схему VS CloudFormation. Проблема должна исчезнуть при следующем перезапуске Visual Studio.

Я думаю, что проблема в вашем синтаксисе заключается в том, что это должен быть массив операторов, потому что может быть несколько политик, как показано ниже,

"Statement":[ 
              {
                "Effect": "Allow",
                "Action": "*",
                "Resource": "*"
              }
            ]

Пример наличия нескольких политик будет, как показано ниже,

"Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "dynamodb:Query"
              ],
              "Resource": "arn:aws:dynamodb:${region}:*:table/${project}-songs-${dev}/*/*"
            },
            {
              "Effect": "Allow",
              "Action": [
                "dynamodb:GetItem"                  ],
              "Resource": "arn:aws:dynamodb:${region}:*:table/${project}-users-${dev}"
            },

         ]

Похоже, что проблема вызвана проблемами синтаксического разбора в Visual Studio и AWS Toolkit. Я поднял проблему на GitHub, и вы можете отслеживать ее здесь: https://github.com/aws/aws-sdk-net/issues/1001