private async Task CreatePostAsync(Guid id, CreatePostRequest createPostRequest)
        {
            using (_logger.BeginScope($"Creating post for day {createPostRequest.DayNumber}"))
            {
                var sw = Stopwatch.StartNew();

                var nextPostIdTask = _postsRepository.GetNextPostIdAsync();
                var timeStamp      = (int)(DateTime.UtcNow - DateTime.UnixEpoch).TotalSeconds;

                _logger.LogInformation($"timestamp for post = {timeStamp}");

                var photoAttachments = new List <PhotoAttachment>();
                var photoTasks       = new List <Task>();

                _logger.LogInformation($"# of photos to process = {createPostRequest.Photos.Count}");
                for (var photoIndex = 0; photoIndex < createPostRequest.Photos.Count; photoIndex++)
                {
                    var originalKey = $"posts/{timeStamp}/pa-original-{photoIndex}.jpg";
                    var mobileKey   = $"posts/{timeStamp}/pa-mobile-{photoIndex}.jpg";
                    var previewKey  = $"posts/{timeStamp}/pa-preview-{photoIndex}.jpg";

                    var photoAttachment    = new PhotoAttachment();
                    var photoBytes         = createPostRequest.Photos[photoIndex];
                    var originalResizeTask = ResizeAndUploadPhotoAsync(photoBytes, 2560, originalKey).ContinueWith(task =>
                    {
                        photoAttachment.Width  = task.Result.width;
                        photoAttachment.Height = task.Result.height;
                        photoAttachment.Src    = task.Result.location;
                    });
                    var mobileResizeTask = ResizeAndUploadPhotoAsync(photoBytes, 1280, mobileKey).ContinueWith(task =>
                    {
                        photoAttachment.MobileSrc = task.Result.location;
                    });
                    var previewResizeTask = ResizeAndUploadPhotoAsync(photoBytes, 640, previewKey).ContinueWith(task =>
                    {
                        photoAttachment.PreviewSrc = task.Result.location;
                    });
                    var index     = photoIndex;
                    var batchTask = Task.WhenAll(originalResizeTask, mobileResizeTask, previewResizeTask).ContinueWith(t =>
                    {
                        _eventsMap[id].AddEvent($"Photo attachment #{index + 1} was processed.");
                    });
                    photoTasks.Add(batchTask);
                    photoAttachments.Add(photoAttachment);
                }

                await Task.WhenAll(photoTasks.Append(nextPostIdTask));

                var post = new Post(nextPostIdTask.Result, createPostRequest.Text, createPostRequest.Hashtag, timeStamp, createPostRequest.DayNumber, createPostRequest.VideoUrl, photoAttachments);
                await _postsRepository.PutItemAsync(post);

                _logger.LogInformation($"post created within {(int) sw.ElapsedMilliseconds} ms");
                _eventsMap[id].Complete();
            }
        }