Terraform系统找不到指定的路径

Terraform系统找不到指定的路径,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,为了解决系统找不到指定路径的问题,必须进行哪些特定配置或语法更改。terraform试图从本地镜像加载提供程序时抛出的错误? 问题 terraform提供程序的本地文件系统镜像在自动化程序中重复使用 控制台打印出系统找不到指定的路径。在第三个模块第三次使用同一提供程序期间,第三个模块尝试在2分钟内下载该模块 在引发此错误之前的几分钟内,从同一本地文件系统镜像请求同一提供程序的前两次成功 当调用程序在每次请求前360秒休眠以避免可能的锁定原因时,问题仍然存在。6分钟的延迟并不能防止出现问题

为了解决系统找不到指定路径的问题,必须进行哪些特定配置或语法更改。terraform试图从本地镜像加载提供程序时抛出的错误?

问题

terraform提供程序的本地文件系统镜像在自动化程序中重复使用

  • 控制台打印出
    系统找不到指定的路径。
    在第三个模块第三次使用同一提供程序期间,第三个模块尝试在2分钟内下载该模块

  • 在引发此错误之前的几分钟内,从同一本地文件系统镜像请求同一提供程序的前两次成功

  • 当调用程序在每次请求前360秒休眠以避免可能的锁定原因时,问题仍然存在。6分钟的延迟并不能防止出现问题

  • 提供程序EXE文件存在

    在Windows资源管理器中查看时,
    terraform-provider-aws_v3.22.0_x5.exe
    provider文件确实会出现。然后,右键单击exe文件并打开属性窗口,位置和文件名如下所示:

    C:\projects\TERRAF~1\29DEC2~1\TERRAF~2\CALLS-~1\INSTAN~1\SUBNET~1\DEMO-D~1\TERRAF~1\PROVID~1\REGIST~1.IO\HASHIC~1\aws\322~1.0\WINDOW~1  
    
    然后,当我们运行
    dir
    命令来浏览目录时,我们还会看到以下内容:

    C:\path\to\some\directory>dir C:\projects\TERRAF~1\29DEC2~1\TERRAF~2\CALLS-~1\INSTAN~1\SUBNET~1\DEMO-D~1\TERRAF~1\PROVID~1\REGIST~1.IO\HASHIC~1\aws\322~1.0\WINDOW~1
     Volume in drive C is Windows
     Volume Serial Number is DAB2-5285
    
     Directory of C:\projects\TERRAF~1\29DEC2~1\TERRAF~2\CALLS-~1\INSTAN~1\SUBNET~1\DEMO-D~1\TERRAF~1\PROVID~1\REGIST~1.IO\HASHIC~1\aws\322~1.0\WINDOW~1
    
    12/29/2020  01:36 PM    <DIR>          .
    12/29/2020  01:36 PM    <DIR>          ..
    12/29/2020  01:36 PM       175,883,264 terraform-provider-aws_v3.22.0_x5.exe
               1 File(s)    175,883,264 bytes
               2 Dir(s)  736,395,243,520 bytes free
    
    @JohnHanley的建议

    根据@JohnHanley在评论中的建议,我们将``注册表项重置为
    1
    ,然后打开不同的Windows CMD实例,导航到相同的目录,并运行相同的自动化程序

    程序现在停止在与以前相同的位置,但这次程序肯定会挂起,而不是显式抛出错误

    以下是新的控制台输出,直到它挂起为止:

    Initializing provider plugins...
    - Finding latest version of hashicorp/aws...
    2020/12/29 15:39:21 [TRACE] getproviders.SearchLocalDirectory: C:\path\to\terraform\providers is a symlink to C:\path\to\terraform\providers
    2020/12/29 15:39:21 [TRACE] getproviders.SearchLocalDirectory: found registry.terraform.io/hashicorp/aws v3.22.0 for windows_amd64 at C:\path\to\terraform\providers\registry.terraform.io\hashicorp\aws\3.22.0\windows_amd64
    2020/12/29 15:39:21 [TRACE] getproviders.SearchLocalDirectory: found registry.terraform.io/hashicorp/http v2.0.0 for windows_amd64 at C:\path\to\terraform\providers\registry.terraform.io\hashicorp\http\2.0.0\windows_amd64
    2020/12/29 15:39:21 [TRACE] providercache.Dir.InstallPackage: installing registry.terraform.io/hashicorp/aws v3.22.0 from C:\path\to\terraform\providers\registry.terraform.io\hashicorp\aws\3.22.0\windows_amd64
    - Installing hashicorp/aws v3.22.0...
    

    错误消息表明存在MAX_路径问题。一个次要问题是路径使用DOS命名空间。解决方案是重新组织目录结构以缩短路径或使用UNC路径

    对于DOS名称空间,应用程序通常编码为支持255个字符的最大长度。对于长名称空间,最大长度为260个字符,其中目录部分不能超过MAX_PATH-12(248)个字符。终止NULL使用一个字符


    我认为您已达到260个字符的最大路径限制。您还使用DOS名称空间作为文件名。请重新安排文件夹结构以缩短路径长度,或者参考我的回答:@JohnHanley我刚刚重置了密钥。现在重新运行。请继续关注。@JohnHanley设置了该注册表项后,同一个自动化程序现在仍然在同一个位置停止,但这次它无限期地挂起,控制台中的最后一行是
    -安装hashicorp/aws v3.22.0…
    ,这与之前程序在同一位置立即抛出显式错误时不同。您是否将DOS命名空间更改为LONG?像这样的名称
    TERRAF~1
    在DOS名称空间中。重新创建与长文件名(LFN)兼容的路径。我还建议您在更改注册表后重新启动系统。@JohnHanley我更改了注册表项,但此程序可能没有应用程序清单,因为这是当前版本中的Python3脚本。您有时间评论吗?@CodeMed-这绝对是一个有趣的问题。我会调查一下的。
    Initializing provider plugins...
    - Finding latest version of hashicorp/aws...
    2020/12/29 15:39:21 [TRACE] getproviders.SearchLocalDirectory: C:\path\to\terraform\providers is a symlink to C:\path\to\terraform\providers
    2020/12/29 15:39:21 [TRACE] getproviders.SearchLocalDirectory: found registry.terraform.io/hashicorp/aws v3.22.0 for windows_amd64 at C:\path\to\terraform\providers\registry.terraform.io\hashicorp\aws\3.22.0\windows_amd64
    2020/12/29 15:39:21 [TRACE] getproviders.SearchLocalDirectory: found registry.terraform.io/hashicorp/http v2.0.0 for windows_amd64 at C:\path\to\terraform\providers\registry.terraform.io\hashicorp\http\2.0.0\windows_amd64
    2020/12/29 15:39:21 [TRACE] providercache.Dir.InstallPackage: installing registry.terraform.io/hashicorp/aws v3.22.0 from C:\path\to\terraform\providers\registry.terraform.io\hashicorp\aws\3.22.0\windows_amd64
    - Installing hashicorp/aws v3.22.0...