Использование списка объектов документа политики 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