почему функция Fn :: GetAtt выдает ошибку? - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь использовать функцию fn :: GetAtt для вычисления разрешения и ссылки.моя облачная информация json: Определенная часть ресурса:

"Resources": {
"helloworld": {
  "Properties": {
    "AutoPublishAlias": "live",
    "Handler": "index.handler",
    "Runtime": "nodejs6.10",
    "CodeUri": "s3://ss-sheng/src/helloWorld.zip",
    "Role": {
      "Ref": "dependrole"
    },
    "Timeout": 3,
    "ReservedConcurrentExecutions": 5,
    "Tags": {
      "PROJECT": "My Point",
      "COST_CENTRE": "6400073401",
      "BUSINESS_UNIT": "My Programs",
      "BUSINESS_CONTACT": "Greg Windsor",
      "TIER": "Development"
    }
  },
  "Type": "AWS::Serverless::Function"
},
"helloworldpermission": {
  "DependsOn": "helloworld",
  "Properties": {
    "Action": "lambda:InvokeFunction",
    "FunctionName": {
      "Fn::Join": [
        ":",
        [
          {
            "Ref": "helloworld"
          },
          {
            "Fn::GetAtt": [
              "helloworld",
              "Version"
            ]
          }
        ]
      ]
    },
    "Principal": "apigateway.amazonaws.com"
  },
  "Type": "AWS::Lambda::Permission"
}
}

Я получаю ошибку:

Template error: every Fn::GetAtt object requires two non-empty parameters, the resource name and the resource attribute

Я даю им два параметра: "helloworld" и "Version".Почему лямбда-функция все еще показывает ошибку?

helloworld ссылается на бессерверную функцию helloworld.

Я использую «Transform»: «AWS :: Serverless-2016-10-31», который определенв начале файла формирования облаков.

1 Ответ

0 голосов
/ 18 декабря 2018

Для ресурса AWS::Serverless::Function вы можете получить доступ к version и alias, используя Ref

Для получения дополнительной информации см. Следующую ссылку:

https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#referencing-lambda-version--alias-resources

Таким образом, вместо

{
        "Fn::GetAtt": [
          "helloworld",
          "Version"
        ]
      }

должно быть,

{
        "Fn::Ref": [
          "helloworld",
          "Version"
        ]
      }
...