As part of the tools provide by AWS for DevOps, Codepipeline enables a continuous delivery in the AWS cloud. It can be used to connect between continuous integration tools up to the deployment of your application. It handles all the step related to app lifecycle, i.e. test, build, and deploy. It first grapes your source code from a repository (on commits for instance this) by connecting to the corresponding repository, potentially launch a build/test step then deploy the artifacts to the production environment. It has a good level of security as an IAM role can be affected to the whole process which can guarantee the isolation of the whole process. Furthermore, it has an intuitive wizard that can help you quickly setup a CD environment for your application.
It's tied to AWS and cannot be used locally or on the infrastructure of any other cloud provider. It also still lacks a lot of integrations, for instance it supports a limited set of code source repositories, for the time being the application code can only be hosted on S3 or on github. Furthermore, the targets deploy can only be one of these options: Beanstak or CodeDeploy which both are Amazon services. Similarly, the build providers are limited to Jenkins and anther SaaS-based CI.
Unfortunately, for the time being CodePipeline can only be used for orchestrating the continuous delivery of simple applications on AWS.
I've participated in the investigation of a continuous delivery platform for a client. At the end we have chosen another CD solution, as the client has some specific tools used on the build process which was not possible to easily integrated with CodePipeline.