

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon VPC Lattice에 대한 액세스 로그
<a name="monitoring-access-logs"></a>

액세스 로그는 VPC Lattice 서비스 및 리소스 구성에 대한 자세한 정보를 캡처합니다. 이 액세스 로그를 사용하여 트래픽 패턴을 분석하고 네트워크의 모든 서비스를 감사할 수 있습니다. VPC Lattice 서비스의 경우를 게시`VpcLatticeAccessLogs`하고 리소스 구성의 경우 별도로 구성해야 `VpcLatticeResourceAccessLogs` 하는를 게시합니다.

액세스 로그는 선택 사항이며 기본적으로 비활성화됩니다. 액세스 로그를 활성화한 후에는 언제든지 비활성화할 수 있습니다.

**가격 책정**  
액세스 로그가 게시되면 요금이 부과됩니다. 사용자를 대신하여 AWS 기본적으로 게시하는 로그를 *벤딩 로그*라고 합니다. 벤딩 로그 요금에 대한 자세한 내용을 알려면 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하고 **로그**를 선택한 다음 **벤딩 로그**에서 요금을 확인하세요.

**Topics**
+ [액세스를 활성화하는 데 필요한 IAM 권한](#monitoring-access-logs-IAM)
+ [액세스 로그 대상](#monitoring-access-logs-destinations)
+ [액세스 로그 활성화](#monitoring-access-logs-enable)
+ [요청 추적](#x-amzn-RequestId-enable)
+ [액세스 로그 내용](#monitoring-access-logs-contents)
+ [리소스 액세스 로그 콘텐츠](#monitoring-resource-access-logs-contents)
+ [액세스 로그 문제 해결](#monitoring-access-logs-troubleshoot)

## 액세스를 활성화하는 데 필요한 IAM 권한
<a name="monitoring-access-logs-IAM"></a>

액세스 로그를 활성화하고 대상으로 로그를 전송하려면 사용 중인 IAM 사용자, 그룹 또는 역할에 연결된 정책에 다음 작업이 있어야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "ManageVPCLatticeAccessLogSetup",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:GetLogDelivery",
                "logs:UpdateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:ListLogDeliveries",
                "vpc-lattice:CreateAccessLogSubscription",
                "vpc-lattice:GetAccessLogSubscription",
                "vpc-lattice:UpdateAccessLogSubscription",
                "vpc-lattice:DeleteAccessLogSubscription",
                "vpc-lattice:ListAccessLogSubscriptions"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 섹션을 참조하세요.

사용 중인 IAM 사용자, 그룹 또는 역할에 연결된 정책을 업데이트한 후 [액세스 로그 활성화](#monitoring-access-logs-enable)로 이동하세요.

## 액세스 로그 대상
<a name="monitoring-access-logs-destinations"></a>

액세스 로그를 다음과 같은 대상으로 보낼 수 있습니다.

**Amazon CloudWatch Logs**
+ VPC Lattice는 일반적으로 2분 이내에 로그를 CloudWatch Logs에 전송합니다. 하지만 실제 로그 전송 시간은 최선의 노력을 바탕으로 하며 추가 지연 시간이 발생할 수 있습니다.
+ 로그 그룹에 특정 권한이 없는 경우 리소스 정책이 자동으로 생성되어 CloudWatch 로그 그룹에 추가됩니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [CloudWatch Logs로 전송된 로그](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-CWL)를 참조하세요.
+ CloudWatch 콘솔의 로그 그룹에서 CloudWatch로 전송된 액세스 로그를 확인할 수 있습니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [CloudWatch Logs로 전송된 데이터 보기](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData)를 참조하세요.

**Amazon S3**
+ VPC Lattice는 일반적으로 6분 이내에 Amazon S3에 로그를 전송합니다. 하지만 실제 로그 전송 시간은 최선의 노력을 바탕으로 하며 추가 지연 시간이 발생할 수 있습니다.
+ 버킷에 특정 권한이 없는 경우 버킷 정책이 자동으로 생성되어 Amazon S3 버킷에 추가됩니다. 자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [Amazon S3으로 전송된 로그](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)를 참조하세요.
+ Amazon S3으로 전송되는 액세스 로그는 다음과 같은 명명 규칙을 사용합니다.

  ```
  [bucket]/[prefix]/AWSLogs/[accountId]/VpcLattice/AccessLogs/[region]/[YYYY/MM/DD]/[resource-id]/[accountId]_VpcLatticeAccessLogs_[region]_[resource-id]_YYYYMMDDTHHmmZ_[hash].json.gz
  ```
+ Amazon S3로 전송되는 VpcLatticeResourceAccessLogs는 다음 명명 규칙을 사용합니다.

  ```
  [bucket]/[prefix]/AWSLogs/[accountId]/VpcLattice/ResourceAccessLogs/[region]/[YYYY/MM/DD]/[resource-id]/[accountId]_VpcLatticeResourceAccessLogs_[region]_[resource-id]_YYYYMMDDTHHmmZ_[hash].json.gz
  ```

**Amazon Data Firehose**
+ VPC Lattice는 일반적으로 2분 이내에 Firehose에 로그를 전송합니다. 하지만 실제 로그 전송 시간은 최선의 노력을 바탕으로 하며 추가 지연 시간이 발생할 수 있습니다.
+  Amazon Data Firehose에 액세스 로그를 전송할 권한을 VPC Lattice에 부여하는 서비스 연결 역할이 자동으로 생성됩니다. 역할 자동 생성이 성공하려면 사용자가 `iam:CreateServiceLinkedRole` 작업에 대한 권한을 보유해야 합니다. 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [Amazon Data Firehose으로 전송된 로그](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-Firehose)를 참조하세요.
+  Amazon Data Firehose로 전송된 로그 보기에 대한 자세한 내용은 *Amazon Data Firehose 개발자 안내서*의 [Amazon Kinesis Data Streams](https://docs.aws.amazon.com//streams/latest/dev/monitoring.html)를 참조하세요.

## 액세스 로그 활성화
<a name="monitoring-access-logs-enable"></a>

액세스 로그를 캡처하고 선택한 대상으로 액세스 로그를 전송하도록 다음과 같은 절차에 따라 액세스 로그를 구성하세요.

**Topics**
+ [콘솔을 사용하여 액세스 로그 활성화](#monitoring-access-logs-console)
+ [를 사용하여 액세스 로그 활성화 AWS CLI](#monitoring-access-logs-cli)

### 콘솔을 사용하여 액세스 로그 활성화
<a name="monitoring-access-logs-console"></a>

생성 중에 서비스 네트워크, 서비스 또는 리소스 구성에 대한 액세스 로그를 활성화할 수 있습니다. 다음 절차에 설명된 대로 서비스 네트워크, 서비스 또는 리소스 구성을 생성한 후 액세스 로그를 활성화할 수도 있습니다.

**콘솔을 사용하여 기본 서비스를 생성하는 방법**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 서비스 네트워크, 서비스 또는 리소스 구성을 선택합니다.

1. **작업**, **VPC 설정 편집**을 선택합니다.

1. **액세스 로그** 토글 스위치를 켭니다.

1. 다음과 같이 액세스 로그의 전송 대상을 추가합니다.
   + **CloudWatch 로그 그룹**을 선택하고 로그 그룹을 선택합니다. 로그 그룹을 생성하려면 **CloudWatch에서 로그 그룹 생성**을 선택합니다.
   + **S3 버킷**을 선택하고 접두사를 포함한 S3 버킷 경로를 입력합니다. S3 버킷을 검색하려면 **S3 찾아보기**를 선택합니다.
   + **Kinesis Data Firehose 전송 스트림**을 클릭하고 전송 스트림을 선택합니다. 전송 스트림을 생성하려면 **Kinesis에서 전송 스트림 생성**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

### 를 사용하여 액세스 로그 활성화 AWS CLI
<a name="monitoring-access-logs-cli"></a>

CLI 명령인 [create-access-log-subscription](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-access-log-subscription.html)을 사용하여 서비스 네트워크 또는 서비스에 대한 액세스 로그를 활성화합니다.

## 요청 추적
<a name="x-amzn-RequestId-enable"></a>

 VPC Lattice는 x-amzn-requestid 헤더를 사용한 관찰성 및 디버깅을 위해 클라이언트, 대상 및 로그 간의 요청 추적 및 상관 관계를 지원합니다. 이 헤더는 클라이언트에서 설정 및 전송하거나 VPC Lattice에서 생성할 수 있으며 대상으로 전송되고 액세스 로그에서도 사용할 수 있습니다.

**기본 동작**
+ VPC Lattice는 모든 요청에 대해이 헤더를 자동으로 생성합니다.
+ 값은 임의로 생성된 식별자(기본 UUID 스타일)입니다.
+ 생성된 식별자는 다음과 같습니다.
  + 다운스트림 대상으로 전파됩니다.
  +  클라이언트에 대한 응답 헤더에 반환됩니다.
  + 액세스 로그에 로그인됨

**예제(기본 응답)**  
다음은 valu eof x-amzn-requestid 헤더에 대한 임의 값을 생성하는 VPC Lattice의 기본 동작으로 클라이언트에 전송된 응답의 예입니다.

```
{
    "HTTP/1.1 200 OK
    x-amzn-requestid: a9f2c7a1-6b4f-4c79-9e87-ff5a1234a001"
}
```

**클라이언트에서 값 설정**
+ 클라이언트는 수신 요청에이 헤더를 선택적으로 설정하여 자동으로 생성된 값을 재정의할 수 있습니다.
+ 고려 사항
  +  헤더 값은 UUID 형식을 따를 필요가 없습니다.
  + 헤더 값이 512바이트를 초과하면 VPC Lattice는 헤더 값을 512로 자릅니다.
+  성공적으로 재정의되면 제공된 헤더 값은 다음을 수행합니다.
  + 응답 헤더에 표시
  + 대상에 전파
  + 액세스 로그 및 지표에 표시

**예제(클라이언트 요청 재정의)**  
다음은 헤더 값을 사용하여 클라이언트가 보낸 요청의 예입니다.

```
{
    "GET /my-service/endpoint HTTP/1.1 
    Host: my-api.example.com
    x-amzn-requestid: trace-request-foobar"
}
```

**예제(기본 재정의 응답)**  
다음은 재정의된 값을 사용하여 클라이언트에 전송된 응답의 예입니다.

```
{
    "HTTP/1.1 200 OK
    x-amzn-requestid: trace-request-foobar"
}
```

## 액세스 로그 내용
<a name="monitoring-access-logs-contents"></a>

다음 표에서는 액세스 로그 항목의 필드를 설명합니다.


| 필드 | 설명 | 형식 | 
| --- | --- | --- | 
|  callerPrincipalTags  | 요청의 PrincipalTags입니다. | JSON | 
|  hostHeader  | 요청의 권한 헤더. | 문자열 | 
|  sslCipher  | 클라이언트 TLS 연결을 설정하는 데 사용되는 암호 집합의 OpenSSL 이름. | 문자열 | 
|  serviceNetworkArn  | 서비스 네트워크 ARN. | arn:aws:vpc-lattice:{{리전}}:{{계정}}:servicenetwork/{{id}} | 
|  resolvedUser  | 인증이 활성화되고 완료되었을 때의 사용자 ARN. | null \| ARN \| "익명" \| "알 수 없음" | 
|  authDeniedReason  | 인증이 활성화된 경우 액세스가 거부되는 이유. | null \| "서비스" \| "네트워크" \| "자격 증명" | 
|  requestMethod  | 요청의 메서드 헤더. | 문자열 | 
|  targetGroupArn  | 대상 호스트가 속하는 대상 호스트 그룹. | 문자열 | 
|  tlsVersion  | TLS 버전. | TLSv{{x}} | 
|  userAgent  | 사용자-에이전트 헤더. | 문자열 | 
|  serverNameIndication  | [HTTPS만 해당] SSL 연결 소켓에 SNI(서버 이름 표시)에 대해 설정된 값. | 문자열 | 
|  destinationVpcId  | 대상 VPC ID. | vpc-{{xxxxxxxx}} | 
|  sourceIpPort  | 클라이언트의 IP 주소 및 소스 포트. | {{ip}}:{{포트}} | 
|  targetIpPort  | 클라이언트의 IP 주소 및 대상 포트. | {{ip}}:{{포트}} | 
|  serviceArn  | 서비스 ARN. | arn:aws:vpc-lattice:{{리전}}:{{계정}}:service/{{id}} | 
|  sourceVpcId  | 소스 VPC. | vpc-{{xxxxxxxx}} | 
|  requestPath  | 요청의 경로. | LatticePath?:{{경로}} | 
|  startTime  | 요청 시작 시간. | {{YYYY}}-{{MM}}-{{DD}}T{{HH}}:{{MM}}:{{SS}}Z | 
|  protocol  | 프로토콜. 현재 HTTP/1.1 또는 HTTP/2. | 문자열 | 
|  responseCode  | HTTP 응답 코드입니다. 최종 헤더의 응답 코드만 기록됩니다. 자세한 내용은 [액세스 로그 문제 해결](#monitoring-access-logs-troubleshoot) 단원을 참조하십시오. | 정수 | 
|  bytesReceived  | 받은 본문 및 헤더 바이트. | 정수 | 
|  bytesSent  | 보낸 본문 및 헤더 바이트. | 정수 | 
|  duration  | 시작 시간부터 마지막 바이트 출력까지의 총 요청 시간(밀리초). | 정수 | 
|  requestToTargetDuration  | 시작 시간부터 대상으로 전송된 마지막 바이트까지의 총 요청 시간(밀리초). | 정수 | 
|  responseFromTargetDuration  | 대상 호스트에서 읽은 첫 번째 바이트부터 클라이언트로 전송된 마지막 바이트까지의 총 요청 시간(밀리초). | 정수 | 
|  grpcResponseCode  | gRPC 응답 코드. 자세한 내용은 [gRPC에서의 상태 코드 및 사용](https://grpc.github.io/grpc/core/md_doc_statuscodes.html)을 참조하세요. 서비스에서 gRPC를 지원하는 경우에만 이 필드를 기록합니다. | 정수 | 
|  requestId  | 이 고유 식별자는 응답에 x-amzn-requestid 헤더의 값으로 자동으로 포함됩니다. 관찰성 및 디버깅을 위해 클라이언트, 대상 및 로그 간의 요청 상관관계를 활성화합니다. | 문자열 | 
|  callerPrincipal  | 인증된 보안 주체. | 문자열 | 
|  callerX509SubjectCN  | 주체 이름(CN). | 문자열 | 
|  callerX509IssuerOU  | 발급자(OU). | 문자열 | 
|  callerX509SANNameCN  | 발급자 대체(이름/CN). | 문자열 | 
|  callerX509SANDNS  | 주체 대체 이름(DNS). | 문자열 | 
|  callerX509SANURI  | 주체 대체 이름(URI). | 문자열 | 
|  sourceVpcArn  | 요청이 시작된 VPC의 ARN. | arn:aws:ec2:{{리전}}:{{계정}}:vpc/{{id}} | 
| failureReason | 요청이 실패한 이유를 나타냅니다. 가능한 값은 다음과 같습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/vpc-lattice/latest/ug/monitoring-access-logs.html) | 문자열 | 

**예제**  
다음은 로그 항목의 예시입니다.

```
{
    "callerPrincipalTags" : "{ "TagA": "ValA", "TagB": "ValB", ... }",
    "hostHeader": "example.com",
    "sslCipher": "-",
    "serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:123456789012:servicenetwork/svn-1a2b3c4d",
    "resolvedUser": "Unknown",
    "authDeniedReason": "null",
    "requestMethod": "GET",
    "targetGroupArn": "arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-1a2b3c4d",
    "tlsVersion": "-",
    "userAgent": "-",
    "serverNameIndication": "-",
    "destinationVpcId": "vpc-0abcdef1234567890",
    "sourceIpPort": "178.0.181.150:80",
    "targetIpPort": "131.31.44.176:80",
    "serviceArn": "arn:aws:vpc-lattice:us-west-2:123456789012:service/svc-1a2b3c4d",
    "sourceVpcId": "vpc-0abcdef1234567890",
    "requestPath": "/billing",
    "startTime": "2023-07-28T20:48:45Z",
    "protocol": "HTTP/1.1",
    "responseCode": 200,
    "bytesReceived": 42,
    "bytesSent": 42,
    "duration": 375,
    "requestToTargetDuration": 1,
    "responseFromTargetDuration": 1,
    "grpcResponseCode": 1,
    "requestId": "a9f2c7a1-6b4f-4c79-9e87-ff5a1234a001"
}
```

## 리소스 액세스 로그 콘텐츠
<a name="monitoring-resource-access-logs-contents"></a>

다음 표에서는 리소스 액세스 로그 항목의 필드를 설명합니다.


| 필드 | 설명 | 형식 | 
| --- | --- | --- | 
|  serviceNetworkArn  | 서비스 네트워크 ARN. | arn:{{partition}} vpc-lattice:{{region}}:{{account}}:servicenetwork/{{id}} | 
|  serviceNetworkResourceAssociationId  | 서비스 네트워크 리소스 ID입니다. | {{snra}}-{{xxx}} | 
|  vpcEndpointId  | 리소스에 액세스하는 데 사용된 엔드포인트 ID입니다. | 문자열 | 
|  sourceVpcArn  | 연결이 시작된 소스 VPC ARN 또는 VPC입니다. | 문자열 | 
|  resourceConfigurationArn  | 액세스한 리소스 구성의 ARN입니다. | 문자열 | 
|  protocol  | 리소스 구성과 통신하는 데 사용되는 프로토콜입니다. 현재 tcp만 지원됩니다. | 문자열 | 
|  sourceIpPort  | 연결을 시작한 소스의 IP 주소 및 포트입니다. | {{ip}}:{{포트}} | 
|  destinationIpPort  | 연결이 시작된 IP 주소 및 포트입니다. SN-E/SN-A의 IP가 됩니다. | {{ip}}:{{포트}} | 
|  gatewayIpPort  | 리소스 게이트웨이가 리소스에 액세스하는 데 사용하는 IP 주소 및 포트입니다. | {{ip}}:{{포트}} | 
|  resourceIpPort  | 리소스의 IP 주소 및 포트입니다. | {{ip}}:{{포트}} | 

**예제**  
다음은 로그 항목의 예시입니다.

```
{
    "eventTimestamp": "2024-12-02T10:10:10.123Z",
    "serviceNetworkArn": "arn:aws:vpc-lattice:us-west-2:1234567890:servicenetwork/sn-1a2b3c4d",
    "serviceNetworkResourceAssociationId": "snra-1a2b3c4d",
    "vpcEndpointId": "vpce-01a2b3c4d",
    "sourceVpcArn": "arn:aws:ec2:us-west-2:1234567890:vpc/vpc-01a2b3c4d",
    "resourceConfigurationArn": "arn:aws:vpc-lattice:us-west-2:0987654321:resourceconfiguration/rcfg-01a2b3c4d",
    "protocol": "tcp",
    "sourceIpPort": "172.31.23.56:44076",
    "destinationIpPort": "172.31.31.226:80",
    "gatewayIpPort": "10.0.28.57:49288",
    "resourceIpPort": "10.0.18.190:80"
}
```

## 액세스 로그 문제 해결
<a name="monitoring-access-logs-troubleshoot"></a>

이 섹션에는 액세스 로그에 표시될 수 있는 HTTP 오류 코드에 대한 설명이 포함되어 있습니다.


| 오류 코드 | 가능한 원인 | 
| --- | --- | 
| HTTP 400: 잘못된 요청 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/vpc-lattice/latest/ug/monitoring-access-logs.html)  | 
| HTTP 403: 금지됨 | 서비스에 대한 인증이 구성되었지만 수신되는 요청이 인증되거나 승인되지 않았습니다. | 
| HTTP 404: 존재하지 않는 서비스 | 사용자가 존재하지 않거나 올바른 서비스 네트워크에 등록되지 않은 서비스에 연결을 시도하고 있습니다. | 
| HTTP 500: 내부 서버 오류 | VPC Lattice에서 대상에 연결하지 못하는 등의 오류가 발생했습니다. | 
| HTTP 502: 잘못된 게이트웨이 | VPC Lattice에 오류가 발생했습니다. | 