Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
221 lines (221 sloc) 7.52 KB
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: Video processing app with AWS Fargate using Stackery
Resources:
objectStore6A12D98C:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub ${AWS::StackName}-objectstore6a12d98c
AccessControl: PublicRead
Metadata:
StackeryName: rg-stackery-video-files
objectStore3B0DC7B6:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub ${AWS::StackName}-objectstore3b0dc7b6
AccessControl: PublicRead
Metadata:
StackeryName: rg-stackery-thumbnails
dockerTask4259BAF6:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Image: rupakg/docker-ffmpeg-thumb:latest
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-group: !Ref dockerTask4259BAF6LogGroup
awslogs-region: !Ref AWS::Region
awslogs-stream-prefix: rupakg-docker-ffmpeg-thumb-latest
Name: video-to-thumb-container
Environment:
- Name: AWS_REGION
Value: us-east-1
- Name: INPUT_VIDEO_FILE_URL
Value: https://s3.amazonaws.com/your-s3-bucket-name/test.mp4
- Name: OUTPUT_S3_PATH
Value: your-s3-bucket-name/your-thumbnail-folder-name
- Name: OUTPUT_THUMBS_FILE_NAME
Value: test.png
- Name: POSITION_TIME_DURATION
Value: 00:01
- Name: BUCKET_NAME
Value: !Ref objectStore3B0DC7B6
- Name: BUCKET_ARN
Value: !GetAtt objectStore3B0DC7B6.Arn
Cpu: 256
ExecutionRoleArn: !GetAtt dockerTask4259BAF6ExecutionRole.Arn
Memory: 512
NetworkMode: awsvpc
RequiresCompatibilities:
- FARGATE
TaskRoleArn: !GetAtt dockerTask4259BAF6TaskRole.Arn
Volumes: []
DependsOn: dockerTask4259BAF6LogGroup
Metadata:
StackeryName: stackery-video-to-thumb-task-def
dockerTask4259BAF6LogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub /stackery/task/${AWS::StackName}-dockerTask4259BAF6/rupakg-docker-ffmpeg-thumb-latest
dockerTask4259BAF6ExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub ${AWS::StackName}-DockerTaskExecutionRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
Effect: Allow
Principal:
Service: ecs-tasks.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: DownloadDockerImagesFromECR
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- logs:CreateLogStream
- logs:PutLogEvents
Resource: !Sub arn:aws:logs:*:*:log-group:/stackery/task/${AWS::StackName}-*
- Effect: Allow
Action:
- ecr:GetAuthorizationToken
- ecr:BatchCheckLayerAvailability
- ecr:GetDownloadUrlForLayer
- ecr:BatchGetImage
Resource: '*'
dockerTask4259BAF6TaskRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub ${AWS::StackName}-DockerTaskTaskRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
Effect: Allow
Principal:
Service: ecs-tasks.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: StackeryPolicy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:ListBucket
- s3:GetBucketLocation
- s3:GetObjectVersion
- s3:PutObject
- s3:GetLifecycleConfiguration
- s3:PutLifecycleConfiguration
Resource:
- !Sub arn:${AWS::Partition}:s3:::${objectStore3B0DC7B6}
- !Sub arn:${AWS::Partition}:s3:::${objectStore3B0DC7B6}/*
function17279F64:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${AWS::StackName}-function17279F64
Description: !Sub
- Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName}
- ResourceName: triggerOnUploadVideoStackery
CodeUri: src/triggerOnUploadVideoStackery
Handler: index.handler
Runtime: nodejs8.10
MemorySize: 512
Timeout: 30
Tracing: Active
Policies:
- AWSXrayWriteOnlyAccess
- Statement:
- Effect: Allow
Action:
- ecs:RunTask
- ecs:DescribeTasks
- ecs:StopTask
Resource:
- !Ref dockerTask4259BAF6
- !Sub arn:aws:ecs:${AWS::Region}:${AWS::AccountId}:task/*
- Statement:
- Effect: Allow
Action:
- iam:PassRole
Resource:
- !GetAtt dockerTask4259BAF6ExecutionRole.Arn
- !GetAtt dockerTask4259BAF6TaskRole.Arn
- S3CrudPolicy:
BucketName: !Sub ${AWS::StackName}-objectstore3b0dc7b6
- S3CrudPolicy:
BucketName: !Sub ${AWS::StackName}-objectstore6a12d98c
Events:
objectStore6A12D98C:
Type: S3
Properties:
Bucket: !Ref objectStore6A12D98C
Events:
- s3:ObjectCreated:*
Environment:
Variables:
DOCKER_TASK_ARN: !Ref dockerTask4259BAF6
DOCKER_TASK_SUBNETS: !Join
- ','
- !Ref DefaultVPCSubnets
BUCKET_NAME: !Sub ${AWS::StackName}-objectstore3b0dc7b6
BUCKET_NAME_2: !Sub ${AWS::StackName}-objectstore6a12d98c
Metadata:
StackeryName: triggerOnUploadVideoStackery
functionF9A32476:
Type: AWS::Serverless::Function
Properties:
FunctionName: !Sub ${AWS::StackName}-functionF9A32476
Description: !Sub
- Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName}
- ResourceName: triggerOnThumbnailCreationStackery
CodeUri: src/triggerOnThumbnailCreationStackery
Handler: index.handler
Runtime: nodejs8.10
MemorySize: 512
Timeout: 30
Tracing: Active
Policies:
- AWSXrayWriteOnlyAccess
Events:
objectStore3B0DC7B6:
Type: S3
Properties:
Bucket: !Ref objectStore3B0DC7B6
Events:
- s3:ObjectCreated:*
Metadata:
StackeryName: triggerOnThumbnailCreationStackery
thumbOutputBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref objectStore3B0DC7B6
PolicyDocument:
Statement:
-
Action:
- "s3:GetObject"
Effect: "Allow"
Resource:
Fn::Join:
- ""
-
- "arn:aws:s3:::"
-
Ref: "objectStore3B0DC7B6"
- "/*"
Principal: "*"
Parameters:
StackeryStackTagName:
Type: String
Description: Stack Name (injected by Stackery at deployment time)
StackeryEnvironmentTagName:
Type: String
Description: Environment Name (injected by Stackery at deployment time)
DefaultVPCSubnets:
Type: List<AWS::EC2::Subnet::Id>
Description: AWS account-specific default VPC subnets (injected by Stackery at deployment time)