Skip to content

Commit 23fbfc5

Browse files
committed
feat: upgrade python flask example.
1. add oss access example code 2. add print httpContext example 3. release version bump to 0.1.0
1 parent 8fd86ea commit 23fbfc5

File tree

18 files changed

+489
-38
lines changed

18 files changed

+489
-38
lines changed

web-framework/python/flask/publish.yaml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Type: Project
33
Name: start-flask-cap
44
Provider:
55
- 阿里云
6-
Version: 0.0.5
6+
Version: 0.1.0
77
Description: 本案例展示了如何将 Flask,一款非常受欢迎的 Web 框架,快捷创建并部署到云原生应用开发平台 CAP。Flask 以其轻量级、简洁性和易用性著称,特别适用于小型、简单的 Web 应用或 API 开发。
88
HomePage: https://github.com/devsapp/start-web-framework/tree/dipper/web-framework/python/flask
99
Organization: 阿里云函数计算(FC)
@@ -25,6 +25,7 @@ Parameters:
2525
required: # 必填项
2626
- region
2727
- functionName
28+
- roleArn
2829
properties:
2930
region:
3031
title: 地域
@@ -58,3 +59,17 @@ Parameters:
5859
default: flask-${default-suffix}
5960
pattern: "^[a-zA-Z_][a-zA-Z0-9-_]{0,127}$"
6061
description: 函数名称,只能包含字母、数字、下划线和中划线。不能以数字、中划线开头。长度在 1-128 之间
62+
roleArn:
63+
title: 服务角色ARN
64+
type: string
65+
default: "AliyunFCDefaultRole"
66+
pattern: "^acs:ram::[0-9]*:role/.*$"
67+
description: "函数计算访问其他云服务时使用的服务角色,需要填写具体的角色ARN,格式为acs:ram::$account-id>:role/$role-name。例如:acs:ram::14310000000:role/aliyunfcdefaultrole。
68+
\n如果您没有特殊要求,可以使用函数计算提供的默认的服务角色,即AliyunFCDefaultRole。如果您首次使用函数计算,可以访问 https://fcnext.console.aliyun.com 进行授权。
69+
\n详细文档参考 https://help.aliyun.com/document_detail/181589.html?spm=5176.fcnext.help.dexternal.7bea78c8sVHoRf#section-o93-dbr-z6o"
70+
x-role:
71+
name: AliyunFCDefaultRole
72+
service: fc
73+
authorities:
74+
- AliyunOSSFullAccess
75+
- AliyunFCDefaultRolePolicy
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.idea/
2+
.venv/
3+
.vscode/
4+
.DS_Store
5+
.env
6+
s.yaml
7+
readme.md
8+
build.sh
9+
.fcignore
10+
.gitignore
Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
# Created by https://www.toptal.com/developers/gitignore/api/python,intellij+all
2+
# Edit at https://www.toptal.com/developers/gitignore?templates=python,intellij+all
3+
4+
### Intellij+all ###
5+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
6+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
7+
8+
# User-specific stuff
9+
.idea/**/workspace.xml
10+
.idea/**/tasks.xml
11+
.idea/**/usage.statistics.xml
12+
.idea/**/dictionaries
13+
.idea/**/shelf
14+
15+
# AWS User-specific
16+
.idea/**/aws.xml
17+
18+
# Generated files
19+
.idea/**/contentModel.xml
20+
21+
# Sensitive or high-churn files
22+
.idea/**/dataSources/
23+
.idea/**/dataSources.ids
24+
.idea/**/dataSources.local.xml
25+
.idea/**/sqlDataSources.xml
26+
.idea/**/dynamic.xml
27+
.idea/**/uiDesigner.xml
28+
.idea/**/dbnavigator.xml
29+
30+
# Gradle
31+
.idea/**/gradle.xml
32+
.idea/**/libraries
33+
34+
# Gradle and Maven with auto-import
35+
# When using Gradle or Maven with auto-import, you should exclude module files,
36+
# since they will be recreated, and may cause churn. Uncomment if using
37+
# auto-import.
38+
# .idea/artifacts
39+
# .idea/compiler.xml
40+
# .idea/jarRepositories.xml
41+
# .idea/modules.xml
42+
# .idea/*.iml
43+
# .idea/modules
44+
# *.iml
45+
# *.ipr
46+
47+
# CMake
48+
cmake-build-*/
49+
50+
# Mongo Explorer plugin
51+
.idea/**/mongoSettings.xml
52+
53+
# File-based project format
54+
*.iws
55+
56+
# IntelliJ
57+
out/
58+
59+
# mpeltonen/sbt-idea plugin
60+
.idea_modules/
61+
62+
# JIRA plugin
63+
atlassian-ide-plugin.xml
64+
65+
# Cursive Clojure plugin
66+
.idea/replstate.xml
67+
68+
# SonarLint plugin
69+
.idea/sonarlint/
70+
71+
# Crashlytics plugin (for Android Studio and IntelliJ)
72+
com_crashlytics_export_strings.xml
73+
crashlytics.properties
74+
crashlytics-build.properties
75+
fabric.properties
76+
77+
# Editor-based Rest Client
78+
.idea/httpRequests
79+
80+
# Android studio 3.1+ serialized cache file
81+
.idea/caches/build_file_checksums.ser
82+
83+
### Intellij+all Patch ###
84+
# Ignore everything but code style settings and run configurations
85+
# that are supposed to be shared within teams.
86+
87+
.idea/*
88+
89+
!.idea/codeStyles
90+
!.idea/runConfigurations
91+
92+
### Python ###
93+
# Byte-compiled / optimized / DLL files
94+
__pycache__/
95+
*.py[cod]
96+
*$py.class
97+
98+
# C extensions
99+
*.so
100+
101+
# Distribution / packaging
102+
.Python
103+
build/
104+
develop-eggs/
105+
dist/
106+
downloads/
107+
eggs/
108+
.eggs/
109+
lib/
110+
lib64/
111+
parts/
112+
sdist/
113+
var/
114+
wheels/
115+
share/python-wheels/
116+
*.egg-info/
117+
.installed.cfg
118+
*.egg
119+
MANIFEST
120+
121+
# PyInstaller
122+
# Usually these files are written by a python script from a template
123+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
124+
*.manifest
125+
*.spec
126+
127+
# Installer logs
128+
pip-log.txt
129+
pip-delete-this-directory.txt
130+
131+
# Unit test / coverage reports
132+
htmlcov/
133+
.tox/
134+
.nox/
135+
.coverage
136+
.coverage.*
137+
.cache
138+
nosetests.xml
139+
coverage.xml
140+
*.cover
141+
*.py,cover
142+
.hypothesis/
143+
.pytest_cache/
144+
cover/
145+
146+
# Translations
147+
*.mo
148+
*.pot
149+
150+
# Django stuff:
151+
*.log
152+
local_settings.py
153+
db.sqlite3
154+
db.sqlite3-journal
155+
156+
# Flask stuff:
157+
instance/
158+
.webassets-cache
159+
160+
# Scrapy stuff:
161+
.scrapy
162+
163+
# Sphinx documentation
164+
docs/_build/
165+
166+
# PyBuilder
167+
.pybuilder/
168+
target/
169+
170+
# Jupyter Notebook
171+
.ipynb_checkpoints
172+
173+
# IPython
174+
profile_default/
175+
ipython_config.py
176+
177+
# pyenv
178+
# For a library or package, you might want to ignore these files since the code is
179+
# intended to run in multiple environments; otherwise, check them in:
180+
# .python-version
181+
182+
# pipenv
183+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
184+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
185+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
186+
# install all needed dependencies.
187+
#Pipfile.lock
188+
189+
# poetry
190+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
191+
# This is especially recommended for binary packages to ensure reproducibility, and is more
192+
# commonly ignored for libraries.
193+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
194+
#poetry.lock
195+
196+
# pdm
197+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
198+
#pdm.lock
199+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
200+
# in version control.
201+
# https://pdm.fming.dev/#use-with-ide
202+
.pdm.toml
203+
204+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
205+
__pypackages__/
206+
207+
# Celery stuff
208+
celerybeat-schedule
209+
celerybeat.pid
210+
211+
# SageMath parsed files
212+
*.sage.py
213+
214+
# Environments
215+
.env
216+
.venv
217+
env/
218+
venv/
219+
ENV/
220+
env.bak/
221+
venv.bak/
222+
223+
# Spyder project settings
224+
.spyderproject
225+
.spyproject
226+
227+
# Rope project settings
228+
.ropeproject
229+
230+
# mkdocs documentation
231+
/site
232+
233+
# mypy
234+
.mypy_cache/
235+
.dmypy.json
236+
dmypy.json
237+
238+
# Pyre type checker
239+
.pyre/
240+
241+
# pytype static type analyzer
242+
.pytype/
243+
244+
# Cython debug symbols
245+
cython_debug/
246+
247+
# PyCharm
248+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
249+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
250+
# and can be added to the global gitignore or merged into this file. For a more nuclear
251+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
252+
#.idea/
253+
254+
### Python Patch ###
255+
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
256+
poetry.toml
257+
258+
# ruff
259+
.ruff_cache/
260+
261+
# LSP config files
262+
pyrightconfig.json
263+
264+
# End of https://www.toptal.com/developers/gitignore/api/python,intellij+all
265+
266+
python
267+
.idea
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import oss2
2+
3+
from config import config
4+
5+
stsAuth = oss2.StsAuth(config.ACCESS_KEY_ID, config.ACCESS_KEY_SECRET, config.SECURITY_TOKEN)
6+
# https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints
7+
endpoint = "oss-%s-internal.aliyuncs.com" % config.CURRENT_REGION
8+
oss_client = oss2.Service(stsAuth, endpoint)

web-framework/python/flask/src/build.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ start_flask:
44
- python3.10
55
steps:
66
- run: mkdir -p python
7-
path: ./code
7+
path: ./
88
- run: pip install -r requirements.txt -t ./python
9-
path: ./code
9+
path: ./

web-framework/python/flask/src/code/index.py

Lines changed: 0 additions & 30 deletions
This file was deleted.

web-framework/python/flask/src/code/requirements.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import os
2+
3+
4+
class Config:
5+
SECRET_KEY = os.environ.get('SECRET_KEY') or 'my-passwd'
6+
ACCESS_KEY_ID = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_ID") or 'default-access-key-id'
7+
ACCESS_KEY_SECRET = os.environ.get("ALIBABA_CLOUD_ACCESS_KEY_SECRET") or 'default-access-key-secret'
8+
SECURITY_TOKEN = os.environ.get("ALIBABA_CLOUD_SECURITY_TOKEN") or 'default-security-token'
9+
CURRENT_REGION = os.environ.get("FC_REGION") or 'cn-hangzhou'
10+
DEBUG = True
11+
12+
13+
config = Config
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from init import create_app
2+
app = create_app()
3+
4+
if __name__ == "__main__":
5+
app.run(host="0.0.0.0", port=9000)

0 commit comments

Comments
 (0)