aws transfer update-server sta generando errori

Aug 26 2020

Sto usando terraform per creare un server aws sftp e provo a utilizzare la whitelist IP per proteggere il mio server.

Al momento, il aws_transfer_servercomando Terraform supporta solo endpoint_types come PUBLIC o VPC_ENDPOINT. Quindi sto usando null_resourceper eseguire un comando aws per aggiornare il server sftp dopo che è stato creato. Lo snippet terraform è di seguito:

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]
}

Questo esegue il seguente comando aws

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

Ma ricevo un errore come di seguito:

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-######

Qualcuno può aiutarmi a sapere perché viene generato questo errore? I dettagli del mio ambiente sono di seguito:

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

Risposte

2 lxop Aug 26 2020 at 20:59

Hai provato a costruire il tuo elenco di argomenti senza spazi? In modo che sembri SubnetIds="subnet-#####","subnet-#####",AddressAllocationIds="eipalloc-######","eipalloc-######",VPCEndpointID="vpce-#######",VpcId="vpc-#####"?

Altrimenti, quando la riga di comando viene suddivisa in token, la maggior parte di quei bit non verrà analizzata come parte --endpoint-detailsdell'argomento.