AWS Lambda 지속 실행 데이터 암호화
AWS Lambda 지속 실행 데이터 암호화
AWS Lambda 지속 함수(durable functions)로 최대 1년까지 실행되는 복원력 있는 다단계 애플리케이션을 만들 수 있습니다. 체크포인트를 사용해 완료된 작업을 재생함으로써 각 실행을 실패에서 복구합니다.
본문
Lambda는 지속 실행 데이터를 저장 중(at rest) 항상 암호화합니다. 회전 제어, 감사 가시성, 규정 준수를 위해 함수에 자체 AWS KMS 고객 관리 키(customer managed key)를 추가로 구성할 수 있습니다. 고객 관리 키를 사용하면 사용자가 승인한 보안 주체만 실행 데이터를 읽을 수 있습니다.
암호화 작동 방식
Lambda 지속 실행은 수명 내내 시작할 때 사용한 것과 같은 KMS 키를 사용합니다. 함수에서 키를 변경하거나 제거해도 변경 후 시작되는 실행에만 영향이 있습니다. 키를 사용할 수 없을 때 지속 실행이 어떻게 동작하는지는 '고객 관리 키를 사용할 수 없을 때'를 참고하세요.
고객 관리 키에는 표준 AWS KMS 요금이 발생합니다. 가격 자세한 내용은 AWS Key Management Service pricing을 참고하세요.
무엇이 암호화되는가
지속 함수에 고객 관리 키를 구성하면 Lambda는 그 키로 다음 지속 실행 데이터를 저장 중 암호화합니다.
- 각
Invoke요청과 함께 전달하는 입력 페이로드. CheckpointDurableExecutionAPI가 유지하는 체크포인트 데이터(단계 결과, 단계 오류, 연결된 invoke 입력 포함).- 실행 결과와 오류.
SendDurableExecutionCallbackSuccess와SendDurableExecutionCallbackFailure로 제출하는 콜백 결과와 오류.
환경 변수, .zip 배포 패키지, SnapStart 스냅샷을 암호화하는 함수 수준의 KMSKeyArn은 지속 실행 데이터를 암호화하는 DurableConfig의 KMSKeyArn과 별개입니다. 하나를 설정해도 다른 하나는 설정되지 않습니다. 두 용도에 같은 KMS 키를 사용할 수도 있고 다른 KMS 키를 사용할 수도 있습니다.
고객 관리 키 암호화 설정
지속 함수를 위한 고객 관리 키 암호화 설정은 3단계 과정입니다. 다음 단계를 순서대로 완료하세요.
고객 관리 키 만들기
지속 함수는 함수와 같은 AWS 리전의 대칭 암호화 KMS 키를 지원합니다. 크로스 리전 키는 지원되지 않습니다. 대칭 고객 관리 키를 만들려면 AWS Key Management Service Developer Guide의 대칭 암호화 KMS 키 생성 단계를 따르세요.
권한
KMS 키의 키 정책을 통해 AWS KMS 권한을 부여합니다.
고객 관리 키를 구성하려면 함수를 만들거나 갱신하는 보안 주체에 AWS KMS 권한이 필요합니다. 지속 함수를 호출하는 데는 호출자에게 AWS KMS 권한이 필요하지 않습니다. Lambda는 서비스 보안 주체(service principal)로 암호화를 수행합니다.
키 정책
키 정책은 고객 관리 키에 대한 접근을 제어합니다. 모든 고객 관리 키는 정확히 하나의 키 정책을 가져야 합니다. 키 정책에서 Resource: "*"는 정책이 연결된 KMS 키만 가리키며 계정의 모든 KMS 키를 가리키지 않습니다.
지속 함수의 키 정책은 각 보안 주체에게 필요한 AWS KMS 액션만 서비스·함수 ARN 범위로 부여합니다. 다음 섹션은 문, 조건, 완전한 예제를 설명합니다.
정책은 다음 기능을 부여합니다.
- Enable IAM user Permissions. 계정 루트의 키 관리 무조건 접근을 부여합니다. 이 문은 조건을 사용하지 않습니다. 범위를 지정하면 키를 회전·갱신·삭제하지 못하기 때문입니다.
- Allow Lambda to use this key for durable functions. Lambda 서비스 보안 주체에게
kms:GenerateDataKey와kms:Decrypt를 부여합니다. - Allow the function execution role to decrypt durable execution data. 실행 역할에
kms:Decrypt를 부여해 상태를 읽고 실행을 진행시킵니다. - Allow the function author to describe this key.
kms:DescribeKey를 부여해 Lambda가CreateFunction또는UpdateFunctionConfiguration중에 키가 대칭이고 활성화되었는지 검증하게 합니다. - Allow the function author to validate this key for a specific function.
kms:GenerateDataKey와kms:Decrypt를 부여해 Lambda가 함수의 암호화 컨텍스트로 키 권한과 접근을 검증하게 합니다. 이는 함수가 만들어지거나 갱신되기 전에 키 정책이 이 특정 함수에 대한 호출을 수락하는지 확인합니다. - Allow durable execution operators. 연산자에게
GetDurableExecution,GetDurableExecutionHistory(IncludeExecutionData=true),GetDurableExecutionState,StopDurableExecution, 콜백 API 호출에 대한kms:Decrypt를 부여합니다.
모범 사례로 실행 역할, 함수 작성자, 지속 실행 연산자에 별도의 보안 주체를 사용해 각 자격 증명이 필요한 기능만 갖도록 하세요.
정책은 다음 조건으로 접근 범위를 좁힙니다.
kms:ViaService는 키 사용을 Lambda를 통해 라우팅되는 요청으로 제한합니다. 실행 역할, 함수 작성자, 연산자 문에 적용하면 직접 AWS KMS를 통해 키를 사용하는 것을 막습니다.aws:SourceArn과aws:SourceAccount는 크로스 서비스 혼동된 대리인(confused deputy) 문제를 방지합니다. Lambda는 자체 서비스 자격 증명으로 AWS KMS를 호출할 때 이 값들을 전달합니다. 이 조건은 Lambda 서비스 보안 주체 문에만 적용됩니다. 실행 역할, 함수 작성자, 연산자 문은 호출자의 전달 접근 세션 자격 증명으로 AWS KMS를 호출하며 이 헤더를 전달하지 않습니다.kms:EncryptionContext:aws:lambda:FunctionArn은 키를 특정 함수로 범위를 지정합니다. Lambda는 지속 실행 데이터에 대한 모든 AWS KMS 호출에서 암호화 컨텍스트에 이를 추가합니다.
다음 예제는 위의 문과 조건을 결합합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:root" },
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow Lambda to use this key for durable functions",
"Effect": "Allow",
"Principal": { "Service": "lambda.amazonaws.com" },
"Action": [ "kms:GenerateDataKey", "kms:Decrypt" ],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "111122223333",
"aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction",
"kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
}
}
},
{
"Sid": "Allow the function execution role to decrypt durable execution data",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:role/myDurableFunctionRole" },
"Action": "kms:Decrypt",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "lambda.us-east-1.amazonaws.com",
"kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
}
}
},
{
"Sid": "Allow the function author to describe this key",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" },
"Action": "kms:DescribeKey",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "lambda.us-east-1.amazonaws.com"
}
}
},
{
"Sid": "Allow the function author to validate this key for a specific function",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" },
"Action": [ "kms:GenerateDataKey", "kms:Decrypt" ],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "lambda.us-east-1.amazonaws.com",
"kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
}
}
},
{
"Sid": "Allow durable execution operators",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111122223333:role/DurableExecutionOperator" },
"Action": "kms:Decrypt",
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "lambda.us-east-1.amazonaws.com",
"kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
}
}
}
]
}
AWS KMS 키 정책에 대한 자세한 내용은 AWS Key Management Service Developer Guide의 'How to change a key policy'를 참고하세요.
지속 함수에 고객 관리 키 구성
DurableConfig 객체의 KMSKeyArn 필드로 지속 실행 데이터용 고객 관리 키를 구성합니다. CreateFunction으로 함수를 만들 때 설정하고, 기존 지속 함수는 UpdateFunctionConfiguration으로 갱신합니다.
콘솔로 구성:
- Lambda 콘솔의 Functions 페이지를 엽니다.
- 지속 함수를 선택합니다.
- Configuration, 왼쪽 탐색 막대의 Durable execution을 선택합니다.
- Edit을 선택합니다.
- Encryption 아래에서 Use a customer managed key를 선택한 뒤 목록에서 KMS 키를 선택합니다.
- Save를 선택합니다.
함수를 만들 때 고객 관리 키 구성 – 다음 create-function 예제에서 --durable-config 옵션은 지속 실행 타임아웃·보존 기간과 함께 고객 관리 키 ARN을 지정합니다.
aws lambda create-function \
--function-name myDurableFunction \
--runtime nodejs24.x \
--handler index.handler \
--role arn:aws:iam::111122223333:role/myDurableFunctionRole \
--zip-file fileb://function.zip \
--durable-config '{"KMSKeyArn":"arn:aws:kms:us-east-1:111122223333:key/key-id","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
기존 지속 함수에 고객 관리 키 구성 – update-function-configuration 명령을 사용하세요. --durable-config는 전체 객체를 대체하므로 유지하려는 모든 DurableConfig 필드를 포함하세요.
aws lambda update-function-configuration \
--function-name myDurableFunction \
--durable-config '{"KMSKeyArn":"arn:aws:kms:us-east-1:111122223333:key/key-id","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
지속 함수에서 고객 관리 키 제거 – --durable-config에서 KMSKeyArn을 생략하세요. 기존 실행은 시작할 때 쓴 고객 관리 키를 계속 사용합니다. 새 실행은 기본 암호화를 대신 사용합니다.
aws lambda update-function-configuration \
--function-name myDurableFunction \
--durable-config '{"ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
AWS::Lambda::Function 리소스에서 DurableConfig의 KMSKeyArn 속성을 설정하세요.
Resources:
MyDurableFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: myDurableFunction
Runtime: nodejs24.x
Handler: index.handler
Role: !GetAtt MyDurableFunctionRole.Arn
Code:
ZipFile: |
// Your durable function code
DurableConfig:
KMSKeyArn: "arn:aws:kms:us-east-1:111122223333:key/key-id"
ExecutionTimeout: 3600
RetentionPeriodInDays: 30
각 지속 실행은 시작할 때 함수에 구성된 고객 관리 키를 사용합니다. 키를 변경하거나 제거해도 변경 후 시작되는 실행에만 영향이 있습니다. 진행 중인 실행은 완료하거나 실패할 때까지 시작할 때 쓴 키를 계속 사용합니다.
지속 실행 데이터 읽기
지속 실행 데이터를 반환하는 읽기 API가 두 개 있습니다.
GetDurableExecution은 단일 실행의 현재 상태(입력 페이로드, 최신 체크포인트 데이터, 결과 또는 오류 정보 포함)를 반환합니다.GetDurableExecutionHistory는 실행이 내보낸 이벤트의 순서 있는 목록을 반환해 체크포인트 입력·결과, 연결된 invoke 입력·결과, 최종 결과를 보여줍니다.
두 API 모두 IncludeExecutionData 요청 파라미터를 받습니다. IncludeExecutionData가 true이면 Lambda는 호출자의 자격 증명으로 고객 관리 키에 kms:Decrypt를 호출합니다. 그런 다음 Lambda는 복호화된 실행 데이터를 응답에 반환합니다. 호출자의 자격 증명에는 고객 관리 키에 대한 kms:Decrypt가 있어야 합니다.
IncludeExecutionData가 false이면 Lambda는 AWS KMS를 호출하지 않거나 실행 데이터를 복호화하지 않으며, 응답은 ExecutionDataIncluded를 false로 설정합니다. 응답에는 여전히 실행이 사용한 고객 관리 키 ARN을 반향하는 DurableConfig가 포함됩니다. IncludeExecutionData는 기본값이 false이므로 메타데이터만 필요한 호출자는 AWS KMS 권한이 필요하지 않습니다.
예제: IncludeExecutionData=false인 GetDurableExecution 응답
{
"DurableExecutionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction:execution:exec-abc123",
"DurableExecutionName": "exec-abc123",
"FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction",
"StartTimestamp": 1733256000,
"Status": "RUNNING",
"ExecutionDataIncluded": false,
"DurableConfig": {
"ExecutionTimeout": 3600,
"KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id",
"RetentionPeriodInDays": 30
}
}
연결된 호출(Chained invokes)
지속 함수가 연결된 invoke로 다른 지속 함수를 호출할 때 Lambda는 자식 실행을 독립적인 지속 실행으로 취급합니다. 자식 실행은 자체 실행 ID, 자체 체크포인트 스트림, 자체 고객 관리 키를 가집니다. 부모의 고객 관리 키 구성은 자식 데이터에 영향이 없고, 자식의 고객 관리 키 구성은 부모 데이터에 영향이 없습니다.
Lambda 서비스 보안 주체는 자식 함수의 고객 관리 키에 kms:GenerateDataKey와 kms:Decrypt가 있어야 합니다. 부모와 자식 함수가 다른 고객 관리 키를 사용한다면 각 키에 서비스 보안 주체 접근을 별도로 부여하세요. 부모 함수의 실행 역할은 자식의 고객 관리 키 권한이 필요하지 않습니다.
GetDurableExecution과 ListDurableExecutionsByFunction 모두 각 실행을 암호화한 고객 관리 키 ARN을 반환합니다. 이 API들을 사용해 부모나 자식 실행이 시작될 때 어떤 키가 적용되었는지 확인하세요.
데이터 키 캐싱
AWS KMS 호출량을 줄이고 서비스 중단 중 가용성을 개선하기 위해 Lambda는 고객 관리 키에서 생성한 데이터 키를 최대 15분 동안 캐시합니다. 캐시가 따뜻한 동안 Lambda는 실행 내 작업과 캐시 창 동안 시작되는 실행 전반에 걸쳐 같은 데이터 키를 재사용합니다.
실행당 AWS KMS 비용은 낮게 유지됩니다. Lambda는 체크포인트마다가 아니라 캐시 창당 최대 한 번 GenerateDataKey를 호출하기 때문입니다. 높은 요청률에서는 더 많은 실행이 각 캐시된 데이터 키를 공유하므로 실행당 비용이 더 내려갑니다. Lambda가 실제로 만드는 AWS KMS 호출에 대해 비용이 청구되며 모든 체크포인트나 읽기에 대해 비용이 청구되지는 않습니다.
데이터 키는 최대 15분 동안 캐시됩니다. 키의 변경은 다음 캐시 갱신에 적용됩니다. 장기간 서비스 중단 중에는 Lambda가 캐시에서 계속 제공하므로 진행 중인 실행을 계속 실행합니다.
데이터 키 캐싱 덕분에 실행이나 체크포인트 수보다 CloudTrail에서 GenerateDataKey 이벤트를 더 적게 볼 수 있습니다. 예제 이벤트는 '지속 함수용 KMS 키 모니터링'을 참고하세요.
고객 관리 키를 사용할 수 없을 때
실행이 시작할 때 쓴 고객 관리 키가 비활성화되거나, 삭제 예약되거나, 키 정책으로 접근이 취소되면 실행은 더 진행할 수 없습니다. 다음 체크포인트에서 Lambda는 재시도 불가능한 AWS KMS 오류로 실행을 실패 처리합니다. 키 접근을 복원해도 실행이 자동으로 재개되지는 않습니다. 새 실행을 시작해야 합니다.
키를 사용할 수 없을 때 페이로드를 읽거나 쓰는 API도 실패합니다. 다음 예외 중 하나를 반환할 수 있습니다.
KMSAccessDeniedException: KMS 키 접근이 거부되어 Lambda가 지속 실행 데이터를 복호화할 수 없습니다.KMSDisabledException: KMS 키가 비활성화되어 Lambda가 지속 실행 데이터를 복호화할 수 없습니다.KMSInvalidStateException: KMS 키 상태가 Decrypt에 유효하지 않아 Lambda가 지속 실행 데이터를 복호화할 수 없습니다.KMSNotFoundException: KMS 키를 찾을 수 없어 Lambda가 지속 실행 데이터를 복호화할 수 없습니다.
KMS 키 접근을 복원하면 이미 실패한 실행에 대해 이 읽기 API들이 다시 성공할 수 있습니다. 실패한 실행은 실패한 상태로 유지되며 새 실행을 시작해야 합니다.
KMS 키를 사용할 수 없을 때 실행 메타데이터를 검사하려면 IncludeExecutionData=false로 GetDurableExecution을 호출하세요. 이는 AWS KMS를 호출하지 않고 실행의 상태, 타임스탬프, DurableConfig(KMS 키 ARN 포함)를 반환합니다.
Lambda가 데이터 키를 캐시하므로 키를 비활성화해도 즉시 적용되지는 않습니다. 자세한 내용은 '데이터 키 캐싱'을 참고하세요.
진행 중이거나 보존 중인 실행이 여전히 의존하는 KMS 키를 삭제하면 그 실행과 실행 기록이 영구적으로 파괴됩니다.
지속 함수용 KMS 키 모니터링
지속 함수에 고객 관리 키를 사용할 때 AWS CloudTrail로 Lambda가 사용자를 대신해 만드는 AWS KMS 호출을 추적할 수 있습니다. AWS KMS 이벤트 검색에 대한 일반 지침은 'Searching AWS KMS API activity'를 참고하세요.
Lambda가 의도대로 키를 사용하는지 확인하려면 각 이벤트에서 다음 필드를 찾으세요.
eventName:GenerateDataKey,Decrypt,DescribeKey중 하나eventSource:kms.amazonaws.comuserIdentity.invokedBy:lambda.amazonaws.comrequestParameters.encryptionContext.aws:lambda:FunctionArn: 지속 함수의 ARN
다음 예제들은 지속 함수에 고객 관리 키를 구성하는 CreateFunction 또는 UpdateFunctionConfiguration 호출의 CloudTrail 이벤트입니다. Lambda는 키를 검증하기 위해 세 가지 AWS KMS 호출을 실행합니다. 실제 DescribeKey와 dry-run GenerateDataKey·Decrypt입니다.
DurableConfig에서 KMSKeyArn을 설정하거나 변경하면 Lambda는 고객 관리 키에 대해 dry-run GenerateDataKey를 실행해 키 정책이 이 함수의 암호화 컨텍스트에 대한 데이터 키 파생을 허용하는지 검증합니다. dry-run은 암호화 작업을 수행하지 않지만 완전한 CloudTrail 이벤트를 기록합니다. 다음 예제 이벤트는 dry-run GenerateDataKey 작업을 기록합니다.
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROA123456789EXAMPLE:example",
"arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
"accountId": "111122223333",
"accessKeyId": "ASIA123456789EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROA123456789EXAMPLE",
"arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
"accountId": "111122223333",
"userName": "FunctionAuthor"
},
"attributes": {
"creationDate": "2026-01-15T16:54:42Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "lambda.amazonaws.com"
},
"eventTime": "2026-01-15T16:55:00Z",
"eventSource": "kms.amazonaws.com",
"eventName": "GenerateDataKey",
"awsRegion": "us-east-1",
"sourceIPAddress": "lambda.amazonaws.com",
"userAgent": "lambda.amazonaws.com",
"errorCode": "DryRunOperationException",
"errorMessage": "The request would have succeeded, but the DryRun option is set.",
"requestParameters": {
"encryptionContext": {
"aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
},
"dryRun": true,
"keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
"keySpec": "AES_256"
},
"responseElements": null,
"additionalEventData": {
"keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE"
},
"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}
DurableConfig에서 KMSKeyArn을 설정하거나 변경하면 Lambda는 고객 관리 키에 대해 dry-run Decrypt도 실행해 키 정책이 이 함수의 암호화 컨텍스트에 대한 데이터 복호화를 허용하는지 검증합니다. dry-run은 IGNORE_CIPHERTEXT를 사용하므로 실제 ciphertext가 필요하지 않습니다. 다음 예제 이벤트는 dry-run Decrypt 작업을 기록합니다.
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROA123456789EXAMPLE:example",
"arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
"accountId": "111122223333",
"accessKeyId": "ASIA123456789EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROA123456789EXAMPLE",
"arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
"accountId": "111122223333",
"userName": "FunctionAuthor"
},
"attributes": {
"creationDate": "2026-01-15T16:54:42Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "lambda.amazonaws.com"
},
"eventTime": "2026-01-15T16:55:00Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "us-east-1",
"sourceIPAddress": "lambda.amazonaws.com",
"userAgent": "lambda.amazonaws.com",
"errorCode": "DryRunOperationException",
"errorMessage": "The request would have succeeded, but the DryRun option is set.",
"requestParameters": {
"encryptionContext": {
"aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
},
"dryRun": true,
"keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
"dryRunModifiers": ["IGNORE_CIPHERTEXT"],
"encryptionAlgorithm": "SYMMETRIC_DEFAULT"
},
"responseElements": null,
"additionalEventData": {
"keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE"
},
"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}
DurableConfig에서 KMSKeyArn을 설정하거나 변경하면 Lambda는 변경을 수락하기 전에 키가 대칭이고 활성화되었는지 확인하기 위해 DescribeKey를 호출합니다. GenerateDataKey·Decrypt 프로브와 달리 이는 실제 호출이지 dry-run이 아닙니다. 다음 예제 이벤트는 DescribeKey 작업을 기록합니다.
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROA123456789EXAMPLE:example",
"arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
"accountId": "111122223333",
"accessKeyId": "ASIA123456789EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROA123456789EXAMPLE",
"arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
"accountId": "111122223333",
"userName": "FunctionAuthor"
},
"attributes": {
"creationDate": "2026-01-15T16:54:42Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "lambda.amazonaws.com"
},
"eventTime": "2026-01-15T16:55:00Z",
"eventSource": "kms.amazonaws.com",
"eventName": "DescribeKey",
"awsRegion": "us-east-1",
"sourceIPAddress": "lambda.amazonaws.com",
"userAgent": "lambda.amazonaws.com",
"requestParameters": {
"keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
},
"responseElements": null,
"requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
"eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}
관련 암호화 주제
- Lambda의 저장 데이터 암호화
- Lambda 환경 변수 보호
- Lambda .zip 배포 패키지 암호화
- Lambda SnapStart 보안 모델
- Lambda 지속 함수 구성