English Version: README.en.md
EC2, S3, Lambda 함수와 같은 AWS 리소스를 생성할 때,
- 슬랙 메시지(Incoming Webhook)나 이메일(Amazon SNS 사용)으로 알림을 받을 수 있습니다.
- CloudTrail Watcher Lambda 함수가
User
태그를 자동으로 AWS 리소스에 추가합니다.
- 콘솔 로그인
- IAM (User, Group, Role, Policy, Instance Profile)
- EC2 (Instance, Security Group)
- RDS (Cluster, Instance)
- S3 (Bucket)
- ElastiCache (Redis, Memcached)
- EMR (Cluster)
- Lambda (Function)
- Redshift (Cluster)
- ECS (Cluster)
- EKS (Cluster)
- DocumentDB (Cluster, Instance)
- MSK(Managed Streaming for Apache Kafka) (Cluster)
- MWAA(Managed Workflow for Apache Airflow) (Environment)
- DynamoDB (Table)
- ELB (CLB, ALB, NLB, GLB)
- CloudFront (Distribution)
- 🆕 ECR (Repository)
$ cd deploy/sam
$ ACCOUNT_ID=$(aws sts get-caller-identity | jq -r '.Account')
$ sam build
$ sam deploy --stack-name cloudtrail-watcher \
--parameter-overrides ResourcesDefaultPrefix=cloudtrailwatcher-$ACCOUNT_ID \
--capabilities CAPABILITY_NAMED_IAM
--tags 'User=cloudtrail-watcher'
# 배포 시 추가 파라미터를 오버라이드 하고 싶다면
$ sam deploy --stack-name cloudtrail-watcher \
--parameter-overrides ResourcesDefaultPrefix=your_prefix SetMandatoryTag=true \
--capabilities CAPABILITY_NAMED_IAM
# If you want more tags
--tags 'User=cloudtrail-watcher' 'Team=DevOps'
# SAM stack 배포
$ sam delete
SAM CLI에 익숙하지 않으시다면, 아래 명령을 사용하시기를 권장합니다.
$ cd deploy/sam
$ sam build
$ sam deploy --guided
$ cd deploy/terraform
$ terraform init
# 생성하는 리소스에 접두어를 붙이고 싶다면
$ terraform apply -var 'aws_region=ap-northeast-2' -var 'resource_prefix=<your_resource_prefix>'
# 생성하는 리소스에 접두어를 붙이고 싶지 않다면
$ terraform apply -var 'aws_region=ap-northeast-2' -var 'resource_prefix='
# 배포된 인프라 삭제하기
$ terraform destroy -var 'aws_region=ap-northeast-2' \
-var 'resource_prefix=<your_resource_prefix or blank>'
# 더 많은 변수를 추가하는 경우
-var 'variable_name=value'
- 함수의
SLACK_WEBHOOK_URL
환경 변수를 Slack의 Incoming Webhook URL로 변경합니다. - 기본값은
DISABLED
입니다. 리소스 생성 알림을 슬랙으로 받고 싶지 않다면, 이 환경 변수를DISABLED
로 지정해 주세요.
SAM CLI로 배포한다면, 아래와 같이 --parameter-overrides
옵션을 추가해 주세요.
sam deploy --parameter-overrides SlackWebhookURL=https://hooks.slack.com/services/...
terraform apply
명령을 실행할 때, 옵션을 추가합니다.
terraform apply -var 'slack_webhook_url=https://hooks.slack.com/services/...'
# SNS Topic ARN을 가져 옵니다.
TOPIC_ARN=$(aws sns list-topics | jq -r '.Topics[].TopicArn' | grep cloudtrailwatcher)
# SNS Topic 구독하기
aws sns subscribe --topic-arn $TOPIC_ARN \
--protocol email \
--notification-endpoint your@email.address
AWS SNS로부터 이메일을 수신했다면, 구독을 완료하기 위해 이메일을 확인하세요.
CloudTrail Watcher는 새로 생성한 리소스에 대해 태그 추가를 지원합니다. Lambda 함수가 리소스에 User
태그가 있는지 확인합니다.
함수가 User
태그를 찾을 수 없으면, 여러분을 대신해서 User
태그를 추가해 줍니다.
태그 추가는 슬랙 메시지나 Amazon SNS를 통해 이메일을 보내는 데 영향을 주지 않습니다.
- Lambda 함수에
SET_MANDATORY_TAG
환경 변수를 추가합니다. 환경 변수 값이DISABLED
,0
,False
,false
가 아니면, 필수 태그 추가 기능이 동작합니다.
SAM CLI로 배포할 때, --parameter-overrides SetMandatoryTag=true
옵션을 아래와 같이 추가합니다.
sam deploy --parameter-overrides ResourcesDefaultPrefix=cloudtrailwatcher-$ACCOUNT_ID \
SetMandatoryTag=true
terraform apply
명령을 실행할 때, -var 'set_mandatory_tag=true'
옵션을 추가합니다.
terraform apply -var 'aws_region=ap-northeast-2' \
-var 'resource_prefix=<your_resource_prefix or blank>' \
-var 'set_mandatory_tag=true'
- Lambda 함수에
DISABLE_AUTOSCALING_ALARM
환경 변수를 추가합니다. 환경 변수 값이DISABLED
,0
,False
,false
가 아니면, Autoscaling 리소스에 대한 알람을 보내지 않습니다.
SAM CLI로 배포할 때, --parameter-overrides DisableAutoscalingAlarm=true
옵션을 아래와 같이 추가합니다.
sam deploy --parameter-overrides ResourcesDefaultPrefix=cloudtrailwatcher-$ACCOUNT_ID \
DisableAutoscalingAlarm=true
terraform apply
명령을 실행할 때, -var 'disable_autoscaling_alarm=true'
옵션을 아래와 같이 추가합니다.
terraform apply -var 'aws_region=ap-northeast-2' \
-var 'resource_prefix=<your_resource_prefix or blank>' \
-var 'disable_autoscaling_alarm=true'