如何基于S3事件将文件从s3部署到ec2实例

时间:2019-05-22 12:09:23

标签: amazon-web-services amazon-s3 amazon-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脚本?

任何指导都会对您有所帮助。

1 个答案:

答案 0 :(得分:0)

要在将文件上传到s3存储桶时触发lambda函数,为此,您必须在s3存储桶中设置事件通知。

设置s3事件通知的步骤:-

1-您的lambda和s3存储桶应位于同一区域

2-转到s3存储桶的“属性”标签

3-打开事件并提供事件类型的值,例如放置或复制

4-请在“发送至”选项中指定Lambda ARN。

现在创建一个lambda函数并将s3存储桶添加为触发选项。只需确保正确设置了Lambda IAM策略。