애플리케이션 생성 및 실행 (CLI) - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.

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

애플리케이션 생성 및 실행 (CLI)

이 섹션에서는 를 사용하여 Apache Flink용 관리 서비스 애플리케이션을 만들고 실행합니다. AWS Command Line Interface kinesisanalyticsv2 AWS CLI 명령을 사용하여 아파치 플링크용 관리 서비스 애플리케이션을 만들고 이 애플리케이션과 상호 작용할 수 있습니다.

권한 정책 생성

참고

애플리케이션에 대한 권한 정책 및 역할을 생성해야 합니다. 이러한 IAM 리소스를 만들지 않으면 애플리케이션이 해당 데이터 및 로그 스트림에 액세스할 수 없습니다.

먼저 소스 스트림의 읽기 작업에 대한 권한을 부여하는 설명과 싱크 스트림의 쓰기 작업에 대한 권한을 부여하는 설명 두 개를 사용하여 권한 정책을 만듭니다. 그런 다음 정책을 IAM 역할에 연결합니다 (다음 섹션에서 생성). 따라서 Managed Service for Apache Flink가 역할을 맡을 때 서비스는 소스 스트림에서 읽고 싱크 스트림에 쓸 수 있는 권한이 있습니다.

다음 코드를 사용하여 AKReadSourceStreamWriteSinkStream 권한 정책을 생성합니다. username을 애플리케이션 코드를 저장하기 위해 Amazon S3 버킷을 만들 때 사용한 사용자 이름으로 바꿉니다. Amazon 리소스 이름 (ARNs) 의 계정 ID를 계정 (012345678901) ID로 교체하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username/getting-started-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901:stream/ExampleOutputStream" } ] }

권한 정책을 생성하는 step-by-step 방법에 대한 지침은 사용 IAM설명서의 자습서: 첫 번째 고객 관리형 정책 생성 및 연결을 참조하십시오.

IAM정책 생성

이 섹션에서는 Apache Flink용 관리형 서비스 애플리케이션이 소스 스트림을 읽고 싱크 스트림에 쓸 수 있는 IAM 역할을 생성합니다.

Managed Service for Apache Flink는 권한 없이 스트림에 액세스할 수 없습니다. 역할을 통해 이러한 권한을 부여합니다. IAM 각 IAM 역할에는 두 개의 정책이 연결되어 있습니다. 신뢰 정책은 Managed Service for Apache Flink가 역할을 취할 수 있는 권한을 부여하고, 권한 정책은 역할을 취한 후 Managed Service for Apache Flink에서 수행할 수 있는 작업을 결정합니다.

이전 섹션에서 생성한 권한 정책을 이 역할에 연결합니다.

IAM 역할 )를 생성하려면
  1. 에서 IAM 콘솔을 엽니다 https://console.aws.amazon.com/iam/.

  2. 탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.

  3. 신뢰할 수 있는 유형의 자격 증명 선택에서 AWS 서비스를 선택합니다.

  4. 이 역할을 사용할 서비스 선택에서 Kinesis를 선택합니다.

  5. 사용 사례 선택에서 Managed Service for Apache Flink를 선택합니다.

  6. 다음: 권한을 선택합니다.

  7. 권한 정책 연결 페이지에서 다음: 검토를 선택합니다. 역할을 생성한 후에 권한 정책을 연결합니다.

  8. 역할 생성 페이지에서 역할 이름으로 MF-stream-rw-role을 입력합니다. 역할 생성을 선택합니다.

    이제 라는 새 IAM 역할을 MF-stream-rw-role 생성했습니다. 그런 다음 역할의 신뢰 정책 및 권한 정책을 업데이트합니다.

  9. 역할에 권한 정책을 연결합니다.

    참고

    이 연습에서는 Managed Service for Apache Flink가 이 역할을 취하여 Kinesis 데이터 스트림(소스)에서 데이터를 읽고 출력을 다른 Kinesis 데이터 스트림에 씁니다. 따라서 이전 단계인 권한 정책 생성에서 만든 정책을 연결합니다.

    1. 요약 페이지에서 권한 탭을 선택합니다.

    2. 정책 연결을 선택합니다.

    3. 검색 상자에 AKReadSourceStreamWriteSinkStream(이전 섹션에서 생성한 정책)을 입력합니다.

    4. AKReadSourceStreamWriteSinkStream 정책을 선택한 후 정책 연결을 선택합니다.

이제 애플리케이션이 리소스에 액세스하는 데 사용하는 서비스 실행 역할이 생성되었습니다. 새 역할을 ARN 기록해 둡니다.

역할 생성에 대한 step-by-step 지침은 사용 설명서의 IAM역할 만들기 (콘솔)IAM참조하십시오.

애플리케이션 생성

라는 파일에 다음 JSON 코드를 저장합니다create_request.json. 샘플 역할을 이전에 만든 역할의 ARN 역할로 바꿉니다. ARN 버킷 ARN 접미사 (사용자 이름) 를 이전 섹션에서 선택한 접미사로 교체합니다. 서비스 실행 역할의 샘플 계정 ID(012345678901)를 사용자 계정 ID로 바꿉니다.

{ "ApplicationName": "getting_started", "ApplicationDescription": "Scala getting started application", "RuntimeEnvironment": "FLINK-1_19", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username", "FileKey": "getting-started-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }

다음 CreateApplication요청과 함께 를 실행하여 애플리케이션을 생성합니다.

aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json

애플리케이션이 생성되었습니다. 다음 단계에서는 애플리케이션을 시작합니다.

애플리케이션을 시작합니다.

이 섹션에서는 StartApplication액션을 사용하여 애플리케이션을 시작합니다.

애플리케이션을 시작하려면
  1. 라는 파일에 다음 JSON 코드를 저장합니다start_request.json.

    { "ApplicationName": "getting_started", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
  2. 위의 요청과 함께 StartApplication 작업을 실행하여 애플리케이션을 시작합니다.

    aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json

애플리케이션이 실행됩니다. Amazon CloudWatch 콘솔에서 Apache Flink용 관리형 서비스 지표를 확인하여 애플리케이션이 작동하는지 확인할 수 있습니다.

애플리케이션을 중지하십시오.

이 섹션에서는 StopApplication액션을 사용하여 애플리케이션을 중지합니다.

애플리케이션을 중지하려면
  1. 라는 파일에 다음 JSON 코드를 저장합니다stop_request.json.

    { "ApplicationName": "s3_sink" }
  2. 위의 요청과 함께 StopApplication 작업을 실행하여 애플리케이션을 중지합니다.

    aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json

애플리케이션이 중지됩니다.

CloudWatch 로깅 옵션 추가

를 AWS CLI 사용하여 Amazon CloudWatch 로그 스트림을 애플리케이션에 추가할 수 있습니다. 애플리케이션에서 CloudWatch 로그를 사용하는 방법에 대한 자세한 내용은 애플리케이션 로깅 설정을 참조하십시오.

환경 속성 업데이트

이 섹션에서는 애플리케이션 코드를 다시 컴파일하지 않고도 UpdateApplication액션을 사용하여 애플리케이션의 환경 속성을 변경할 수 있습니다. 이 예제에서는 원본 스트림과 대상 스트림의 리전을 변경합니다.

애플리케이션의 환경 속성 업데이트
  1. 라는 파일에 다음 JSON 코드를 저장합니다. update_properties_request.json

    { "ApplicationName": "getting_started", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }
  2. 이전 요청과 함께 UpdateApplication 작업을 실행하여 환경 속성을 업데이트하십시오.

    aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json

애플리케이션 코드 업데이트

새 버전의 코드 패키지로 애플리케이션 코드를 업데이트해야 하는 경우 UpdateApplicationCLI액션을 사용합니다.

참고

파일 이름이 같은 새 버전의 애플리케이션 코드를 로드하려면 새 객체 버전을 지정해야 합니다. Amazon S3 객체 버전 사용에 대한 자세한 내용을 알아보려면 버전 관리 활성화 또는 비활성화를 참조하세요.

를 사용하려면 Amazon S3 버킷에서 이전 코드 패키지를 삭제하고 새 버전을 업로드한 다음 동일한 Amazon S3 버킷과 객체 이름, 새 객체 버전을 지정하여 UpdateApplication 호출합니다. AWS CLI애플리케이션이 새 코드 패키지로 다시 시작됩니다.

다음 예 UpdateApplication 작업 요청은 애플리케이션 코드를 다시 로드하고 애플리케이션을 다시 시작합니다. CurrentApplicationVersionId를 현재 애플리케이션 버전으로 업데이트하세요. ListApplications 또는 DescribeApplication 작업을 사용하여 현재 애플리케이션 버전을 확인할 수 있습니다. 버킷 명칭 접미사(<username>)를 종속 리소스 생성 섹션에서 선택한 접미사로 업데이트합니다.

{{ "ApplicationName": "getting_started", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>", "FileKeyUpdate": "getting-started-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }