aws transfer update-server generuje błędy

Aug 26 2020

Używam terraform do utworzenia serwera aws sftp i próbuję użyć białej listy adresów IP, aby zabezpieczyć mój serwer.

aws_transfer_serverPolecenie Terraform obsługuje obecnie tylko endpoint_types, takie jak PUBLIC lub VPC_ENDPOINT. Więc używam null_resourcedo wykonania polecenia aws w celu zaktualizowania serwera sftp po jego utworzeniu. Fragment terraform znajduje się poniżej:

resource "null_resource" "update_sftp_server" {
  provisioner "local-exec" {
    command = <<EOF
aws transfer update-server --server-id ${aws_transfer_server.sftp.id} --endpoint-type VPC --endpoint-details SubnetIds="${join("\", \"", var.subnet_ids)}", AddressAllocationIds="${join("\", \"", toset(aws_eip.nlb.*.id))}", VPCEndpointID="${aws_vpc_endpoint.transfer.id}", VpcId="${var.vpc_id}"
EOF
  }
  depends_on = [aws_transfer_server.sftp, aws_vpc_endpoint.transfer]
}

Spowoduje to wykonanie poniższej komendy aws

aws transfer update-server --server-id s-######## --endpoint-type VPC --endpoint-details SubnetIds="subnet-#####", "subnet-#####", AddressAllocationIds="eipalloc-######", "eipalloc-######", VPCEndpointID="vpce-#######", VpcId="vpc-#####"

Ale pojawia się błąd jak poniżej:

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: AddressAllocationIds=eipalloc-######, eipalloc-######, VPCEndpointID=vpce-######, VpcId=vpc-######, subnet-######

Czy ktoś może mi pomóc dowiedzieć się, dlaczego wyrzucany jest ten błąd? Szczegóły dotyczące mojego środowiska znajdują się poniżej:

Terraform v0.12.28
provider.aws v3.0.0
provider.null v2.1.2
aws-cli/2.0.33 Python/3.7.7 Windows/10 botocore/2.0.0dev37

Odpowiedzi

2 lxop Aug 26 2020 at 20:59

Czy próbowałeś zbudować swoją listę argumentów bez spacji? Żeby to wyglądało SubnetIds="subnet-#####","subnet-#####",AddressAllocationIds="eipalloc-######","eipalloc-######",VPCEndpointID="vpce-#######",VpcId="vpc-#####"?

W przeciwnym razie, gdy wiersz poleceń zostanie podzielony na tokeny, większość tych bitów nie zostanie przeanalizowana jako część --endpoint-detailsargumentu.