首页 > 其他分享 >【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问

【Azure 环境】ARM部署模板大于4MB的解决方案及Linked Template遇见存储账号防火墙无法访问

时间:2023-08-01 19:45:18浏览次数:48  
标签:Account template 无法访问 ARM Azure 4MB Template azure Linked

问题一:在ADF Pipeline部署ARM Template报错“Deployment failed -- the request content size exceeds the maximum size of 4MB”

image

【解答】

4MB是一个固定限制,不可以修改其大小。 如果Template文件太大,需要把拆分成多个后,通过Linked Template的方式部署。 

在部署的时候,ARM通过main Template文件中配置的 templateLink.uri 来获取模板内容,所以这个URI必须是可以被ARM通过HTTP/HTTPS访问的地址。 如 Storage Account。

image

(Source: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/best-practices#template-limits )

image

(Source Link: https://learn.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/error-job-size-exceeded?tabs=json#solution-2-simplify-template )

 

问题二:采用Linked Template方案,把大于4MB的ARM Template拆分成小于4MB的文件,然后存储在Storage Account. 但是由于安全原因,Storage Account 必须启用防火墙,尽管把ARM所属于的Service Tags中的所有IPv4地址添加到白名单中,但依旧回遇见 403 错误 (SASIpAuthorization)

image

【解答】

在部署ARM时,将由ARM服务的实例从Storage Account访问Linked Template uri, 查看ARM服务的Service Tags,存在IPv4 和 IPv6, 而在目前阶段,Storage Account不允许配置IPv6地址。

如果ARM访问模板时,其执行实例恰巧使用的IPv6地址的情况下,就会遇见403错误。

image

(Source: https://www.microsoft.com/en-us/download/details.aspx?id=57062)

 

所以,在ARM中,也明确的指出了 Linked Template 不适用于 Storage Account 打开防火墙的场景。 

image

( Source : https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/linked-templates?tabs=azure-powershell#securing-an-external-template)

 

问题三:基于把Linked Template存放在Storage Account,但因为启用防火墙而无法访问的情况下,是否有其他的代替方案呢?

【解答】

有,使用 Template Spec,通过把main template和linked  Template上传到Azure Template Spec中,通过调用az deployment group create 的方式进行调用。参考链接:https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-specs-create-linked?tabs=azure-powershell

上传到Azure Template Spec中有两种方式:

a.直接上传Main Template,这个过程会直接将所有的link templates作为统一的request body调用Azure API,这时候很可能会受到文件大小4MB的限制。

b.先上传link template,然后在main template中修改templateLink属性中的id为link template 在Azure 中的resource id。之后直接通过az命令对main template进行部署即可。但是这个方式有一定的弊端:通过调用main template的方式,Azure会首先将link template中的资源进行部署,在确认他们所有部署成功后进行main template的部署,经过之前的测验该方式的部署时间在30分钟左右。

关于Template Spec的权限和费用问题:

1) 需要上传template spec的话通常需要用到RBAC权限 Template Spec Contributor.  其它权限参考: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-specs?tabs=azure-powershell#required-permissions

2) Template Spec is not a charged service in Azure. (Template Spec 是不收费的Azure服务)

 

标签:Account,template,无法访问,ARM,Azure,4MB,Template,azure,Linked
From: https://www.cnblogs.com/lulight/p/17598868.html

相关文章

  • 无法访问org.springframework.context.annotation.Bean 错误的类文件:类文件具有错误
    Spring6和SpringBoot3不再支持Java8,最低版本为JDK17,请升级JDK>=17,同时IDEA>=2021.2长期使用的Java8,这次报错一直切换Spring依赖版本,没想到是Java太旧了,而且IDEA小于2021.2版本也不支持Java17来源SpringSecurity教程的源码,本地打开,各种依赖报错Error:(6,46)java......
  • Java面试题 P11:ArrayList和LinkedList区别
    ArrayList:基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制:因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往后复制一份,插入新元素),使用尾插法并指定初始容量可以极大提升性能,甚至超过linkedListLin......
  • Building for iOS, but the linked and embedded framework 'libpag.framework' w
    BuildingforiOS,butthelinkedandembeddedframework'libpag.framework'issueWhendevelopingiOSapps,itisnotuncommontocomeacrossvariouserrorsandissuesduringthebuildprocess.Onesuchissueisthe"BuildingforiOS,butth......
  • java list转linkedHashMap
    JavaList转LinkedHashMap在Java编程中,我们经常会遇到需要将一个List转换为LinkedHashMap的场景。List是一个有序的集合,而LinkedHashMap是一个有序的键值对集合,它可以保持插入顺序。这种转换可以帮助我们在处理数据时更方便地按照特定的顺序进行操作。使用Java的StreamAPI进行Li......
  • Remove Linked List Elements
    SourceProblemRemoveallelementsfromalinkedlistofintegersthathavevalueval.ExampleGiven1->2->3->3->4->5->3,val=3,youshouldreturnthelistas1->2->4->5题解删除链表中指定值,找到其前一个节点即可,将next指向下一个节点即可。Java/**......
  • Linux shell | 竖线管道符号放变量 无法访问'|': 没有那个文件或目录 无法访问'wc':
    工作中遇到一个实际问题,文本编码转换。原始命令:catutf8.log|iconv-c-fUTF-8-tGBK|teegbk.log因为某种(方便修改、方便替换)原因,想把“|iconv-c-fUTF-8-tGBK|”命令这段,想放到变量里,做到一处修改处处生效的效果。pipe="|iconv-c-fUTF-8-tGBK|"catutf......
  • [Linux][报错解决] 使用固定ip导致无法访问网络
    起因之前试了试代码......
  • dockerhub网页无法访问解决
    docker官网最近无法访问,如果只是拉取镜像,其实问题不大,可以通过设置中科大,阿里等镜像仓库解决;但是如果想要查询tag,即docker镜像版本类型等信息,docker本身的命令并不支持,只能从web网页查看,找到一个网站,大部分热门的可查,据说有一些镜像可能版本较老,凑合使用吧:Docker......
  • 解决浏览器自动将http跳转至https导致无法访问的问题
      最近在宝塔面板申请免费的SSL证书后,部署证书的80端口下的网站可以通过https正常访问,但其他未部署证书的端口也被强制跳转至https请求,导致浏览器提示不安全从而无法访问。宝塔的8888端口也不能访问,当时那是一个慌,当我尝试了各种方法,如重新放行443端口、重新配置nginx反向代理、......
  • Objective C无法访问Swift结构体struct
    letParseApplicationId="xxx"letParseClientKey="xxx"letAppGreenColor=UIColor(red:0.2,green:0.7,blue:0.3alpha:1.0)@objcclassConstant:NSObject{privateinit(){}classfuncparseApplicationId()->String......