An Association in UML is a relationship between two classes. Links represents the relationship between objects. Association defines how classes communicate each other, and link represents a state of the system where an object sends some message to another.
Aggregation is a special cases of association. Aggregation usually denotes hierarchical aspects of a relationship and can have either one-to-many or many-to-many relationships. Aggregations can be either Shared Aggregation ( Represented by a hollow diamond in UML) or Composite Aggregation. In Composite Aggregation the aggregated object's life cycle is controlled by the aggregating object. in other words, aggregated object doesn't exists out side of the parent object. Composition is just another name for the composite aggregation!