使用服务结构的Azure API管理

使用服务结构的Azure API管理,azure,azure-api-management,azure-service-fabric,Azure,Azure Api Management,Azure Service Fabric,问题: 我想设置一个CI/CD,每当我发布对SF API的更改时,它都会自动更新Azure API管理实例中API的端点 我打算怎么做? 我将更改推送到我的GitHub repo,它被构建并部署。发布的第二步是PowerShell脚本,它使用新部署的SF API的招摇过市文档更新现有的Azure APIM API 什么问题? 嗯,除非在Azure APIM API中定义了端点,否则无法通过网关。默认情况下,我可以在那里定义一个招摇过市端点,但每当运行PowerShell更新时,它都会删除该端点,

问题:

我想设置一个CI/CD,每当我发布对SF API的更改时,它都会自动更新Azure API管理实例中API的端点

我打算怎么做?

我将更改推送到我的GitHub repo,它被构建并部署。发布的第二步是PowerShell脚本,它使用新部署的SF API的招摇过市文档更新现有的Azure APIM API

什么问题?

嗯,除非在Azure APIM API中定义了端点,否则无法通过网关。默认情况下,我可以在那里定义一个招摇过市端点,但每当运行PowerShell更新时,它都会删除该端点,因为生成的招摇过市本身并不在其中,这是完全合乎逻辑的

如果我以某种方式在没有网关的情况下公开了招摇过市的端点,这将带来安全威胁,并有点扼杀了Azure APIM网关的用途

我的设置?

传入请求->Azure APIM->服务结构应用程序(公共/内部)

  • 理想情况下,内部SF应用程序不会通过网关公开,仅用于应用程序间通信

非常感谢您在这方面提供的任何帮助,因为我在这方面有点受阻:-)

您可以在APIM中创建一个单独的API,只访问SF端的swagger,而不将此API作为CI/CD的一部分进行更新。作为上述API的一部分,甚至可以从外部查看。例如,如果主API的后缀为“/myApi”,那么您的swagger API后缀可能被定义为“/myApi/swagger.json”(其中的操作可能有空URL模板)


或者,作为CI/CD的一部分,您可以在新导入的API中重新创建swagger访问操作。稍后将使用此端点获取swagger以进行下一次导入。

这些都像是黑客攻击,我想要感觉更自然的东西。至于创建一个单独的API,我以前考虑过,但我甚至可以针对单个APIM API定义多个后端SF端点吗??我找不到这方面的任何信息。好吧,在导入过程中,您可以提供规范文件或一个可公开访问的URL。如果您依赖APIM服务为作为您正在更新的API一部分的规范提供可公开访问的URL。。。这看起来像一个黑客。不知道为什么你需要在APIM中有一个API。您可以创建专门的API,该API仅用于提供对规范的访问,并且以后仅在导入时使用它,绝不会触及此enpoint。不过,请确保它的安全,因为APIM是面向公众的,而且您似乎希望避免暴露您的API。因此,APIM会自动使用密钥保护其中的所有API,因此通过APIM的炫耀行为将受到保护。至于使用单独的API来提供规范,我不喜欢这个想法。我宁愿采用你的第一种方法,也不愿采用。我计划与一位Azure架构师会面,让我与他们谈谈,并与您分享他们的建议。