YUMSERV
article thumbnail
반응형

 

EC2 Autoscaling Group에서 새로운 EC2가 Launch 되거나, Terminate 될때, 알림을 받을 수 있습니다!

SNS을 통해서 Email로 전송을 받거나, 필요에 따라, S3나 Slack으로 전송할 수 있습니다.

 

1. Email 전송방법

현재 Autoscaling Group 을 보면 활동 부분에 아무런 알림 설정이 되어있지 않습니다.

 

SNS 항목으로 이동하여, 새로운 주제를 생성합니다.

 

 

새로운 주제 생성 후, 구독을 새로 생성합니다. Email 주소로 입력하게 되면, 확인 메일이 발송되게 됩니다.

 

메일에서 구독확인을 누르게 되면, aws 콘솔상에서도 상태가 변경됩니다.

구독 생성 직후
메일에 구독 설정하라는 확인 메일
구독 확인 후, 상태 변경

 

Autoscaling 그룹내에서, 알림을 생성합니다.

 

생성된 주제를 선택합니다.

 

메일발송되면, 아래와같은 내용으로 오게 됩니다.

 

 

2. S3 전송 + Slack 전송

S3의 경우, 다른 계정에 있는 S3에 저장하도록 설정합니다.

Account A : EC2 Autoscaling Group

Account B : Lambda + S3

 

 

1) S3 생성 (AccountB)

저장할 S3를 생성합니다.

해당 S3 권한을 추가합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "account cross account access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::[accountA_id]:root"
                ]
            },
            "Action": [
                "s3:GetLifecycleConfiguration",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::[S3-bucket-name]"
        },
        {
            "Sid": "account cross account put access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::[accountB_id]:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::[S3-bucket-name]",
                "arn:aws:s3:::[S3-bucket-name]/*"
            ]
        }
    ]
}

 

 

 

2) Lambda 함수 생성 (Account B)

lambda 함수를 통해서, S3에 저장하는 코드를 새로 생성합니다.

 

lambda 함수 설정

- General Configuration - Timeout : 10 second

- Permissions 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "s3-object-lambda:*"
            ],
            "Resource": [
                "arn:aws:s3:::[S3-bucket-name]",
                "arn:aws:s3:::[S3-bucket-name]/*"
            ]
        }
    ]
}

 

- 환경변수 설정

- layer 추가 (requests)

 

 

3) SNS 액세스 정책 추가 (Account A)

SNS 주제에 액세스 정책 추가

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:Publish",
        "SNS:RemovePermission",
        "SNS:SetTopicAttributes",
        "SNS:DeleteTopic",
        "SNS:ListSubscriptionsByTopic",
        "SNS:GetTopicAttributes",
        "SNS:AddPermission",
        "SNS:Subscribe"
      ],
      "Resource": "arn:aws:sns:ap-northeast-2:[account_A]:test-autoscaling-group",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "[account_A]"
        }
      }
    },
    {
      "Sid": "Allow-AccountB-To-Subscribe",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::[account_B]:root"
      },
      "Action": "sns:Subscribe",
      "Resource": "arn:aws:sns:ap-northeast-2:[account_A]:test-autoscaling-group"
    }
  ]
}

 

4) Lambda 트리거 설정 (Account B)

- Account A에 해당하는 SNS Arn 주소 선택하여 트리거 선택

 

 

 

5) 알람 발송

 

 

 

 

반응형

'CLOUD > AWS' 카테고리의 다른 글

[AWS] Datadog- Private Endpoint 전환기  (1) 2024.10.01
[AWS] Kinesis Data Firehose + S3 store  (0) 2024.01.10
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!