用python测试本地管理的身份



我试图使用python设置代码来测试azure托管身份服务,并且使用c#我可以在本地测试代码。有什么方法可以在本地测试python代码吗?

在azure appservice中启用托管身份在azure SQL server中添加应用程序用户(appservice)并赋予权限。

这是我的示例python代码连接到azure SQL与托管身份

conn = db.connect('Driver={ODBC Driver 17 for SQL Server};'
'Server=testdb.database.windows.net;'
'Database=studentdb;'
'Authentication=ActiveDirectoryIntegrated;'
)
query = pd.read_sql_query('SELECT * FROM STUDENT', conn)
frame = pd.DataFrame(query)
return func.HttpResponse(frame.to_json(orient="index"), status_code=200)

谁能帮我在本地测试这段代码?因为我没有在azure上部署这些代码和测试的权限。

你可以使用这个Moto库来测试服务。你可以像运行python脚本一样运行Lambda函数。

if __name__ == "__main__":
event = []
context = []
lambda_handler(event, context)

如果你在虚拟环境中,那么这将确保lambda函数所需的所有依赖项都正确安装。

如果您从Microsoft查看此文档,那么您将发现-

托管身份不能用于验证本地运行的应用程序。您的应用程序必须部署到支持托管身份的Azure服务。

重要的是要理解Azure中的托管身份功能仅在部署应用程序服务时才相关。

作为一种选择,你可以使用Azure.Identity库中的DefaultAzureCredential(),它在本地运行和部署的web应用程序时都是兼容的。你可以从官方文档中了解更多关于Azure.Identity的工作原理。

大多数时候,我们使用Azure MSI将Azure函数中的Azure SQL与python连接起来。我们可以使用Azure MSI获得Azure AD访问令牌,然后您可以使用令牌连接Azure SQL。

一旦你在Azure Web应用程序上启用了系统分配身份并赋予SQL权限,你就可以直接从python访问数据库,如下面的代码片段所示。

import pyodbc  
from logzero import loggerwith pyodbc.connect(  
"Driver=" + driver + ";Server=" + server + ";PORT=1433;Database=" + database  
+ ";Authentication=ActiveDirectoryMsi",  
) as conn:  
logger.info("Successful connection to database")
with conn.cursor() as cursor:  
cursor.execute(“select @@version")).fetchall()

以下是上面使用的参数:

司机
  • :我们应该使用:" {ODBC Driver 17 for SQL Server} "
  • 服务器
  • : sql server上是你的数据库
  • :数据库的名称
  • 认证:指定连接方法"ActiveDirectoryMsi">

从Azure Web App文档中检查SQL数据库访问与托管身份,并为Azure文档配置本地Python开发环境以获取更多信息。

最新更新