如何在 AWS EC2 Centos 上使用 Terraform 修复用 python 3 编写的简单 http 服务器

How to fix simple http server written in python 3 using Terraform on AWS EC2 Centos

我正在使用 terraform main.tf 为 Centos AMI 启动新的 AWS EC2 实例。我能够创建和连接 AWS 实例。

但我有以下问题

任何人都可以帮助我...是否有任何可能性,以检查 terraform 这些资源确实是在 AWS EC2 实例中创建的。像某种调试日志。

PS:我的 EC2 实例默认安装了 python2.7,所以在 main.tf 我尝试安装 python3 用于执行 python 脚本和这个 python 脚本在我的本地运行良好。

或者是否有执行此操作的最佳方法。 我仍在使用 Terraform 学习 AWS。

简单-你好-world.py

from http.server import BaseHTTPRequestHandler, HTTPServer


# HTTPRequestHandler class
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):

    # GET
    def do_GET(self):
        # Send response status code
        self.send_response(200)

        # Send headers
        self.send_header('Content-type', 'text/html')
        self.end_headers()

        # Send message back to client
        message = "Hello world!"
        # Write content as utf-8 data
        self.wfile.write(bytes(message, "utf8"))
        return


def run():
    print('starting server...')

    # Server settings
    # Choose port 8080, for port 80, which is normally used for a http server, you need root access
    server_address = ('127.0.0.1', 8081)
    httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
    print('running server...')
    httpd.serve_forever()


run()

main.tf


provider "aws" {
  region = "us-east-2"
  version = "~> 1.2.0"
}

resource "aws_instance" "hello-world" {
  ami = "ami-ef92b08a"
  instance_type = "t2.micro"

  provisioner "local-exec" {
    command = <<EOH
      sudo yum -y update
      sudo yum install -y python3.6
    EOH
  }

  user_data = "${file("${path.module}/simple-hello-world.py")}"

  tags {
    Name = "my-aws-terraform-hello-world"
  }
}

resource "aws_security_group" "allow-tcp" {
  name = "my-aws-terraform-hello-world"
  ingress {
    from_port = 8080
    to_port = 8080
    protocol = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

1 - 您正在上传脚本,但并未执行。您必须像安装 python 一样调用它,使用 local-exec.

2 - 您打开了端口 8080,但您的应用程序在 8081 上运行。