是否可以通过 Terraform 为 AWS Transfer SFTP 设置自定义主机名

问题描述 投票:0回答:1

我正在尝试使用 AWS Transfer 设置具有自定义主机名的 SFTP 服务器。我正在使用 Terraform 管理资源。我目前已启动并运行资源,并且已使用 Terraform 创建 Route53 记录以指向 SFTP 服务器,但 SFTP 仪表板上的自定义主机名条目显示为空白。

当然,当我通过 AWS 控制台手动创建服务器并将 Route53 记录与其关联时,它看起来就像我所期望的那样:

我浏览了 terraform 资源文档,并尝试了解如何通过 aws cli 或 cloudformation 完成它,但我没有任何运气。

我的服务器资源如下所示:

resource "aws_transfer_server" "sftp" {
  identity_provider_type = "SERVICE_MANAGED"
  logging_role           = "${aws_iam_role.logging.arn}"
  force_destroy          = "false"

  tags {
    Name = ${local.product}-${terraform.workspace}"
  }
}

我的 Route53 记录如下:

resource "aws_route53_record" "dns_record_cname" {
  zone_id = "${data.aws_route53_zone.sftp.zone_id}"
  name    = "${local.product}-${terraform.workspace}"
  type    = "CNAME"
  records = ["${aws_transfer_server.sftp.endpoint}"]
  ttl = "300"
}

从功能上来说,我可以继续使用我所拥有的,我可以使用我的 DNS 连接到服务器,但我正在尝试了解完整的情况。

sftp terraform terraform-provider-aws
1个回答
4
投票

AWS

当您使用 AWS 云开发工具包 (AWS CDK) 或通过 CLI 创建服务器时,如果您希望该服务器具有自定义主机名,则必须添加标签。当您使用控制台创建 Transfer Family 服务器时,标记会自动完成。

因此,您需要能够使用 Terraform 添加这些标签。在 v4.35.0 中,他们添加了对新资源的支持:aws_transfer_tag

GitHub Issue 中提供的示例

resource "aws_transfer_server" "with_custom_domain" {
  # config here
}

resource "aws_transfer_tag" "with_custom_domain_route53_zone_id" {
  resource_arn = aws_transfer_server.with_custom_domain.arn
  key          = "aws:transfer:route53HostedZoneId"
  value        = "/hostedzone/ABCDE1111222233334444"
}

resource "aws_transfer_tag" "with_custom_domain_name" {
  resource_arn = aws_transfer_server.with_custom_domain.arn
  key          = "aws:transfer:customHostname"
  value        = "abc.example.com"
}
© www.soinside.com 2019 - 2024. All rights reserved.