AWS工程师学习阿里云【函数计算篇(4)】

为了学习阿里云,通常主要使用AWS的工程师提供了相关信息和步骤。

这次的内容是什么

    • start-web-frameworkの紹介(再掲)

 

    Function Computeを利用したWebフレームワーク(Django)をServerless Devsで実装

这将是如下所述。

免责声明

此文是根据发布时的信息编写的,可能与最新信息不同。
此文不能保证完整性、准确性、实用性、安全性等。
如果您使用此文,请自行负责。

■ 先决条件

    • Alibaba Cloudアカウントを作成済みであることを前提とします。

Alibaba Cloud アカウントを作成

AWSエンジニアが学習するAlibaba Cloud【Function Compute編 (2)】までを実施済みの環境であることを前提とします。

概述

开始web框架

在上一次的Laravel版中也进行了类似的解释,start-web-framework是一个利用阿里巴巴云的Web框架应用案例。
已经公开了将Web框架部署到阿里云的函数计算的方法。
同时,这也成为了Serverless Devs项目的默认仓库之一。

    • start-web-framework

https://github.com/devsapp/start-web-framework/blob/master/readme_en.md

现在,Web框架的部署方法如下,在start-web-framework已经公开:

Node.jsPythonPHPGoJavaOthersExpress [custom]Flask [python3]Think PHP [custom]BeeGoTomcat/JettyGatsbyEgg [custom]Tornado [custom]Laravel [custom]Gin [custom]SpringBoot [custom]Hugo [custom]Nextjs [custom]Bottle [python3]Discuz [custom]-Quarkus-Nuxtjs [custom]Web.py [python3]WordPress [custom]—Hapi [custom]Django [python3]Zblog [custom]—Koa [custom]FastAPI [custom]Ecshop [custom]—Nest [custom]Web2pyMetinfo [custom]—Midway-koa [custom]Pyramid [python3]Whatsns [custom]—Vue.js [custom]-Typecho [custom]—

这次我准备参考Serverless Devs使用Python开发中最受欢迎的WEB框架Django的start-web-framework来进行实现。

■ 让我们开始吧 ba)

1. 使用函数计算进行执行(Serverless Devs)

这次我们还是使用Serverless Devs来部署Django,并展示“Hello World”的内容。这个步骤也是上一次(函数计算篇(2))的延续。

– 创建「AliyunFcDefaultRole」角色
– 创建「RAM用户(serverlessdevstest)」并生成AccessKey/AccessKey Secret
– 为「RAM用户(serverlessdevstest)」添加AdministratorAccess权限

已经执行了。

1.1. 登录阿里巴巴云

请输入您的账号(电子邮件)和密码,然后点击【登录】按钮。

FunctionCompute_10001.PNG

1.2. 启动CloudShell

为了进行验证,本次也将在CloudShell中执行ServerlessDevs。
请点击屏幕上的菜单,选择【CloudShell】。

FunctionCompute_10008.PNG

确认CloudShell的终端显示在画面底部。

FunctionCompute_10009.PNG

1.3. 引入 Serverless Devs 开发者工具

在CloudShell的终端中执行以下命令来安装Serverless Devs开发者工具。
如果在CloudShell之外安装,请先安装Node.js12或更新版本,然后再执行该命令。

npm install @serverless-devs/s -g
FunctionCompute_10009_1.PNG

1.4. 初始化并部署 Serverless Devs 项目

安装完Serverless Devs开发者工具后,通过执行以下命令初始化项目。此次我们在init命令后添加start-django,以从默认仓库获取Django项目模板。有关init命令的详细信息,请参阅Doc中的init command。

s init start-django -d start-django
FunctionCompute_40001.PNG

在项目初始化界面上,您需要输入或选择以下项目。本次选择界面的一部分显示为中文。
这个显示似乎只是暂时的,将来会被修正,但在本篇文章中,我们将按照屏幕上的选择项进行记录,作为一种解决方案。

创建应用所在的地区
(訳:アプリケーションを配置するリージョンを作成する)

請輸入東京區域(ap-northeast-1)。

服务名称,只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间
(訳:サービス名。英字、数字、アンダースコア、下線のみ可。 数字やアンダースコアからの開始は不可。 文字数は1から128 まで)

请在输入中写入Function Compute的服务名称(此次输入为”FirstWebFlameworkServerlessDevsDjango”)。

函数名称,只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-64 之间
(訳:関数名。英字、数字、アンダースコア、下線のみ可。 数字やアンダースコアからの開始は不可。 文字数は1から64 まで)

请输入Function Compute的函数名(本次输入为”FirstWebFlameworkServerlessDevsDjango”)。

    please select credential alias (Use arrow keys)

选择默认的 Serverless Devs 访问选项

由于这次还涉及到是否进行部署的选择,所以请您输入【Y】进行部署。

    Do you want to deploy the project immediately? (Y/n)

选择Y

FunctionCompute_40002.PNG

部署完成后,将显示部署结果,请确认。
为了进行操作确认,将保留部署结果(在本次情况下是“framework”以下)。

FunctionCompute_40003.PNG

如果您没有记录部署结果,稍后可以通过执行以下命令来确认。

cd [プロジェクト名]
s info

1.5. 在创建Serverless Devs项目后进行操作验证(初始界面)。

使用浏览器(如Chrome)或命令行工具(如curl)对部署结果中显示的URL进行操作确认。

    • system_url : https://firstwevsdjango-firstwevsdjango-************.ap-northeast-1.fcapp.run

「Django」の初期画面が出力されたHTMLファイルを取得

custom_domain : http://firstwebflameworkserverlessdevsdjango.firstwebflameworkserverlessdevsdjango.*****************.ap-northeast-1.fc.devsapp.net

「Django」の初期画面が表示

FunctionCompute_40004.PNG

1.6. 检查Serverless Devs项目创建后的版本信息

您可以通过__init__.py文件来查看Django的版本。
在本项目中,我们使用的是Django 3.1.7。

cat ~/start-django/code/django/__init__.py  
FunctionCompute_40005.PNG

1.7. 添加实现「Hello World」

由于本步骤涉及Django的内容,所以省略了配置的详细信息。如果您想要了解详细内容,请参阅Django文档等相关资料。

这次也

http://[在部署结果输出的URL(custom_domain)]/hello

我們將在函數式視圖中新增一個設定,當訪問該網址時顯示「Hello World」。由於在部署時已經存在名為「Hello World」的應用程式目錄,我們將使用該目錄進行實作。

创建HTML模板

首先,进入start-django目录下的code目录。
然后,在App目录(HelloWorld目录)下,创建一个显示“Hello World”的HTML模板(位于templates目录下的index.html)。

$ cd start-django/code/
$ mkdir HelloWorld/templates
$ vi HelloWorld/templates/index.html

请在index.html文件中添加以下行,并保存。

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>Hello World</title>
    </head>
    <body>
         Hello World
    </body>
</html>
创建 Views

接下来,我们将使用 vi 命令在 Views 文件 (views.py) 中创建一个新的 HTML 模板 (templates 目录下的 index.html)。

$ vi HelloWorld/views.py

请在Views文件(views.py)中添加以下行代码来调用HTML模板(位于templates目录下的index.html),然后保存。

from django.shortcuts import render

def hello(request):
    return render(request, 'index.html')                                 
创建路由

创建Views文件(views.py)后,通过vi命令打开Route文件(urls.py)。

$ vi HelloWorld/urls.py 

请在Route文件(urls.py)中添加”文件导入”和”当访问特定URL时要执行的操作”(<= 添加的部分),然后保存。

# from django.contrib import admin
from django.urls import path
import index.views
from .views import hello <= 追加

urlpatterns = [
    path('', index.views.index),
    #    path('admin/', admin.site.urls),
    path('hello/', hello,name='hello'), <= 追加
]
将应用程序注册到INSTALLED_APPS

最后,为了将“HelloWorld”应用程序添加到INSTALLED_APPS的设置中,打开配置文件(settings.py)使用vi命令。

$ vi HelloWorld/settings.py

在「INSTALLED_APPS」中添加一个名为”HelloWorld”的应用程序(<= 追加的位置),然后保存。

# Application definition

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index.apps.IndexConfig',
    'HelloWorld', <= 追加
]

1.8. 确认Serverless Devs项目创建后的运行情况(Hello World)

将再次执行项目部署。

cd ~/start-django && s deploy -y

在部署完成后,您可以使用浏览器(如Chrome)或命令行工具(如curl)来确认该URL(在下面)是否添加了/hello。

    custom_domain : http://firstwebflameworkserverlessdevsdjango.firstwebflameworkserverlessdevsdjango.*****************.ap-northeast-1.fc.devsapp.net/hello

如果正常运行,将显示以下画面。

FunctionCompute_40006.PNG

■ 下次

我下回想尝试进行有关Java的实现。

bannerAds