Scorekeep 샘플 애플리케이션 시작하기 - AWS X-Ray

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

Scorekeep 샘플 애플리케이션 시작하기

이 자습서에서는 Amazon ECS에서 샘플 애플리케이션과 X-Ray AWS CloudFormation 데몬을 실행하는 리소스를 생성하고 구성하는 데 사용하는 Scorekeep 샘플 애플리케이션의 xray-gettingstarted 브랜치를 사용합니다. 애플리케이션은 Spring 프레임워크를 사용하여 JSON 웹 API를 구현하고 Amazon DynamoDB에 데이터를 유지합니다. AWS SDK for Java 애플리케이션의 서블릿 필터는 애플리케이션이 처리하는 모든 수신 요청을 계측하고 AWS SDK 클라이언트의 요청 핸들러는 DynamoDB에 대한 다운스트림 호출을 계측합니다.

또는 를 사용하여 이 자습서를 따를 수 있습니다. AWS Management Console AWS CLI

필수 조건

이 자습서에서는 샘플 애플리케이션과 X-Ray 데몬을 실행하는 리소스를 만들고 구성하는 AWS CloudFormation 데 사용합니다. 튜토리얼을 설치하고 실행하려면 다음 사전 요구 사항이 필요합니다:

  1. 권한이 제한된 IAM 사용자를 사용하는 경우 IAM 콘솔에서 다음 사용자 정책을 추가하십시오.

    • AWSCloudFormationFullAccess— 액세스 및 사용 CloudFormation

    • AmazonS3FullAccess— 를 CloudFormation 사용하여 템플릿 파일을 업로드하려면 AWS Management Console

    • IAMFullAccess— Amazon ECS 및 Amazon EC2 인스턴스 역할 생성

    • AmazonEC2FullAccess— Amazon EC2 리소스 생성

    • AmazonDynamoDBFullAccess— DynamoDB 테이블 생성

    • AmazonECS_FullAccess— Amazon ECS 리소스 생성

    • AmazonSNSFullAccess— Amazon SNS 주제 생성

    • AWSXrayReadOnlyAccess— X-Ray 콘솔에서 트레이스 맵 및 트레이스를 볼 수 있는 권한

  2. 를 사용하여 자습서를 실행하려면 CLI 버전 2.7.9 이상을 설치하고 이전 단계의 사용자와 함께 CLI를 구성하십시오. AWS CLI사용자와 함께 를 구성할 때 지역이 구성되어 있는지 확인하십시오. AWS CLI 지역이 구성되지 않은 경우 모든 CLI 명령에 --region AWS-REGION을 추가해야 합니다.

  3. 샘플 애플리케이션 리포지토리를 복제하려면 Git이 설치되어 있어야 합니다.

  4. 다음 코드 예제를 사용하여 Scorekeep 리포지토리의 xray-gettingstarted 브랜치를 복제하세요.

    git clone https://github.com/aws-samples/eb-java-scorekeep.git xray-scorekeep -b xray-gettingstarted

다음을 사용하여 Scorekeep 애플리케이션을 설치합니다. CloudFormation

AWS Management Console
를 사용하여 샘플 애플리케이션을 설치합니다. AWS Management Console
  1. CloudFormation 콘솔을 엽니다

  2. 스택 생성을 선택한 다음 드롭다운 메뉴에서 새 리소스 사용을 선택합니다.

  3. 템플릿 지정 섹션에서 템플릿 파일 업로드를 선택합니다.

  4. 파일 선택을 선택하고 git repo를 복제할 때 생성된 xray-scorekeep/cloudformation 폴더로 이동한 다음 cf-resources.yaml 파일을 선택합니다.

  5. 다음을 선택하여 계속 진행합니다.

  6. 스택 이름 입력란에 scorekeep을 입력하고 페이지 하단에서 다음을 선택하여 계속 진행합니다. 참고로 이 튜토리얼의 나머지 부분에서는 스택의 이름이 scorekeep으로 지정되었다고 가정합니다.

  7. 스택 옵션 구성 페이지의 하단으로 스크롤하여 다음을 선택하여 계속 진행합니다.

  8. 검토 페이지 하단으로 스크롤하여 사용자 지정 이름으로 IAM 리소스를 생성할 CloudFormation 수 있음을 확인하는 확인란을 선택하고 Create stack 을 선택합니다.

  9. 이제 CloudFormation 스택이 생성되고 있습니다. 스택 상태는 약 5분 동안 CREATE_IN_PROGRESS로 유지되다가 CREATE_COMPLETE로 변경됩니다. 상태는 주기적으로 새로 고쳐지며, 페이지를 새로 고칠 수도 있습니다.

AWS CLI
를 사용하여 샘플 애플리케이션을 설치합니다. AWS CLI
  1. 튜토리얼 앞부분에서 복제한 xray-scorekeep 리포지토리의 cloudformation 폴더로 이동합니다:

    cd xray-scorekeep/cloudformation/
  2. 다음 AWS CLI 명령을 입력하여 CloudFormation 스택을 생성합니다.

    aws cloudformation create-stack --stack-name scorekeep --capabilities "CAPABILITY_NAMED_IAM" --template-body file://cf-resources.yaml
  3. CloudFormation 스택 상태가 CREATE_COMPLETE 될 때까지 기다리십시오. 약 5분이 소요됩니다. 다음 AWS CLI 명령을 사용하여 상태를 확인합니다.

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].StackStatus"

데이터 추적 생성

애플리케이션에는 프런트 엔드 웹 앱이 포함되어 있습니다. 웹 앱을 사용하여 API 트래픽을 생성하고 트레이스 데이터를 X-Ray로 전송합니다. 먼저 AWS Management Console 또는 AWS CLI를 사용하여 웹 앱 URL을 검색합니다.

AWS Management Console
를 사용하여 애플리케이션 URL을 찾습니다. AWS Management Console
  1. CloudFormation 콘솔을 엽니다

  2. Stacks 목록에서 scorekeep을 선택합니다.

  3. scorekeep 스택 페이지에서 출력 탭을 선택하고 LoadBalancerUrl URL 링크를 선택하여 웹 애플리케이션을 엽니다.

AWS CLI
를 사용하여 애플리케이션 URL을 찾으십시오. AWS CLI
  1. 다음 명령어를 사용하여 웹 애플리케이션의 URL을 표시합니다:

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].Outputs[0].OutputValue"
  2. 이 URL을 복사하여 브라우저에서 열면 Scorekeep 웹 애플리케이션이 표시됩니다.

웹 애플리케이션을 사용하여 트레이스 데이터를 생성하십시오.
  1. [Create]를 선택하여 사용자 및 세션을 생성합니다.

  2. [game name]을 입력하고, [Rules]를 [Tic Tac Toe]로 설정한 다음 [Create]를 선택하여 게임을 생성합니다.

  3. [Play]를 선택하여 게임을 시작합니다.

  4. 타일을 선택하여 동작을 하고 게임 상태를 변경합니다.

이들 각 단계에서 사용자, 세션, 게임, 동작 및 상태 데이터를 읽고 쓰기 위해 API에 대한 HTTP 요청과 DynamoDB에 대한 다운스트림 호출이 생성됩니다.

에서 트레이스 맵을 확인하세요. AWS Management Console

샘플 애플리케이션에서 생성된 트레이스 맵과 트레이스를 X-Ray 및 CloudWatch 콘솔에서 볼 수 있습니다.

X-Ray console
X-Ray 콘솔 사용하기
  1. X-Ray 콘솔의 트레이스 맵 페이지를 엽니다.

  2. 콘솔에 애플리케이션이 전송하는 트레이스 데이터로부터 X-Ray가 생성하는 서비스 그래프가 표시됩니다. 필요한 경우 트레이스 맵의 기간을 조정하여 웹 애플리케이션을 처음 시작한 이후 트레이스가 모두 표시되도록 하십시오.

    X-Ray 트레이스 맵 기간

추적 맵에는 웹 앱 클라이언트, Amazon ECS에서 실행되는 API, 애플리케이션이 사용하는 각 DynamoDB 테이블이 표시됩니다. 애플리케이션에 대한 모든 요청에 대해, 요청이 API에 도달하고, 다운스트림 서비스를 요청하고, 완료될 때 매초 구성 가능한 최대 개수까지 요청이 트레이스됩니다.

서비스 그래프에서 노드를 선택하면 해당 노드로 트래픽을 생성한 요청의 트레이스를 볼 수 있습니다. 현재 Amazon SNS 노드는 노란색입니다. 드릴다운하여 이유를 확인하십시오.

X-Ray 콘솔 트레이스 맵 페이지
오류의 원인을 찾으려면
  1. [SNS]라는 노드를 선택합니다. 노드 세부 정보 패널이 표시됩니다.

  2. View traces(트레이스 보기)를 선택하여 Trace overview(트레이스 개요) 화면에 액세스합니다.

  3. [Trace list]에서 트레이스를 선택합니다. 이 트레이스는 수신 요청에 대한 응답이 아니라 시작 시 기록된 것이므로 메서드 또는 URL이 없습니다.

    추적 목록에서 추적 선택
  4. 페이지 하단의 Amazon SNS 세그먼트에서 오류 상태 아이콘을 선택하여 SNS 하위 세그먼트의 예외 페이지가 열립니다.

    오류 상태 아이콘을 선택하여 Amazon SNS 하위 세그먼트의 예외 페이지를 엽니다.
  5. X-Ray SDK는 구성된 AWS SDK 클라이언트에서 발생하는 예외를 자동으로 캡처하고 스택 추적을 기록합니다.

    캡처된 예외와 기록된 스택 트레이스를 보여주는 Exceptions(예외) 탭
CloudWatch console
CloudWatch 콘솔 사용
  1. CloudWatch 콘솔의 X-Ray 트레이스 맵 페이지를 엽니다.

  2. 콘솔에 애플리케이션이 전송하는 트레이스 데이터로부터 X-Ray가 생성하는 서비스 그래프가 표시됩니다. 필요한 경우 트레이스 맵의 기간을 조정하여 웹 애플리케이션을 처음 시작한 이후 트레이스가 모두 표시되도록 하십시오.

    CloudWatch 트레이스 맵 기간

추적 맵에는 웹 앱 클라이언트, Amazon EC2에서 실행되는 API, 애플리케이션이 사용하는 각 DynamoDB 테이블이 표시됩니다. 애플리케이션에 대한 모든 요청에 대해, 요청이 API에 도달하고, 다운스트림 서비스를 요청하고, 완료될 때 매초 구성 가능한 최대 개수까지 요청이 트레이스됩니다.

서비스 그래프에서 노드를 선택하면 해당 노드로 트래픽을 생성한 요청의 트레이스를 볼 수 있습니다. 현재 Amazon SNS 노드는 주황색입니다. 드릴다운하여 이유를 확인하십시오.

X-Ray 콘솔 트레이스 맵 페이지
오류의 원인을 찾으려면
  1. [SNS]라는 노드를 선택합니다. SNS 노드 세부 정보 패널은 지도 아래에 표시됩니다.

  2. 추적 보기를 선택하여 추적 페이지에 액세스합니다.

  3. 페이지 하단을 추가하고 추적 목록에서 추적을 선택합니다. 이 트레이스는 수신 요청에 대한 응답이 아니라 시작 시 기록된 것이므로 메서드 또는 URL이 없습니다.

    추적 목록에서 추적 선택
  4. 세그먼트 타임라인 하단에서 Amazon SNS 하위 세그먼트를 선택하고, SNS 하위 세그먼트의 예외 탭을 선택하여 예외 세부 정보를 확인합니다.

    Amazon SNS 하위 세그먼트에 대한 예외 탭 보기

원인은 WebConfig 클래스에서 이루어진 createSubscription 직접 호출에서 제공된 이메일 주소가 잘못된 것입니다. 다음 섹션에서는 이 문제를 해결하겠습니다.

Amazon SNS 알림 구성

Scorekeep은 Amazon SNS를 사용하여 사용자가 게임을 완료하면 알림을 전송합니다. 애플리케이션이 시작되면 CloudFormation 스택 매개변수에 정의된 이메일 주소에 대한 구독을 생성하려고 시도합니다. 해당 직접 호출은 현재 실패하고 있습니다. 알림을 활성화하도록 알림 이메일을 구성하고 추적 맵에 강조 표시된 장애를 해결하십시오.

AWS Management Console
를 사용하여 Amazon SNS 알림을 구성하려면 AWS Management Console
  1. CloudFormation 콘솔을 엽니다

  2. 목록에서 scorekeep 스택 이름 옆에 있는 라디오 버튼을 선택한 다음 업데이트를 선택합니다.

  3. 현재 템플릿 사용이 선택되어 있는지 확인하고 업데이트 스택 페이지에서 다음을 클릭합니다.

  4. 목록에서 이메일 매개 변수를 찾아 기본값을 유효한 이메일 주소로 바꿉니다.

    이메일 구성 업데이트
  5. 페이지의 하단으로 스크롤하고 다음(Next)을 선택합니다.

  6. 리뷰 페이지 하단으로 스크롤하여 사용자 지정 이름으로 IAM 리소스를 생성할 CloudFormation 수 있는 확인 확인란을 선택하고 Update stack을 선택합니다.

  7. 이제 CloudFormation 스택이 업데이트되고 있습니다. 스택 상태는 약 5분 동안 UPDATE_IN_PROGRESS로 유지되다가 UPDATE_COMPLETE로 변경됩니다. 상태는 주기적으로 새로 고쳐지며, 페이지를 새로 고칠 수도 있습니다.

AWS CLI
를 사용하여 Amazon SNS 알림을 구성하려면 AWS CLI
  1. 이전에 만든 xray-scorekeep/cloudformation/ 폴더로 이동하여 텍스트 편집기에서 cf-resources.yaml 파일을 엽니다.

  2. 이메일 매개 변수에서 Default 값을 찾아 UPDATE_ME에서 유효한 이메일 주소로 변경합니다.

    Parameters: Email: Type: String Default: UPDATE_ME # <- change to a valid abc@def.xyz email address
  3. cloudformation폴더에서 다음 AWS CLI 명령을 사용하여 CloudFormation 스택을 업데이트합니다.

    aws cloudformation update-stack --stack-name scorekeep --capabilities "CAPABILITY_NAMED_IAM" --template-body file://cf-resources.yaml
  4. CloudFormation 스택 상태가 UPDATE_COMPLETE 될 때까지 기다리십시오. 몇 분 정도 걸립니다. 다음 AWS CLI 명령을 사용하여 상태를 확인합니다.

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].StackStatus"

업데이트가 완료되면 Scorekeep이 다시 시작하고 SNS 주제에 대한 구독을 생성합니다. 이메일을 확인하여 게임을 완료할 때 업데이트를 보기 위한 구독을 확인합니다. 추적 맵을 열어 SNS 호출이 더 이상 실패하지 않는지 확인합니다.

샘플 애플리케이션 탐색

샘플 애플리케이션은 Java용 X-Ray SDK를 사용하도록 구성된 Java용 HTTP 웹 API입니다. CloudFormation 템플릿을 사용하여 애플리케이션을 배포하면 DynamoDB 테이블, Amazon ECS 클러스터 및 ECS에서 Scorekeep을 실행하는 데 필요한 기타 서비스가 생성됩니다. 를 통해 ECS용 작업 정의 파일이 생성됩니다. CloudFormation 이 파일은 ECS 클러스터에서 작업별로 사용되는 컨테이너 이미지를 정의합니다. 이 이미지는 공식 X-Ray 공개 ECR에서 가져온 것입니다. Scorekeep API 컨테이너 이미지에는 Gradle로 컴파일된 API가 있습니다. Scorekeep 프론트엔드 컨테이너의 컨테이너 이미지는 nginx 프록시 서버를 사용하여 프론트엔드에 서비스를 제공합니다. 이 서버는 /api로 시작하는 경로에 대한 요청을 API로 라우팅합니다.

수신 HTTP 요청을 구성하기 위해 애플리케이션은 SDK가 제공하는 TracingFilter를 추가합니다.

예 WebConfigsrc/main/java/scorekeep/ .java - 서블릿 필터
import javax.servlet.Filter; import com.amazonaws.xray.javax.servlet.AWSXRayServletFilter; ... @Configuration public class WebConfig { @Bean public Filter TracingFilter() { return new AWSXRayServletFilter("Scorekeep"); } ...

이 필터는 애플리케이션이 처리하는 모든 수신 요청에 대해 요청 URL, 메소드, 응답 상태, 시작 시간 및 종료 시간을 포함한 트레이스 데이터를 전송합니다.

또한 애플리케이션은 AWS SDK for Java를 사용하여 DynamoDB에 대한 다운스트림 호출을 생성합니다. 이러한 호출을 계측하기 위해 애플리케이션은 단순히 AWS SDK 관련 하위 모듈을 종속성으로 사용하고, X-Ray SDK for Java는 모든 SDK 클라이언트를 자동으로 계측합니다. AWS

애플리케이션은 Docker을 사용하여 Gradle Docker Image와 함께 소스 코드를 인스턴스 내에서 빌드하고 Scorekeep API Dockerfile 파일을 사용하여 Gradle이 ENTRYPOINT에서 생성하는 실행 가능한 JAR을 실행합니다.

예 Gradle 도커 이미지를 통해 빌드하기 위해 도커 사용
docker run --rm -v /PATH/TO/SCOREKEEP_REPO/home/gradle/project -w /home/gradle/project gradle:4.3 gradle build
예 Dockerfile ENTRYPOINT
ENTRYPOINT [ "sh", "-c", "java -Dserver.port=5000 -jar scorekeep-api-1.0.0.jar" ]

build.gradle 파일이 컴파일 도중 SDK 하위 모듈을 종속성으로 선언하여 Maven으로부터 이들 하위 모듈을 다운로드합니다.

예 build.gradle -- 종속성
... dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile('org.springframework.boot:spring-boot-starter-test') compile('com.amazonaws:aws-java-sdk-dynamodb') compile("com.amazonaws:aws-xray-recorder-sdk-core") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk-instrumentor") ... } dependencyManagement { imports { mavenBom("com.amazonaws:aws-java-sdk-bom:1.11.67") mavenBom("com.amazonaws:aws-xray-recorder-sdk-bom:2.11.0") } }

코어, AWS SDK, SDK 인스트루멘터 서브모듈만 있으면 AWS SDK로 이루어진 다운스트림 호출을 자동으로 계측할 수 있습니다. AWS

원시 세그먼트 데이터를 X-Ray API로 전달하려면 X-Ray 대몬(daemon)이 UDP 포트 2000에서 트래픽을 수신해야 합니다. 이를 위해 애플리케이션은 컨테이너에서 X-Ray 대몬(daemon)을 실행하고, 이 컨테이너는 사이드카 컨테이너로 ECS에 Scorekeep 애플리케이션과 함께 배포됩니다. 자세한 내용은 X-Ray 대몬(daemon) 항목을 참조하세요.

예 ECS 작업 정의의 X-Ray 대몬(daemon) 컨테이너 정의
... Resources: ScorekeepTaskDefinition: Type: AWS::ECS::TaskDefinition Properties: ContainerDefinitions: ... - Cpu: '256' Essential: true Image: amazon/aws-xray-daemon MemoryReservation: '128' Name: xray-daemon PortMappings: - ContainerPort: '2000' HostPort: '2000' Protocol: udp ...

Java용 X-Ray SDK는 코드를 계측하는 데 사용할 수 있는 TracingHandler인 전역 레코더를 제공하는 AWSXRay라는 클래스를 제공합니다. 전역 레코더를 구성하여 수신 HTTP 호출에 대해 세그먼트를 생성하는 AWSXRayServletFilter를 사용자 지정할 수 있습니다. 이 샘플은 WebConfig 클래스에 플러그인 및 샘플링 규칙을 사용하여 전역 레코더를 구성하는 정적 블록을 포함합니다.

예 WebConfigsrc/main/java/scorekeep/.java - 레코더
import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.AWSXRayRecorderBuilder; import com.amazonaws.xray.javax.servlet.AWSXRayServletFilter; import com.amazonaws.xray.plugins.ECSPlugin; import com.amazonaws.xray.plugins.EC2Plugin; import com.amazonaws.xray.strategy.sampling.LocalizedSamplingStrategy; ... @Configuration public class WebConfig { ... static { AWSXRayRecorderBuilder builder = AWSXRayRecorderBuilder.standard().withPlugin(new ECSPlugin()).withPlugin(new EC2Plugin()); URL ruleFile = WebConfig.class.getResource("/sampling-rules.json"); builder.withSamplingStrategy(new LocalizedSamplingStrategy(ruleFile)); AWSXRay.setGlobalRecorder(builder.build()); ... } }

이 예제는 빌더를 사용하여 sampling-rules.json 파일로부터 샘플링 규칙을 로드합니다. 샘플링 규칙은 SDK가 들어오는 요청의 세그먼트를 기록하는 비율에 따라 다릅니다.

예 src/main/java/resources/sampling-rules.json
{ "version": 1, "rules": [ { "description": "Resource creation.", "service_name": "*", "http_method": "POST", "url_path": "/api/*", "fixed_target": 1, "rate": 1.0 }, { "description": "Session polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/session/*", "fixed_target": 0, "rate": 0.05 }, { "description": "Game polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/game/*/*", "fixed_target": 0, "rate": 0.05 }, { "description": "State polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/state/*/*/*", "fixed_target": 0, "rate": 0.05 } ], "default": { "fixed_target": 1, "rate": 0.1 } }

샘플링 규칙 파일은 4개의 사용자 지정 샘플링 규칙 및 기본 규칙을 정의합니다. 각 수신 요청에 대해, SDK가 사용자 지정 규칙을 정의된 순서대로 평가합니다. SDK는 요청의 메서드, 경로 및 서비스 이름과 일치하는 첫 번째 규칙을 적용합니다. Scorekeep의 경우, 첫 번째 규칙이 초당 1개 요청의 고정 타겟, 그리고 고정 타겟 충족 이후 1.0 즉, 100%의 요청 비율을 적용하여 모든 POST 요청(리소스 생성 호출)을 포착합니다.

다른 세 개의 사용자 지정 규칙은 고정 타겟 없이 5% 비율을 세션, 게임 및 상태 읽기(GET 요청)에 적용합니다. 이는 콘텐츠가 최신 상태를 유지하도록 하기 위해 프런트 엔드가 몇 초마다 자동으로 생성하는 주기적 호출에 대한 트레이스 수를 최소화합니다. 다른 모든 요청의 경우 파일이 초당 1개의 기본 요청 비율과 10% 비율을 정의합니다.

또한 샘플 애플리케이션은 수동 SDK 클라이언트 구성, 추가 하위 세그먼트 생성, 발신 HTTP 호출과 같은 고급 기능을 사용하는 방법도 보여줍니다. 자세한 설명은 AWS X-Ray 샘플 애플리케이션 섹션을 참조하세요.

선택 사항: 최소 권한 정책

Scorekeep ECS 컨테이너는 AmazonSNSFullAccessAmazonDynamoDBFullAccess와 같은 전체 액세스 정책을 사용하여 리소스에 액세스합니다. 전체 액세스 정책을 사용하는 것은 프로덕션 애플리케이션의 모범 사례가 아닙니다. 다음 예제에서는 애플리케이션의 보안을 개선하기 위해 DynamoDB IAM 정책을 업데이트합니다. IAM 정책의 보안 모범 사례에 대해 자세히 알아보려면 AWS X-Ray의 ID 및 액세스 관리를 참조하십시오.

예 cf-resources.yaml 템플릿 ECS 정의 TaskRole
ECSTaskRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ecs-tasks.amazonaws.com" Action: - "sts:AssumeRole" ManagedPolicyArns: - "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess" - "arn:aws:iam::aws:policy/AmazonSNSFullAccess" - "arn:aws:iam::aws:policy/AWSXrayFullAccess" RoleName: "scorekeepRole"

정책을 업데이트하려면 먼저 DynamoDB 리소스의 ARN을 식별합니다. 그런 다음 사용자 지정 IAM 정책에 ARN을 사용합니다. 마지막으로 이러한 정책을 인스턴스 프로파일에 적용합니다.

DynamoDB 리소스의 ARN을 식별하려면:
  1. DynamoDB 콘솔을 엽니다.

  2. 왼쪽 메뉴에서 테이블을 선택합니다.

  3. scorekeep-* 중 하나를 선택하여 테이블 세부 정보 페이지를 표시합니다.

  4. 개요 탭에서 추가 정보를 선택하여 섹션을 펼치고 Amazon 리소스 이름(ARN)을 확인합니다. 이 값을 복사합니다.

  5. ARN을 다음 IAM 정책에 삽입하고 AWS_REGIONAWS_ACCOUNT_ID 값을 특정 지역 및 계정 ID로 변경합니다. 이 새 정책은 모든 작업을 허용하는 AmazonDynamoDBFullAccess 정책 대신 지정된 작업만 허용합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ScorekeepDynamoDB", "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:Query" ], "Resource": "arn:aws:dynamodb:<AWS_REGION>:<AWS_ACCOUNT_ID>:table/scorekeep-*" } ] }

    애플리케이션이 생성하는 테이블은 일관된 명명 규칙을 따릅니다. scorekeep-* 형식을 사용하여 모든 Scorekeep 테이블을 표시할 수 있습니다.

IAM 정책 변경하기
  1. IAM 콘솔에서 Scorekeep 작업 역할(scorekeepRole)을 엽니다.

  2. AmazonDynamoDBFullAccess 정책 옆에 있는 확인란을 선택하고 삭제 를 선택하여 이 정책을 삭제합니다.

  3. 권한 추가를 선택한 다음 정책 연결을 선택하고 마지막으로 정책 생성을 선택합니다.

  4. JSON 탭을 선택하고 위에서 생성한 정책을 붙여넣습니다.

  5. 페이지 하단에서 다음: 태그를 선택합니다.

  6. 페이지 하단에서 다음: 리뷰를 선택합니다.

  7. 이름(Name)에 정책 이름을 입력합니다.

  8. 페이지 하단에서 정책 생성을 선택합니다.

  9. scorekeepRole 역할에 새로 생성한 정책을 연결합니다. 첨부된 정책이 적용되려면 몇 분 정도 소요될 수 있습니다.

새 정책을 scorekeepRole 역할에 연결한 경우 스택을 삭제하기 전에 새 정책을 분리해야 합니다. 이렇게 연결된 정책은 CloudFormation 스택 삭제를 차단하기 때문입니다. 정책을 삭제하면 정책이 자동으로 분리될 수 있습니다.

사용자 지정 IAM 정책 제거
  1. IAM 콘솔(IAM console)을 엽니다.

  2. 왼쪽 탐색 메뉴에서 정책을 선택합니다.

  3. 이 섹션의 앞부분에서 생성한 사용자 지정 정책 이름을 검색하고 정책 이름 옆의 라디오 버튼을 선택하여 강조 표시합니다.

  4. 작업 드롭다운을 선택한 다음 삭제를 선택합니다.

  5. 사용자 지정 정책의 이름을 입력한 다음 삭제를 선택하여 삭제합니다. 그러면 정책이 scorekeepRole 역할에서 자동으로 분리됩니다.

정리

Scorekeep 애플리케이션 리소스를 삭제하려면 다음 절차를 따르세요.

참고

이 자습서의 이전 섹션을 사용하여 사용자 지정 정책을 만들고 연결한 경우 CloudFormation 스택을 scorekeepRole 삭제하기 전에 에서 정책을 제거해야 합니다.

AWS Management Console
를 사용하여 샘플 애플리케이션을 삭제합니다. AWS Management Console
  1. CloudFormation 콘솔을 엽니다

  2. 목록에서 scorekeep 스택 이름 옆에 있는 라디오 버튼을 선택한 다음 삭제를 선택합니다.

  3. 현재 CloudFormation 스택이 삭제되고 있습니다. 스택 상태는 모든 리소스가 삭제될 때까지 몇 분 동안 DELETE_IN_PROGRESS로 유지됩니다. 상태는 주기적으로 새로 고쳐지며, 페이지를 새로 고칠 수도 있습니다.

AWS CLI
를 사용하여 샘플 애플리케이션을 삭제합니다. AWS CLI
  1. 다음 AWS CLI 명령을 입력하여 CloudFormation 스택을 삭제합니다.

    aws cloudformation delete-stack --stack-name scorekeep
  2. CloudFormation 스택이 더 이상 존재하지 않을 때까지 기다리십시오. 약 5분이 소요됩니다. 다음 AWS CLI 명령을 사용하여 상태를 확인합니다.

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].StackStatus"

다음 단계

다음 장 AWS X-Ray 개념에서 X-Ray에 대해 자세히 알아봅니다.

자체 앱을 계측하려면 Java용 X-Ray SDK 또는 다른 X-Ray SDK 중 하나에 대해 자세히 알아보십시오.

X-Ray 데몬을 로컬에서 실행하거나 실행하려면 을 AWS참조하십시오. AWS X-Ray 다이몬

의 샘플 애플리케이션에 GitHub 기여하려면 을 참조하십시오. eb-java-scorekeep