gpt4 book ai didi

amazon-web-services - 如何从使用 CloudFormation 部署的自动化文档在 EC2 实例中执行 bash 代码

转载 作者:行者123 更新时间:2023-12-03 07:21:18 25 4
gpt4 key购买 nike

我正在尝试通过 aws:runco​​mmand 执行 bash 代码。我已从 AWS Repo to deploy a Golden Image pipeline 中获取并改编了以下代码片段

您在下面看到的内容是通过 CloudFormation 堆栈部署的。形成一个 AWS::SSM::Document 对象,传递各种输入。这是我的自动化文档的主要步骤之一。我正在尝试更新我的实例的操作系统。

{

"name": "updateOSSoftware",

"action": "aws:runCommand",

"maxAttempts": 3,

"timeoutSeconds": 3600,

"onFailure": "Abort",

"inputs": {

"DocumentName": "AWS-RunShellScript",

"InstanceIds": [

"{{startInstances.InstanceIds}}"

],

"Parameters": {

"commands": [

"export https_proxy=http://myproxy.com:myport",

"export https_proxy='{{OutBoundProxy}}'",

"set -e",

"[ -x \"$(which wget)\" ] && get_contents='wget $1 -O -'",

"[ -x \"$(which curl)\" ] && get_contents='curl -s -f $1'",

"eval $get_contents https://aws-ssm-downloads-eu-west-1.s3.amazonaws.com/scripts/aws-update-linux-instance > /tmp/aws-update-linux-instance",

"chmod +x /tmp/aws-update-linux-instance",

"/tmp/aws-update-linux-instance --pre-update-script '{{PreUpdateScript}}' --post-update-script '{{PostUpdateScript}}' --include-packages '{{IncludePackages}}' --exclude-packages '{{ExcludePackages}}' 2>&1 | tee /tmp/aws-update-linux-instance.log"

]

}

}

}

当我从系统管理器中执行该文档后,我通过 SSH 连接到 EC2 实例并尝试回显 $http_proxy,该变量未设置,表明代码未启动。

如何运行 bash 代码?

最佳答案

使用“export”命令导出的环境变量仅适用于当前 shell。如果您通过 ssh 登录到主机,它们将位于不同的 shell 中,我认为您看不到通过“RunCommand”设置的 env 变量。

解决方法是在 bash 配置文件中添加该命令。例如

echo "export https_proxy=http://myproxy.com:myport">> ~/.bash_profile

关于amazon-web-services - 如何从使用 CloudFormation 部署的自动化文档在 EC2 实例中执行 bash 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com