大佬教程收集整理的这篇文章主要介绍了如何在 Windows Server 上的 Elastic Beanstalk 部署中正确使用 AWS Secrets Manager,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试在部署期间将我的应用程序连接字符串从 Secrets Manager 传递到 Elastic Beanstalk。如果我远程桌面到我要部署到的服务器上,我可以运行以下命令 -
aws secretsmanager get-secret-value --secret-ID XXX-MY-SECRET-ID --version-stage AWSCURRENT --query=SecretString --output text
而且输出正确。一切都很好。
但是,当我尝试通过 .ebextensions 文件夹自动执行此操作时,它始终返回一个空字符串。
所以我尝试了很多东西,首先使用容器命令指向我放在 .ebextensions 文件夹中的 PowersHell 文件,就像这样 -
container_commands:
00-myscript:
command : powersHell.exe -ExecutionPolicy Bypass -Command ".\\.ebextensions\\BuildConnectionStrings.ps1"
那么 PowersHell 命令将是
$response = aws secretsmanager get-secret-value --secret-ID XXX-MY-SECRET-ID --version-stage AWSCURRENT --query=SecretString --output text
$filename = "ConnectionStrings.config"
New-Item $filename -ItemType file
Set-Content $filename $response
如果我直接在 powersHell 中运行它,它会按预期运行。但是当我部署网站时,它只会创建一个空文件。
我尝试了将 PowersHell 命令直接放在 .ebextensions 配置文件中的各种组合,结果总是相同。
我只是不明白为什么当我直接在服务器上运行相同的命令时,它们会起作用,但通过 EB 部署时却不起作用。
我已经被困在这个问题上好几天了,有人可以帮忙吗?
所以对于其他有这个问题的人...
仅仅在服务器上安装 aws cli 是不够的。我遇到的错误是由 PowerSHell 无法识别 aws 命令引起的(即使它已安装)。
解决方案是在我的脚本开头运行以下代码 -
$command = "[Net.servicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
Invoke-Expression $command
Invoke-Webrequest -Uri "https://awscli.amazonaws.com/AWSCLIV2.msi" -Outfile C:\AWSCLIV2.msi
$arguments = "/i `"C:\AWSCLIV2.msi`" /quiet"
Start-Process msiexec.exe -ArgumentList $arguments -Wait
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
aws --version
这确保了 aws cli 将被安装(再次)。
我不知道为什么这是必要的,但这是我找到的唯一解决方案
以上是大佬教程为你收集整理的如何在 Windows Server 上的 Elastic Beanstalk 部署中正确使用 AWS Secrets Manager全部内容,希望文章能够帮你解决如何在 Windows Server 上的 Elastic Beanstalk 部署中正确使用 AWS Secrets Manager所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。