Я пишу панель инструментов для облачных часов, используя инфраструктуру в качестве кода для достижения этой цели. У меня есть json внутри DashboardBody в файле yaml. Моя проблема возникает, когда я пытаюсь использовать функцию fn::xxxx
внутри метрик json следующим образом:
Resources:
DashboardTestYAML:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: SummaryDashboard
DashboardBody: '{
"widgets": [{
"type": "metric",
"x": 0,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[ "AWS/ApplicationELB", "RequestCount", "LoadBalancer", {"Fn::ImportValue": "LoadBalancerFullName"} ]
],
"view": "timeSeries",
"stacked": false,
"region": "eu-west-1",
"stat": "Sum",
"period": 300,
"title": "Load-blancer-requests"
}
}]
}'
Я пробовал следующее, но ничего не сработало (некоторые даже недействительны json, но попытка бесплатна.
{"Fn::ImportValue": "LoadBalancerFullName"}
"{"Fn::ImportValue": "LoadBalancerFullName"}"
'{"Fn::ImportValue": "LoadBalancerFullName"}'
{Fn::ImportValue: LoadBalancerFullName}
Fn::ImportValue: LoadBalancerFullName
-Fn::ImportValue: LoadBalancerFullName
Любая идея, если это возможно сделать? Относительно миграции всех на yaml отказываемся, потому что мы отказываемся от миграции всех на использование Amazon CDK
, а миграция будет пустой тратой времени.
Жесткое кодирование имени работает, но, поскольку балансировщик нагрузки тоже находится в облачном режиме, я не могу этого сделать.
Спасибо.
1 ответ
Я думаю, что это можно сделать с помощью !Sub в виде массива:
DashboardBody:
!Sub
- |
{
"widgets": [{
"type": "metric",
"x": 0,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[ "AWS/ApplicationELB", "RequestCount", "LoadBalancer", "${LoadBalancerName}" ]
],
"view": "timeSeries",
"stacked": false,
"region": "eu-west-1",
"stat": "Sum",
"period": 300,
"title": "Load-blancer-requests"
}
}]
}
- LoadBalancerName: !ImportValue LoadBalancerFullName
Мой синтаксис или намерение могут быть отключены, но я думаю, что можно увидеть основную структуру, когда используется !Sub
.
Похожие вопросы
Новые вопросы
json
JSON (нотация объектов JavaScript) — это сериализуемый формат обмена данными, который может быть прочитан машиной и человеком. Не используйте этот тег для собственных объектов JavaScript или литералов объектов JavaScript. Прежде чем задать вопрос, подтвердите свой JSON с помощью валидатора JSON, такого как JSONLint (https://jsonlint.com).
Template error: One or more Fn::Sub intrinsic functions don't specify expected arguments. Specify a string as first argument, and an optional second argument to specify a mapping of values to replace in the string
. Значит ли это, что я не могу использовать"${variable}"
внутри!Sub
?- |
. может быть, AWS не поддерживает это? Спасибо за вашу помощь.!ImportValue
нужно использовать полную запись?Fn::ImportValue
, и это не сработало.