Цель
Я внедряю решение для автоматического масштабирования потоков данных Kinesis.
Одно возможное решение, которому я следую, хорошо документировано в репо aws -samples / aws -application-auto-scaling-kinesis . Однако в примере кода используется шаблон cloudformation yaml. Я sh определю то же самое, используя terraform .
До сих пор история
При попытке создать масштабируемую цель для my_custom_resource
,
resource "aws_appautoscaling_target" "my_custom_resource" {
resource_id = "https://${aws_api_gateway_rest_api.my_api.id}.execute-api.${var.region}.amazonaws.com/prod/scalableTargetDimensions/${var.stream}"
scalable_dimension = "custom-resource:ResourceType:Property"
service_namespace = "custom-resource"
}
Все атрибуты были построены, следуя AWS Автоматическое масштабирование документов
Этот же ресурс создается с помощью CloudFormation в связанном репо AWS:
KinesisAutoScaling:
Type: AWS::ApplicationAutoScaling::ScalableTarget
DependsOn: LambdaScaler
Properties:
ResourceId: !Sub https://${MyApi}.execute-api.${AWS::Region}.amazonaws.com/prod/scalableTargetDimensions/${MyKinesisStream}
ScalableDimension: 'custom-resource:ResourceType:Property'
ServiceNamespace: custom-resource
Примечание: нерелевантные атрибуты опущены для краткость.
Проблема
terraform apply
приводит к следующей ошибке:
<b>Error: Error creating application autoscaling target:
ValidationException: Validation failed for resource:
https://k5df89sd23.execute-api.us-west-1.amazonaws.com/prod/scalableTargetDimensions/my-test-stream,
scalable dimension: custom-resource:ResourceType:Property.
Reason: Scalable resource not found</b>
on application-autoscaling.tf line 9, in resource "aws_appautoscaling_target" "my_custom_resource":
9: resource "aws_appautoscaling_target" "my_custom_resource" {
Что может быть неправильным в определении терраформы?
Мне известно, что Terraform поддерживает шаблоны CloudFormation с использованием aws_cloudformation_stack
- обходной путь, который я искренне sh избегаю.