Lambda, PowerShell 및 Event Bridge를 사용하여 EFS에서 오래된 백업/로그 파일/임시 파일 삭제
5702 단어 awslambdaefsserverless
로그, 임시 및 백업 폴더 크기는 2일 만에 약 20GB에 도달했습니다. 우리는 EFS를 사용하고 있었고 EFS에 연결된 여러 EC2 인스턴스가 있었습니다.
각 파일을 분석한 결과 임시 파일은 전처리용으로만 사용되며 한 번만 필요하므로 이전 로그 파일(액세스 로그 제외) 및 이전 백업 파일과 함께 삭제하기로 결정했습니다.
Powershell Lambda를 사용하고 EFS를 Lambda와 통합하기로 결정했습니다. 이 기능은 EFS에서 불필요한 데이터를 모두 삭제합니다. 이 기능은 Event Bridge를 사용하여 주기적으로 실행되며 불필요한 파일을 삭제합니다.
먼저 Visual Studio Code를 사용하여 Lambda 함수를 생성합니다.
1단계: Visual Studio 코드 다운로드
2단계: powershell에서 아래 명령 실행
$region_code = 'ap-south-1'
$secretKey='your secret key'
$accessKey='your access key'
#Install-Module AWSPowerShell -Scope CurrentUser
#Install-Module AWSLambdaPSCore -Scope CurrentUser
import-Module AWSPowerShell -Force
Import-Module AWSLambdaPSCore -Force
#configure script credentials
Initialize-AWSDefaultConfiguration -AccessKey $accessKey -SecretKey $secretKey -Region ap-south-1
Set-AWSCredential -AccessKey $accessKey -SecretKey $secretKey -StoreAs default
#shows existing function list from AWS
Get-LMFunctionList
Get-AWSPowerShellLambdaTemplate
Basic Barebone Script를 사용하고 여기에 스크립트 명령을 추가할 것입니다.
스타터 Lambda 함수 생성
New-AWSPowerShellLambda -ScriptName DeleteUnusedFiles -Template Basic
Visual Studio Code의 탐색기 창에서 이 프로젝트 폴더를 얻거나 폴더를 가져올 수 있습니다. 이 프로젝트는 동일한 위치에 생성됩니다.
3단계: Powershell 스크립트에 아래 명령을 추가합니다. 이는 Lambda 함수가 성공적으로 가져올 수 있도록 하기 위한 것입니다.
cd /mnt/efs
Remove-Item * -Include *.tmp
ls /mnt/efs
4단계: AWS에 Lambda 함수 업로드
$publishPSLambdaParams = @{
name = "DeleteUnusedFiles "
ScriptPath = ".\DeleteUnusedFiles\DeleteUnusedFiles.ps1"
Region = "ap-south-1"
IAMRoleArn = "delete_backup_rp_role"
}
Publish-AWSPowerShellLambda @publishPSLambdaParams
아래와 같이 EFS 파일 시스템과 액세스 포인트를 생성했습니다(EFS 및 탑재 대상 설정에 대한 자세한 내용은 아래 비디오 참조).
다음은 내 Accesspoint에 대한 세부 정보입니다.
EFS가 생성되고 액세스 포인트가 준비되면 EC2 인스턴스에 로그인하고 EFS를 마운트해야 합니다.
1) EFS 마운트 도우미 설치
sudo yum install -y amazon-efs-utils
2) 폴더를 efs로 생성
mkdir/efs
3) EFS 마운트
sudo 마운트 -t efs -o tls,액세스 포인트=fsap-9999999999999999 fs-8888888888888888:/efs
Important Step
아래와 같이 EFS에서 보안 그룹을 구성해야 합니다.
위의 단계가 완료되면 아래와 같이 EFS와 Lambda를 통합합니다.
**** 중요. 먼저 Lambda를 VPC에 연결해야 합니다. 이 단계를 수행하지 않으면 EFS를 연결할 수 없습니다.
1) 아래 권한으로 역할을 생성하고 이를 Lambda 함수와 연결합니다.
2) Lambda 함수를 엽니다(이 예에서는 PowerShell 람다 함수를 사용하고 있습니다).
3) 구성 탭으로 이동
4) 파일 시스템 하위 탭 열기
아래 스크린샷에 따라 EFS 파일 시스템, 액세스 포인트 및 로컬 마운트 포인트를 선택하고 저장/만들기 버튼을 누르십시오.
성공적으로 게시되면 테스트 이벤트를 생성한 후 Lambda 함수를 열고 테스트를 클릭하여 함수를 테스트할 수 있습니다.
아래 스크린샷에서 볼 수 있듯이 EFS 공유에 있는 파일을 보여주는 ls 명령의 결과를 볼 수 있으므로 Lambda에서 EFS에 액세스할 수 있음을 보여줍니다.
이것이 성공적으로 생성되면 Event Bridge를 사용하여 Lambda 함수가 주기적으로 실행되도록 예약할 수 있습니다.
문제 해결:
".NET CLI를 구성할 수 없습니다"라는 오류 메시지가 표시되면 메모장++의 경로에서 아래 파일을 엽니다.
C:\Program Files\WindowsPowerShell\Modules\AWSLambdaPSCore\3.0.1.0\Private_DeploymentFunctions.ps1
$LASTEXITCODE 키워드로 찾기
이 변수를 사용하는 모든 발생 및 조건에 주석을 달고 아래 명령을 실행합니다.
import-Module AWSPowerShell -Force
Import-Module AWSLambdaPSCore -Force
Powershell을 사용하여 Lambda 함수를 다시 업로드해 보십시오. 지금 작동해야 합니다.
이 게시물에 대한 다른 의견이나 제안이 있으면 알려주세요.
제 유튜브 채널을 구독해주세요
감사,
우즈왈쿠마르 소니
Reference
이 문제에 관하여(Lambda, PowerShell 및 Event Bridge를 사용하여 EFS에서 오래된 백업/로그 파일/임시 파일 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ujjwalbsoni/delete-old-backuplogfilestemp-files-from-efs-using-lambda-powershell-event-bridge-igi
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Remove-Item * -Include *.tmp
ls /mnt/efs
$publishPSLambdaParams = @{
name = "DeleteUnusedFiles "
ScriptPath = ".\DeleteUnusedFiles\DeleteUnusedFiles.ps1"
Region = "ap-south-1"
IAMRoleArn = "delete_backup_rp_role"
}
Publish-AWSPowerShellLambda @publishPSLambdaParams
Important Step
import-Module AWSPowerShell -Force
Import-Module AWSLambdaPSCore -Force
Reference
이 문제에 관하여(Lambda, PowerShell 및 Event Bridge를 사용하여 EFS에서 오래된 백업/로그 파일/임시 파일 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ujjwalbsoni/delete-old-backuplogfilestemp-files-from-efs-using-lambda-powershell-event-bridge-igi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)