Amazon S3로 Lambda 함수 로그 전송 - AWS Lambda

Amazon S3로 Lambda 함수 로그 전송

Lambda 콘솔을 사용하여 Amazon S3로 직접 로그를 전송하도록 Lambda 함수를 구성할 수 있습니다. 이 기능은 장기 로그 스토리지를 위한 비용 효과적인 솔루션을 제공하며 Athena와 같은 서비스를 사용하여 강력한 분석 옵션을 활성화합니다.

참고

Lambda 콘솔, AWS CLI, AWS CloudFormation 및 모든 AWS SDK를 사용하여 Amazon S3로 Lambda 함수 로그가 전송되도록 구성할 수 있습니다.

요금

요금에 대한 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.

Amazon S3 로그 대상에 필요한 권한

Lambda 콘솔을 사용하여 Amazon S3를 함수의 로그 대상으로 구성할 때 다음이 필요합니다.

  1. Lambda에서 CloudWatch Logs를 사용하는 데 필요한 IAM 권한

  2. Amazon S3로 Lambda 함수 로그를 전송하도록 CloudWatch Logs 구독 필터 설정을 수행합니다. 이 필터는 Amazon S3 버킷으로 전송되는 로그 이벤트를 정의합니다.

Amazon S3로 Lambda 함수 로그를 전송하도록 CloudWatch Logs 구독 필터 설정

CloudWatch Logs에서 Amazon S3로 로그를 전송하려면 구독 필터를 생성해야 합니다. 이 필터는 Amazon S3 버킷으로 전송되는 로그 이벤트를 정의합니다. Amazon S3 버킷은 로그 그룹과 동일한 리전에 있어야 합니다.

Amazon S3에 대한 구독 필터를 생성하려면 다음을 수행하세요.

  1. Amazon Simple Storage Service(Amazon S3) 버킷을 생성합니다. CloudWatch Logs를 위해 특별히 생성한 버킷을 사용하는 것이 좋습니다. 그러나 기존 버킷을 사용하고 싶으면 2단계로 건너뛸 수 있습니다.

    다음 명령을 실행하여 자리 표시자 리전을 사용하고자 하는 리전으로 바꿉니다.

    aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=region
    참고

    amzn-s3-demo-bucket2는 예시 Amazon S3 버킷 이름입니다. 예약되어 있습니다. 이 절차를 수행하려면 고유한 Amazon S3 버킷 이름으로 바꿔야 합니다.

    다음은 예 출력입니다.

    { "Location": "/amzn-s3-demo-bucket2" }
  2. Amazon S3 버킷에 데이터를 입력하는 데 필요한 권한을 CloudWatch Logs에 부여하는 IAM 역할을 생성합니다. 이 정책에는 혼동된 대리자 보안 문제를 방지하는 데 도움이 되는 aws:SourceArn 글로벌 조건 컨텍스트 키가 포함되어 있습니다. 자세한 내용은 혼동된 대리자 방지를 참조하세요.

    1. 텍스트 편집기를 사용하여 신뢰 정책을 다음과 같은 ~/TrustPolicyForCWL.json 파일로 생성합니다.

      { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } }, "Action": "sts:AssumeRole" } }
    2. create-role 명령을 사용하여 신뢰 정책 파일을 지정하는 IAM 역할을 생성합니다. 이후 단계에서 필요할 수 있기 때문에 반환된 Role.Arn 값을 적어둡니다.

      aws iam create-role \ --role-name CWLtoS3Role \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoS3Role" } }
  3. CloudWatch Logs가 계정에서 수행할 수 있는 작업을 정의하는 권한 정책을 생성합니다. 먼저 텍스트 편집기를 사용하여 권한 정책을 ~/PermissionsForCWL.json 파일로 생성합니다.

    { "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2/*"] } ] }

    다음 put-role-policy 명령을 사용하여 권한 정책을 역할에 연결합니다.

    aws iam put-role-policy --role-name CWLtoS3Role --policy-name Permissions-Policy-For-S3 --policy-document file://~/PermissionsForCWL.json
  4. Delivery 로그 그룹을 생성하거나 기존 Delivery 로그 그룹을 사용합니다.

    aws logs create-log-group --log-group-name my-logs --log-group-class DELIVERY --region REGION_NAME
  5. PutSubscriptionFilter를 사용하여 대상을 설정합니다.

    aws logs put-subscription-filter --log-group-name my-logs --filter-name my-lambda-delivery --filter-pattern "" --destination-arn arn:aws:s3:::amzn-s3-demo-bucket2 --role-arn arn:aws:iam::123456789012:role/CWLtoS3Role --region REGION_NAME

Amazon S3로 Lambda 함수 로그 전송

Lambda 콘솔에서 새 함수를 생성한 후 Amazon S3로 직접 함수 로그를 전송할 수 있습니다. 이렇게 하려면 다음 단계를 완료하세요.

  1. AWS Management Console에 로그인하고 Lambda 콘솔을 엽니다.

  2. 함수 이름을 선택합니다.

  3. 구성 탭을 선택합니다.

  4. 모니터링 및 운영 도구 탭을 선택합니다.

  5. ‘로깅 구성’ 섹션에서 편집을 선택합니다.

  6. ‘로그 콘텐츠’ 섹션에서 로그 형식을 선택합니다.

  7. ‘로그 대상’ 섹션에서 다음 단계를 완료합니다.

    1. 대상 서비스를 선택합니다.

    2. 새 로그 그룹 생성을 선택하거나 기존 로그 그룹을 사용합니다.

      참고

      Amazon S3 대상에 대한 기존 로그 그룹을 선택하는 경우 해당 로그 그룹이 Delivery 로그 그룹 유형인지 확인합니다.

    3. 함수 로그의 대상으로 Amazon S3 버킷을 선택합니다.

    4. CloudWatch Delivery 로그 그룹이 나타납니다.

  8. 저장을 선택합니다.

참고

콘솔에 제공된 IAM 역할에 필요한 권한이 없으면 대상 설정이 실패합니다. 이를 해결하려면 섹션을 참조하세요.

교차 계정 로깅

다른 AWS 계정의 Amazon S3 버킷으로 로그를 전송하도록 Lambda를 구성할 수 있습니다. 이렇게 하려면 대상을 설정하고 두 계정 모두에서 적절한 권한을 구성해야 합니다.

필요한 IAM 역할과 정책을 포함하여 교차 계정 로깅을 설정하는 방법에 대한 자세한 지침은 CloudWatch Logs 설명서의 Setting up a new cross-account subscription을 참조하세요.