amazon-web-services - 如何根据 S3 事件将文件从 s3 部署到 ec2 实例
问题描述
实际上我正在研究管道。所以我有一个场景,我将一些工件推入 s3。现在我编写了一个 shell 脚本,它下载文件夹并将每个文件复制到 Wildfly 服务器(Ec2 实例)中的所需位置。
#!/bin/bash
mkdir /home/ec2-user/test-temp
cd /home/ec2-user/test-temp
aws s3 cp s3://deploy-artifacts/test-APP test-APP --recursive --region us-east-1
aws s3 cp s3://deploy-artifacts/test-COMMON test-COMMON --recursive --region us-east-1
cd /home/ec2-user/
sudo mkdir -p /opt/wildfly/modules/system/layers/base/psg/common
sudo cp -rf ./test-temp/test-COMMON/standalone/configuration/standalone.xml /opt/wildfly/standalone/configuration
sudo cp -rf ./test-temp/test-COMMON/modules/system/layers/base/com/microsoft/* /opt/wildfly/modules/system/layers/base/com/microsoft/
sudo cp -rf ./test-temp/test-COMMON/modules/system/layers/base/com/mysql /opt/wildfly/modules/system/layers/base/com/
sudo cp -rf ./test-temp/test-COMMON/modules/system/layers/base/psg/common/* /opt/wildfly/modules/system/layers/base/psg/common
sudo cp -rf ./test-temp/test-APP/standalone/deployments/HS.war /opt/wildfly/standalone/deployments
sudo cp -rf ./test-temp/test-APP/bin/resource /opt/wildfly/bin/resource
sudo cp -rf ./test-temp/test-APP/modules/system/layers/base/psg/* /opt/wildfly/modules/system/layers/base/psg/
sudo cp -rf ./test-temp/test-APP/standalone/deployments/* /opt/wildfly/standalone/deployments/
sudo chown -R wildfly:wildfly /opt/wildfly/
sudo service wildfly start
但是每次我将新工件推入 s3. 我必须去服务器并手动运行这个脚本。有没有办法让它自动化?我正在阅读有关 lamda 的信息,但在 lamda 知道 s3 的变化之后。我要在哪里定义要运行的 shell 脚本?
任何指导都会有帮助。
解决方案
要在文件上传到 s3 存储桶时触发 lambda 函数,为此您必须在 s3 存储桶中设置事件通知。
设置 s3 事件通知的步骤:-
1-你的 lambda 和 s3 存储桶应该在同一个区域
2 - 转到 s3 存储桶的属性选项卡
3 - 打开 Event 并为 put 或 copy 等事件类型提供值
4 - 请在发送到选项中指定 Lambda ARN。
现在创建一个 lambda 函数并将 s3 存储桶添加为触发选项。只需确保您的 Lambda IAM 策略设置正确。
推荐阅读
- c# - 索引(ElasticClient.IndexMany())抛出 StackOverflowException
- python - 在 ManyToManyField 中计算喜欢 - django rest 框架
- postgis - 通过外部 Geoserver 连接到本地 PC 中的 postgis 数据库
- android - 为什么更新不存在的 firestore 文档永远不会失败?
- php - 为什么流明不能识别正在发送的字段
- php - 如果列不为空,则更新记录,否则在 laravel 中创建新记录
- swift - SwiftUI MacOS - 设置 NSToolbar 颜色
- android - 如何传递继承Kotlin中另一个类的不同类的可变参数?
- java - 如何使用 OpenCV 检测停车标志?
- javascript - 在 Angular 项目中导入 2 个同名的 JavaScript 函数