728x90
먼저 Lambda 를 하나 생성합니다.
CloudWatch
에서 경보 생성을 클릭합니다
지표 아래 설정된 것 처럼 람다가 서비스 될 위치, 그리고 람다, 함수이름별 로 진입하여
저희는 총 2개를 설정합니다.
"Invocations"에 대한 알람 설정:
- CloudWatch 대시보드에 접속합니다.
- 왼쪽 메뉴에서 'Alarms'를 클릭하고, 'Create Alarm' 버튼을 선택합니다.
- 지표 선택 화면에서 "Lambda" 서비스를 선택하고, "Function Name"을 선택하여 앞서 만든 람다 함수(encodingPy)를 선택합니다.
- 지표 목록에서 "Invocations"를 선택하고, 'Select metric' 버튼을 클릭합니다.
- Conditions 섹션에서 다음을 설정합니다:
- Threshold type: Static
- Whenever Invocations is: Greater/Equal (이상)
- than...: 프리티어 제한인 1,000,000을 입력
- Actions 섹션에서 알람 동작을 정의합니다. (이메일 알림 등을 설정)
- Create Alarm을 클릭하여 알람을 생성합니다.
"Duration"에 대한 알람 설정:
- 다시 'Alarms'로 돌아가 'Create Alarm' 버튼을 선택합니다.
- 지표 선택 화면에서 "Lambda" 서비스를 선택하고, "Function Name"을 선택하여 앞서 만든 람다 함수(encodingPy)를 선택합니다.
- 지표 목록에서 "Duration"을 선택하고, 'Select metric' 버튼을 클릭합니다.
- Conditions 섹션에서 다음을 설정합니다:
- Threshold type: Static
- Whenever Duration is: Greater/Equal (이상)
- than...: 프리티어 제한인 3,200,000 (3.2 million seconds)을 입력
- Actions 섹션에서 알람 동작을 정의합니다. (이메일 알림 등을 설정)
- Create Alarm을 클릭하여 알람을 생성합니다.
함수명으로 설정하기 클릭하고
invocations (호출 량)
클릭합니다.
33300은 최대사용량 에서 30을 나눈값이라 생각하면됩니다.
위처럼 설정해요
{
"source": [
"aws.cloudwatch"
],
"detail-type": [
"CloudWatch Alarm State Change"
]
}
Lambda에서 프로그래밍 방식으로 IAM 역할을 수정하려면 AWS SDK를 사용해야 합니다. 여기에서는 Python과 boto3를 사용한 예제를 제공하겠습니다.
먼저, 실행할 Lambda 함수에 아래와 같은 권한을 추가해야 합니다:
- iam:ListAttachedRolePolicies
- iam:DetachRolePolicy
- iam:ListPolicies
다음은 IAM 역할에서 lambda:InvokeFunction 권한을 제거하는 Python 코드입니다:
pythonCopy code
import boto3 def remove_invoke_permission(role_name): client = boto3.client('iam') # 연결된 정책을 가져옵니다. policies = client.list_attached_role_policies(RoleName=role_name)['AttachedPolicies'] for policy in policies: # 정책 세부 정보를 가져옵니다. policy_detail = client.get_policy(PolicyArn=policy['PolicyArn']) # 해당 정책에서 lambda:InvokeFunction 액션이 있는지 확인합니다. if 'lambda:InvokeFunction' in str(policy_detail): # 정책을 역할에서 분리합니다. client.detach_role_policy(RoleName=role_name, PolicyArn=policy['PolicyArn']) print(f"Detached policy {policy['PolicyName']} from {role_name}") def lambda_handler(event, context): # 여기에서 Lambda 함수의 역할 이름을 변경하십시오. role_name = 'YOUR_LAMBDA_ROLE_NAME' remove_invoke_permission(role_name) return { 'statusCode': 200, 'body': f"lambda:InvokeFunction permission removed from {role_name}" }
참고:
- 위의 코드는 lambda:InvokeFunction 액션이 포함된 모든 정책을 역할에서 분리합니다. 이는 원치 않는 권한 제거를 초래할 수 있으므로 코드를 실행하기 전에 주의가 필요합니다.
- YOUR_LAMBDA_ROLE_NAME을 실제 Lambda 함수의 IAM 역할 이름으로 교체해야 합니다.
이 함수를 실행하면 Lambda 함수의 IAM 역할에서 lambda:InvokeFunction 권한이 제거됩니다. 다시 추가하려면 수동으로 IAM 콘솔을 사용하거나 별도의 Lambda 함수를 작성해야 합니다.
728x90
댓글