Created
October 12, 2018 18:58
-
-
Save rupakg/e2f32995a7648db76391ab647c4fc7e7 to your computer and use it in GitHub Desktop.
AWS CF Circular Dependency Issue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AWSTemplateFormatVersion: "2010-09-09" | |
Outputs: | |
DeploymentHistoryId: | |
Description: "Stackery Deployment History ID" | |
Value: "4148" | |
Parameters: | |
StackeryEnvironmentTagName: | |
Default: development | |
Type: String | |
Description: "Environment Name (injected by Stackery at deployment time)" | |
StackeryStackTagName: | |
Default: sls-video-processing-with-fargate | |
Type: String | |
Description: "Stack Name (injected by Stackery at deployment time)" | |
DefaultVPCSubnets: | |
Default: "subnet-1adfb316,subnet-e823fab2,subnet-e63a3d83,subnet-82725fbe,subnet-5c3f9f70,subnet-8131aec9" | |
Type: "List<AWS::EC2::Subnet::Id>" | |
Description: "AWS account-specific default VPC subnets (injected by Stackery at deployment time)" | |
Description: "Video processing app with AWS Fargate using Stackery" | |
Resources: | |
functionF9A32476objectStore3B0DC7B6Permission: | |
Type: "AWS::Lambda::Permission" | |
Properties: | |
Action: "lambda:invokeFunction" | |
SourceAccount: { Ref: "AWS::AccountId" } | |
FunctionName: { Ref: functionF9A32476 } | |
Principal: s3.amazonaws.com | |
function17279F64Role: | |
Type: "AWS::IAM::Role" | |
Properties: | |
ManagedPolicyArns: | |
[ | |
"arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", | |
"arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess", | |
] | |
Policies: | |
[ | |
{ | |
PolicyName: function17279F64RolePolicy1, | |
PolicyDocument: | |
{ | |
Statement: | |
[ | |
{ | |
Action: | |
["ecs:RunTask", "ecs:DescribeTasks", "ecs:StopTask"], | |
Resource: | |
[ | |
{ Ref: dockerTask4259BAF6 }, | |
{ | |
"Fn::Sub": "arn:aws:ecs:${AWS::Region}:${AWS::AccountId}:task/*", | |
}, | |
], | |
Effect: Allow, | |
}, | |
], | |
}, | |
}, | |
{ | |
PolicyName: function17279F64RolePolicy2, | |
PolicyDocument: | |
{ | |
Statement: | |
[ | |
{ | |
Action: ["iam:PassRole"], | |
Resource: | |
[ | |
{ "Fn::GetAtt": dockerTask4259BAF6ExecutionRole.Arn }, | |
{ "Fn::GetAtt": dockerTask4259BAF6TaskRole.Arn }, | |
], | |
Effect: Allow, | |
}, | |
], | |
}, | |
}, | |
{ | |
PolicyName: function17279F64RolePolicy3, | |
PolicyDocument: | |
{ | |
Statement: | |
[ | |
{ | |
Action: | |
[ | |
"s3:GetObject", | |
"s3:ListBucket", | |
"s3:GetBucketLocation", | |
"s3:GetObjectVersion", | |
"s3:PutObject", | |
"s3:GetLifecycleConfiguration", | |
"s3:PutLifecycleConfiguration", | |
"s3:DeleteObject", | |
], | |
Resource: | |
[ | |
{ | |
"Fn::Sub": | |
[ | |
"arn:${AWS::Partition}:s3:::${bucketName}", | |
{ bucketName: { Ref: objectStore3B0DC7B6 } }, | |
], | |
}, | |
{ | |
"Fn::Sub": | |
[ | |
"arn:${AWS::Partition}:s3:::${bucketName}/*", | |
{ bucketName: { Ref: objectStore3B0DC7B6 } }, | |
], | |
}, | |
], | |
Effect: Allow, | |
}, | |
], | |
}, | |
}, | |
{ | |
PolicyName: function17279F64RolePolicy4, | |
PolicyDocument: | |
{ | |
Statement: | |
[ | |
{ | |
Action: | |
[ | |
"s3:GetObject", | |
"s3:ListBucket", | |
"s3:GetBucketLocation", | |
"s3:GetObjectVersion", | |
"s3:PutObject", | |
"s3:GetLifecycleConfiguration", | |
"s3:PutLifecycleConfiguration", | |
"s3:DeleteObject", | |
], | |
Resource: | |
[ | |
{ | |
"Fn::Sub": | |
[ | |
"arn:${AWS::Partition}:s3:::${bucketName}", | |
{ bucketName: { Ref: objectStore6A12D98C } }, | |
], | |
}, | |
{ | |
"Fn::Sub": | |
[ | |
"arn:${AWS::Partition}:s3:::${bucketName}/*", | |
{ bucketName: { Ref: objectStore6A12D98C } }, | |
], | |
}, | |
], | |
Effect: Allow, | |
}, | |
], | |
}, | |
}, | |
] | |
AssumeRolePolicyDocument: | |
{ | |
Version: "2012-10-17", | |
Statement: | |
[ | |
{ | |
Action: ["sts:AssumeRole"], | |
Effect: Allow, | |
Principal: { Service: [lambda.amazonaws.com] }, | |
}, | |
], | |
} | |
DeploymentMarker4148: | |
Type: "AWS::CloudFormation::WaitConditionHandle" | |
functionF9A32476Role: | |
Type: "AWS::IAM::Role" | |
Properties: | |
ManagedPolicyArns: | |
[ | |
"arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", | |
"arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess", | |
] | |
AssumeRolePolicyDocument: | |
{ | |
Version: "2012-10-17", | |
Statement: | |
[ | |
{ | |
Action: ["sts:AssumeRole"], | |
Effect: Allow, | |
Principal: { Service: [lambda.amazonaws.com] }, | |
}, | |
], | |
} | |
dockerTask4259BAF6LogGroup: | |
Type: "AWS::Logs::LogGroup" | |
Properties: | |
LogGroupName: | |
{ | |
"Fn::Sub": "/stackery/task/${AWS::StackName}-dockerTask4259BAF6/rupakg-docker-ffmpeg-thumb-latest", | |
} | |
DependsOn: | |
- DeploymentMarker4148 | |
objectStore3B0DC7B6: | |
Type: "AWS::S3::Bucket" | |
Properties: | |
NotificationConfiguration: | |
{ | |
LambdaConfigurations: | |
[ | |
{ | |
Function: { "Fn::GetAtt": [functionF9A32476, Arn] }, | |
Event: "s3:ObjectCreated:*", | |
}, | |
{ | |
Function: { "Fn::GetAtt": [functionF9A32476, Arn] }, | |
Event: "s3:ObjectRemoved:*", | |
}, | |
], | |
} | |
BucketName: { "Fn::Sub": "${AWS::StackName}-objectstore3b0dc7b6" } | |
DependsOn: | |
- DeploymentMarker4148 | |
- functionF9A32476objectStore3B0DC7B6Permission | |
dockerTask4259BAF6ExecutionRole: | |
Type: "AWS::IAM::Role" | |
Properties: | |
RoleName: { "Fn::Sub": "${AWS::StackName}-DockerTaskExecutionRole" } | |
Policies: | |
[ | |
{ | |
PolicyName: DownloadDockerImagesFromECR, | |
PolicyDocument: | |
{ | |
Version: "2012-10-17", | |
Statement: | |
[ | |
{ | |
Action: ["logs:CreateLogStream", "logs:PutLogEvents"], | |
Resource: | |
{ | |
"Fn::Sub": "arn:aws:logs:*:*:log-group:/stackery/task/${AWS::StackName}-*", | |
}, | |
Effect: Allow, | |
}, | |
{ | |
Action: | |
[ | |
"ecr:GetAuthorizationToken", | |
"ecr:BatchCheckLayerAvailability", | |
"ecr:GetDownloadUrlForLayer", | |
"ecr:BatchGetImage", | |
], | |
Resource: "*", | |
Effect: Allow, | |
}, | |
], | |
}, | |
}, | |
] | |
AssumeRolePolicyDocument: | |
{ | |
Version: "2012-10-17", | |
Statement: | |
{ | |
Action: "sts:AssumeRole", | |
Effect: Allow, | |
Principal: { Service: ecs-tasks.amazonaws.com }, | |
}, | |
} | |
DependsOn: | |
- DeploymentMarker4148 | |
functionF9A32476: | |
Type: "AWS::Lambda::Function" | |
Properties: | |
TracingConfig: { Mode: Active } | |
Code: | |
{ | |
S3Bucket: stackery-assetsbucket-48y43qp9vwya, | |
S3Key: deployments/249834123825422/4148/functions/functionF9A32476.zip, | |
} | |
FunctionName: { "Fn::Sub": "${AWS::StackName}-functionF9A32476" } | |
Tags: [{ Value: SAM, Key: "lambda:createdBy" }] | |
MemorySize: 512 | |
Environment: | |
{ | |
Variables: | |
{ | |
STACKERY_ENTRY_POINT: index.handler, | |
STACKERY_NODE: '{"id":"functionF9A32476","name":"triggerOnThumbnailCreationStackery"}', | |
STACKERY_ERROR_OUTPUT: { "Fn::Sub": "[]" }, | |
}, | |
} | |
Handler: __stackery_entry.handler | |
Role: { "Fn::GetAtt": [functionF9A32476Role, Arn] } | |
Timeout: 30 | |
Runtime: nodejs8.10 | |
Description: | |
{ | |
"Fn::Sub": | |
[ | |
"Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName}", | |
{ ResourceName: triggerOnThumbnailCreationStackery }, | |
], | |
} | |
DependsOn: | |
- DeploymentMarker4148 | |
objectStore6A12D98C: | |
Type: "AWS::S3::Bucket" | |
Properties: | |
NotificationConfiguration: | |
{ | |
LambdaConfigurations: | |
[ | |
{ | |
Function: { "Fn::GetAtt": [function17279F64, Arn] }, | |
Event: "s3:ObjectCreated:*", | |
}, | |
{ | |
Function: { "Fn::GetAtt": [function17279F64, Arn] }, | |
Event: "s3:ObjectRemoved:*", | |
}, | |
], | |
} | |
BucketName: { "Fn::Sub": "${AWS::StackName}-objectstore6a12d98c" } | |
DependsOn: | |
- DeploymentMarker4148 | |
- function17279F64objectStore6A12D98CPermission | |
dockerTask4259BAF6: | |
DependsOn: | |
- dockerTask4259BAF6LogGroup | |
- DeploymentMarker4148 | |
Type: "AWS::ECS::TaskDefinition" | |
Properties: | |
ContainerDefinitions: | |
[ | |
{ | |
LogConfiguration: | |
{ | |
LogDriver: awslogs, | |
Options: | |
{ | |
awslogs-region: { Ref: "AWS::Region" }, | |
awslogs-stream-prefix: rupakg-docker-ffmpeg-thumb-latest, | |
awslogs-group: { Ref: dockerTask4259BAF6LogGroup }, | |
}, | |
}, | |
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: { "Fn::GetAtt": objectStore3B0DC7B6.Arn }, | |
}, | |
], | |
Image: "rupakg/docker-ffmpeg-thumb:latest", | |
Name: video-to-thumb-container, | |
}, | |
] | |
NetworkMode: awsvpc | |
RequiresCompatibilities: [FARGATE] | |
ExecutionRoleArn: { "Fn::GetAtt": dockerTask4259BAF6ExecutionRole.Arn } | |
Volumes: [] | |
Memory: 512 | |
TaskRoleArn: { "Fn::GetAtt": dockerTask4259BAF6TaskRole.Arn } | |
Cpu: 256 | |
Metadata: | |
StackeryName: stackery-video-to-thumb-task-def | |
dockerTask4259BAF6TaskRole: | |
Type: "AWS::IAM::Role" | |
Properties: | |
RoleName: { "Fn::Sub": "${AWS::StackName}-DockerTaskTaskRole" } | |
Policies: | |
[ | |
{ | |
PolicyName: StackeryPolicy, | |
PolicyDocument: | |
{ | |
Version: "2012-10-17", | |
Statement: | |
[ | |
{ | |
Action: | |
[ | |
"s3:GetObject", | |
"s3:ListBucket", | |
"s3:GetBucketLocation", | |
"s3:GetObjectVersion", | |
"s3:PutObject", | |
"s3:GetLifecycleConfiguration", | |
"s3:PutLifecycleConfiguration", | |
], | |
Resource: | |
[ | |
{ | |
"Fn::Sub": "arn:${AWS::Partition}:s3:::${objectStore3B0DC7B6}", | |
}, | |
{ | |
"Fn::Sub": "arn:${AWS::Partition}:s3:::${objectStore3B0DC7B6}/*", | |
}, | |
], | |
Effect: Allow, | |
}, | |
], | |
}, | |
}, | |
] | |
AssumeRolePolicyDocument: | |
{ | |
Version: "2012-10-17", | |
Statement: | |
{ | |
Action: "sts:AssumeRole", | |
Effect: Allow, | |
Principal: { Service: ecs-tasks.amazonaws.com }, | |
}, | |
} | |
DependsOn: | |
- DeploymentMarker4148 | |
function17279F64: | |
Type: "AWS::Lambda::Function" | |
Properties: | |
TracingConfig: { Mode: Active } | |
Code: | |
{ | |
S3Bucket: stackery-assetsbucket-48y43qp9vwya, | |
S3Key: deployments/249834123825422/4148/functions/function17279F64.zip, | |
} | |
FunctionName: { "Fn::Sub": "${AWS::StackName}-function17279F64" } | |
Tags: [{ Value: SAM, Key: "lambda:createdBy" }] | |
MemorySize: 512 | |
Environment: | |
{ | |
Variables: | |
{ | |
STACKERY_NODE: '{"id":"function17279F64","name":"triggerOnUploadVideoStackery"}', | |
STACKERY_ENTRY_POINT: index.handler, | |
STACKERY_ERROR_OUTPUT: { "Fn::Sub": "[]" }, | |
DOCKER_TASK_ARN: { Ref: dockerTask4259BAF6 }, | |
BUCKET_ARN_2: { "Fn::GetAtt": objectStore6A12D98C.Arn }, | |
DOCKER_TASK_SUBNETS: | |
{ "Fn::Join": [",", { Ref: DefaultVPCSubnets }] }, | |
BUCKET_NAME: { Ref: objectStore3B0DC7B6 }, | |
BUCKET_ARN: { "Fn::GetAtt": objectStore3B0DC7B6.Arn }, | |
BUCKET_NAME_2: { Ref: objectStore6A12D98C }, | |
}, | |
} | |
Handler: __stackery_entry.handler | |
Role: { "Fn::GetAtt": [function17279F64Role, Arn] } | |
Timeout: 30 | |
Runtime: nodejs8.10 | |
Description: | |
{ | |
"Fn::Sub": | |
[ | |
"Stackery Stack ${StackeryStackTagName} Environment ${StackeryEnvironmentTagName} Function ${ResourceName}", | |
{ ResourceName: triggerOnUploadVideoStackery }, | |
], | |
} | |
DependsOn: | |
- DeploymentMarker4148 | |
function17279F64objectStore6A12D98CPermission: | |
Type: "AWS::Lambda::Permission" | |
Properties: | |
Action: "lambda:invokeFunction" | |
SourceAccount: { Ref: "AWS::AccountId" } | |
FunctionName: { Ref: function17279F64 } | |
Principal: s3.amazonaws.com |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment