Как получается, что встроенная функция облачной информации! ImportValue не преобразуется в строку, когда я помещаю ее в функцию Join внутри определения тела моего серверного API-шаблона?
Этот шаблон облачной информации:
UserAPI:
Type: 'AWS::Serverless::Api'
Properties:
StageName: !ImportValue StageName
DefinitionBody:
'Fn::Transform':
Name: 'AWS::Include'
Parameters:
Location: !Join [ "", [ "s3://", !ImportValue S3APIBucket, "/api_user.yaml" ] ]
Сгенерирует следующую ошибку:
Failed to create the changeset: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state Status: FAILED. Reason: The value of parameter Location under transform Include must resolve to a string, number, boolean or a list of any of these.
Однако, если я заменю последнюю строку на:
Location: !Join [ "", [ "s3://", !Ref S3APIBucket, "/api_user.yaml" ] ]
И иметь S3APIBucket в качестве параметра, он работает нормально. Или иначе не используйте! Присоединяйтесь и просто жестко закодируйте имя сегмента s3, что также отлично работает.