【发布时间】:2020-09-04 21:39:25
【问题描述】:
我在这种情况下挣扎了一段时间:
- 我在 PHP (WordPress) 中有一个本地应用程序
- 当我提交更改时,我会自动将更改后的文件发送到 S3 通过 Git Hooks
- S3 存储桶接收这些更改的文件
- 在此之后,我向 lambda 函数发送通知,当 该文件被包含/删除
- 在 lambda 函数中,例如使用 javascript,我有 确定了存储桶和文件名(到目前为止一切顺利)。
问题是:如何将此文件从 Bucket 复制到 EC2 以完成我的自动化?
到目前为止我所尝试的:
A) 手动来说,我可以在我的 ec2 实例中做这样的事情,效果很好:
aws s3 sync s3://my-bucket "\var\www\html*" --exclude "wp-config.php"
B) 我还在“SSM 运行命令”上执行了一个类似的命令,它也可以完美运行:
wgethttps://my-bucket.s3.amazonaws.com/file.txt
C) 尝试创建一个非常简单的 SSM 文档,该文档执行一个简单的随机 bash 脚本,就像我在上一次尝试中所做的那样,尝试创建文档 - 创建命令或会话 - 会话类型并尝试一些你可以做的版本请参阅此示例(带/不带引号...):
---
schemaVersion: "2.2"
description: "Command Document Example JSON Template"
parameters:
Message:
type: "String"
description: "Example"
default: "Hello World"
mainSteps:
- action: "aws:runPowerShellScript"
name: "example"
inputs:
runCommand:
- cd /var/www/html
- wget https://my-bucket.s3.amazonaws.com/file.txt
出现此错误:无法运行命令:fork/exec /usr/bin/pwsh:没有这样的文件或目录(即使尝试使用和不使用引号)
如果有人有一些想法,也许某个地方的代码可以帮助我自动将单个文件从 S3 复制到 EC2,这将非常感谢!!!
提前谢谢你们! :)
【问题讨论】:
-
运行命令似乎很合适。你用linux吗?为什么不使用 linux 的运行命令?你需要powershell吗?
-
你得到的错误表明你没有安装powershell。应该试试
AWS-RunShellScript文档。 -
Marcin,非常感谢您,您为我指明了正确的方向!明天我将尝试在 Lambda 上执行此操作(具有适当的权限等...)Tks :)
-
没问题。告诉我进展如何。
-
最后,经过多次尝试,我能够通过以下链接解决此问题:stackoverflow.com/questions/60470604/… 这篇文章中的命令,它就是解决方案!但是非常感谢你的帮助!!!
标签: php amazon-web-services amazon-s3 amazon-ec2 aws-lambda