为了更好的使用开箱即用的云原生解决方案,你至少需要根据以下步骤来配置一个AWS账号,因为这些方案是在AWS的基础之上构建出来的。
在这个过程中,你可能会需要使用某些工具,比如Terraform,关于它的使用,你可以参考书籍《Terraform Up and Running》。
0)到这里下载Python 3.x运行时环境,如果你的机器上已经安装了,那么直接到下一步
1) 执行这句指令pip install awscli
来安装awscli,安装成功之后执行这句指令aws --version
,你将看到以下结果:
aws-cli/1.18.173 Python/3.7.6 Windows/10 botocore/1.19.13
2) 注册AWS账号,登录到这里来生成Access ID和Secret Key,如下图所示:
最终生成的ID和Key,格式如下所示:
Access Key ID:BKIAKB9JUUANG7TB6COI
Secret Access Key:AIJ8qvYQ8urOzw1QyIOXcBIIJu0xaYA9/7IYXWjP
3) 按照以下步骤在本地配置命令行登录信息
$ aws configure
AWS Access Key ID [None]: BKIAKB9JUUANG7TB6COI
AWS Secret Access Key [None]: AIJ8qvYQ8urOzw1QyIOXcBIIJu0xaYA9/7IYXWjP
Default region name [None]: ap-northeast-1
Default output format [None]: json
4) 执行这句指令aws sts get-caller-identity
来验证能够成功登录,成功登录的输出结果如下所示:
{
"UserId": "985678910112",
"Account": "985678910112",
"Arn": "arn:aws:iam::985678910112:root"
}
5) 到这里下载Terraform,将里面的可执行性文件Terraform放到环境变量PATH所指定的目录里,比如可以考虑和git所在的目录放在一起。然后,在命令行里输入这句指令terraform --version
来确保命令行里可以找到Terraform,输出结果如下所示:
Terraform v0.12.19
6) 编写terraform脚本main.tf,内容如下:
terraform {
required_version = "= 0.12.19"
}
provider "aws" {
version = "= 2.58"
region = "ap-northeast-1"
}
resource "aws_instance" "virtual_machine" {
ami = "ami-02b658ac34935766f"
instance_type = "t2.micro"
}
output "vm_info" {
value = {
ip = aws_instance.virtual_machine.public_ip
cpu = aws_instance.virtual_machine.cpu_core_count
instance_type = aws_instance.virtual_machine.instance_type
root_block_device = aws_instance.virtual_machine.root_block_device
}
}
注意,region = "ap-northeast-1"
指定了使用区域,目前我指定了东京区域,如果你服务的用户在中国区,那么你有2个选择,一个是宁夏区域(cn-northwest-1),另外一个是北京区域(cn-north-1)。
7) 在main.tf所在的目录里执行以下指令:
$ terraform init
$ terraform plan
$ terraform apply
最后一句指令会要求你输入yes才能往下执行,否则将终止,你只需要输入yes即可,如果一切顺利,那么你将看到以下结果:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
vm_info = {
"cpu" = 1
"instance_type" = "t2.micro"
"ip" = "3.113.19.135"
"root_block_device" = [
{
"delete_on_termination" = true
"device_name" = "/dev/sda1"
"encrypted" = false
"iops" = 100
"kms_key_id" = ""
"volume_id" = "vol-033d27e03e8f2de86"
"volume_size" = 8
"volume_type" = "gp2"
},
]
}
8) 在前一步,你已经创建了一个虚拟机资源,为了避免你日后忘记销毁该资源,你需要执行这句指令terraform destroy
,来销毁该资源,它同样要求你输入yes来确定销毁,你只需要输入yes并回车即可,成功销毁的输出结果如下所示:
Destroy complete! Resources: 1 destroyed.
9) 最后,你需要准备一个源码编辑器,我用的是VS Code,当然,你也可以选择你熟悉的源码编辑器
2cloudlab.com提供的模块都位于github上,那里有免费的云原生解决方案,当然也会有一些付费的云原生解决方案。它们的特点是开箱即用,能够帮助你把服务快速、稳定、安全地接入互联网。比如,你非常擅长研发WSGI兼容的Python程序,而对其它方面缺乏经验,此时,你可以借助module_load_balancer模块在互联网上创建该程序的运行环境,然后将它放入其中,为互联网公民提供服务。
使用module_load_balancer模块的方式非常简单,你只需要创建main.tf文件,内容如下:
terraform {
required_version = "= 0.12.19"
}
provider "aws" {
version = "= 2.58"
region = "ap-northeast-1"
}
module "load_balance" {
source = "github.com/2cloudlab/module_load_balancer//modules/load_balancer?ref=<tag>"
download_url = <your-WSGI-Compatible-Python-Package-URL>
package_base_dir = <your-root-folder-name-in-web-app-package>
app_dir = <your-web-app-folder>
envs = <your-app-environment-variables>
wsgi_app = <WSGI-Entry>
}
output "alb_dns_name" {
value = module.load_balance.alb_dns_name
description = "The domain name of the load balancer"
}
你只需要指定以下几点
ref=<tag>
中的tag
需要替换成该模块的版本号,比如v.0.0.3download_url
指向了WSGI兼容的Web App的tar.gz包,比如https://github.com/digolds/digolds_sample/archive/v0.0.1.tar.gzpackage_base_dir
是tar.gz中的根目录app_dir
是WSGI兼容的Web App所有执行文件所在tar.gz中的目录envs
是WSGI兼容的Web App所依赖的环境变量wsgi_app
是WSGI兼容的Web App的调用入口,关于该模块的详细用法,你可以参考这里指定之后,cd
到main.tf所在的目录,然后执行以下命令来创建WSGI兼容的Web App:
terraform init
terraform plan
terraform apply
成功之后,你将看到以下类似的输出:
Apply complete! Resources: 10 added, 0 changed, 0 destroyed.
Outputs:
alb_dns_name = alb-1-712872544.us-west-1.elb.amazonaws.com
等待几分钟之后,你的WSGI兼容的Web App就已经在互联网中运行了,此时,你可以在浏览器里输入alb_dns_name
所对应的值,来查看结果。
以上脚本帮你做了2件事情:
如下图所示(其中,红色部分圈起来的程序就是你的Web App,它是基于Python来编写的并且是WSGI兼容的):
把你的Web App接入互联网的整个过程所需时间不超过一个小时,你要做的只是准备好你的Web App。如果你的Web App需要存储一些数据,那么你也可以通过类似的方法使用module_dynamodb和module_s3模块。
{{ c.user.name }}
{{ c.content }}