aws-samples/aws-media-services-simple-vod-workflow
Lab that covers video conversion workflow for Video On Demand using AWS MediaConvert. - aws-samples/aws-media-services-simple-vod-workflow
github.com
---------------------------------------------------------------------------------------------------------------
작업이력
210222 위에 작업물을 기반으로 다시 문서 작성함
210309 S3 람다 트리거 없어서 내용 추가
---------------------------------------------------------------------------------------
1. 변환할 비디오 파일이 올라가 S3 버킷을 만듭니다
- AWS 서비스 내에서 S3를 선택합니다
- 버킷만들기를 선택합니다
- 전세계적으로 고유한 버킷이름을 작성합니다
- 사용할 지역을 선택합니다
- 설정복사할 버킷을 설정하지 않고, 버킷만들기를 선택합니다.

2. Lambda 함수에서 사용 될, IAM 역할을 생성합니다
배경
모든 람다 함수에는 연관된 IAM 역할이 있으며,
해당 역할은 다른 AWS 서비스와 상호 작용할 수 있게 정의합니다.
이 워크샵을 위해 마지막 단계에서 작성된 DynamoDB 테이블과 MediaConvert 서비스와 상호 작용할 수 있는 람다 기능 권한을 부여하는 IAM 역할을 생성해야 합니다.
고급 지침서
IAM 콘솔을 사용하여 새 역할을 만듭니다. VODLambdaRole이라고 이름을 지정하고 역할 유형으로 AWS Lambda를 선택합니다.
CloudWatch 로그 권한이 필요하여, 권한을 부여하려면 AWSLambdaBasicExecutionRole이라는 관리 정책을 이 역할에 연결합니다
인라인 정책을 사용하여 람다가 실행되는 데 필요한 다른 리소스에 사용 권한을 부여합니다.
단계별 지침서
1. AWS 서비스내에 IAM를 선택합니다
2. 왼쪽 메뉴바에서 역할을 선택한뒤, 역할만들기를 클릭합니다.
3. 신뢰할 수 있는 유형의 개체를 AWS Service를 선택한 뒤, 사용사례를 Lambda를 선택합니다.
이후 다음:권한 버튼을 누릅니다.
참고: 역할 유형을 선택하면 AWS 서비스가 사용자를 대신하여 이 역할을 대신할 수 있는 역할에 대한 신뢰 정책이 자동으로 생성됩니다. CLI, AWS CloudFormation 또는 다른 메커니즘을 사용하여 이 역할을 생성하는 경우 신뢰 정책을 직접 지정해야 합니다
4. 정책필터 검색란에 "AWSLambdaBasicExecutionRole"를 입력한뒤, 해당 항목을 선택합니다.
5. 정책필터 검색란에 "AmazonS3FullAccess"를 입력한뒤, 해당 항목을 선택합니다
6. 다음:태그 버튼을 누릅니다
7. 다음:검토 버튼을 누릅니다.
8. 역할이름으로 "VODLambdaRole"을 입력합니다
9. 역할 만들기 버튼을 누릅니다.
+ 추가
하단 단계를 진행하기 위해서는, MediaConvert에 대한 역할 역시도 필요합니다
위에서 3번 항목처럼, AWS Service 선택, MediaConvert 선택 하고,
역할이름을 "MediaConvertRole"로 입력한뒤, 역할을 만들어둡니다.
만든역할 상세 페이지에 가면 역할ARN을 확인 할 수 있는데
해당 부분은 하단 JSON에 넣어져야 합니다!
10. 방금 만든 역할인 "VODLambdaRole"의 상세 페이지에 들어갑니다
11. 권한탭내에서, 인라인 정책 추가를 클릭한뒤, JSON 탭을 선택합니다.
12. 하단에 있는 JSON 코드를 복사한뒤, 정책문서에 붙여넣기 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*",
"Effect": "Allow",
"Sid": "Logging"
},
{
"Action": [
"iam:PassRole"
],
"Resource": [
"이곳에 복사한 MediaConvertRole ARN을 입력합니다!"
],
"Effect": "Allow",
"Sid": "PassRole"
},
{
"Action": [
"mediaconvert:*"
],
"Resource": [
"*"
],
"Effect": "Allow",
"Sid": "MediaConvertService"
}
]
}
|
cs |
13. 정책 검토를 선택한뒤, 이름을 "VODLambdaPolicy" 입력한뒤 정책을 생성합니다.
3. 비디오를 변환할 람다 함수 생성
배경
AWS Lambda는 S3내에 파일이 업로드되거나, HTTP 요청을 이벤트에 대한 응답으로 코드를 실행합니다.
이 단계에서는 MediaConvert python SDK를 사용하여 비디오를 처리하는 핵심 기능을 구축합니다.
람다 함수는 S3 버킷 내에 파일을 업로드(putObject)하는 이벤트에 응답합니다.
비디오 파일이 추가될 때마다 람다는 미디어 변환 작업을 시작합니다.
생성할 람다는 MediaConvert에 작업을 제출하지만 작업이 완료될 때까지 기다리지 않습니다.
향후 Cloudwatch 이벤트를 사용하여 MediaConvert 작업을 자동으로 모니터링하고 작업이 완료되면 작업을 수행합니다.
단계별 지침서
21024 기준, Git과 달라 약간의 변형이 있습니
1. Lambda 서비스 페이지로 이동합니다.
2. "함수생성"을 선택합니다
3. 새로작성을 선택합니다.
4. 기본정보의 함수 이름을 "VODLambdaConvert"를 입력합니다
5. 런타임을 Python3.7로 선택합니다
6. 기본 실행 역할 변경을 확장한뒤, 실행 역할에 기존 역할 사용을 선택합니다
7. 기존 역할에 앞에서 만든 "VODLambdaRole"을 선택합니다
8. "함수생성"버튼을 클릭합니다
9. VODLambdaConvert함수 상세 페이지의 함수코드의 작업 버튼을 누르면, zip 파일 업로드와 s3업로드로 나누어집니다.
9-1) zip파일 업로드
해당 파일을 다운 받은 후, 파일을 업로드하면됩니다.
9-2) S3업로드
zip 파일을 올린 S3에 대한 URL을 입력하면됩니다
*다만 해당 S3 region과 Lambda의 region이 동일해야합니다
10. 소스를 올린 이후, 런타임 설정의 핸들러를 "convert.handler"로 바꿉니다
11. 환경변수를 설정합니다.
- DestinationBucket = "변환될 비디오가 저장될 S3 버킷명"
- MediaConvertRole = "위에서 복사했던 MediaConvertRole의 ARN"
- Application = "VOD"
12. 기본설정을 설정합니다
- 제한 시간 : 2분
4. 람다에 S3 Put Item 이벤트 트리거 생성하기
배경
람다 트리거에 S3 버킷에 연결할 시간입니다.
고급지침서
AWS Lamba 콘솔을 사용하여 비디오가등록될 S3 버킷의 putItem 트리거를 위에서 생성한 람다에 추가합니다.
단계별지침서
1. 람다 상세페이의 구성탭에서, 트리거 메뉴에 진입한뒤, 트리거 추가를 클릭합니다.
2. 트리거 구성 선택박스에서 S3를 선택합니다
3. 비디오가 등록될 S3버킷을 선택합니다.
4. 이벤트 유형을 PUT을 선택합니다
5. 추가 버튼을 눌러서 마무리 합니다
5. S3에서 파일을 업로드합니다
파일을 업로드하면 MediaConvert를 통하여 작업이 완료된것을 확인할 수 있습니다
'IT > AWS' 카테고리의 다른 글
AWS Certification 기초를 따기위한 노력 발자취 (0) | 2022.05.12 |
---|---|
Lambda에 RDS 연결하기 (0) | 2021.03.08 |
AWS AMI 다른 계정과 공유하기 (0) | 2020.07.07 |
AWS Aurora에서 Lambda 연결하기 (0) | 2020.07.07 |
Lambda Layer를 통하여 Python에 패키지 넣기 (0) | 2020.06.29 |