AWS::CodeArtifact::Repository
The AWS::CodeArtifact::Repository
resource creates an AWS CodeArtifact repository.
CodeArtifact
repositories contain a set of package versions.
For more information about repositories, see the
Repository concepts information
in the
CodeArtifact User Guide. For more information about the CreateRepository
API, see
CreateRepository
in the
CodeArtifact API Reference.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::CodeArtifact::Repository", "Properties" : { "Description" :
String
, "DomainName" :String
, "DomainOwner" :String
, "ExternalConnections" :[ String, ... ]
, "PermissionsPolicyDocument" :Json
, "RepositoryName" :String
, "Tags" :[ Tag, ... ]
, "Upstreams" :[ String, ... ]
} }
YAML
Type: AWS::CodeArtifact::Repository Properties: Description:
String
DomainName:String
DomainOwner:String
ExternalConnections:- String
PermissionsPolicyDocument:Json
RepositoryName:String
Tags:- Tag
Upstreams:- String
Properties
Description
-
A text description of the repository.
Required: No
Type: String
Maximum:
1000
Update requires: No interruption
DomainName
-
The name of the domain that contains the repository.
Required: Yes
Type: String
Pattern:
^([a-z][a-z0-9\-]{0,48}[a-z0-9])$
Minimum:
2
Maximum:
50
Update requires: Replacement
DomainOwner
-
The 12-digit account number of the AWS account that owns the domain that contains the repository. It does not include dashes or spaces.
Required: No
Type: String
Pattern:
[0-9]{12}
Update requires: Replacement
ExternalConnections
-
An array of external connections associated with the repository. For more information, see Supported external connection repositories in the CodeArtifact user guide.
Required: No
Type: Array of String
Update requires: No interruption
PermissionsPolicyDocument
-
The document that defines the resource policy that is set on a repository.
Required: No
Type: Json
Minimum:
2
Maximum:
5120
Update requires: No interruption
RepositoryName
-
The name of an upstream repository.
Required: Yes
Type: String
Pattern:
^([A-Za-z0-9][A-Za-z0-9._\-]{1,99})$
Minimum:
2
Maximum:
100
Update requires: Replacement
-
A list of tags to be applied to the repository.
Required: No
Type: Array of Tag
Update requires: No interruption
Upstreams
-
A list of upstream repositories to associate with the repository. The order of the upstream repositories in the list determines their priority order when AWS CodeArtifact looks for a requested package version. For more information, see Working with upstream repositories.
Required: No
Type: Array of String
Update requires: No interruption
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the resource arn.
Fn::GetAtt
The Fn::GetAtt
intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.
For more information about using the Fn::GetAtt
intrinsic function, see Fn::GetAtt
.
Arn
-
When you pass the logical ID of this resource, the function returns the Amazon Resource Name (ARN) of the repository.
DomainName
-
When you pass the logical ID of this resource, the function returns the domain name that contains the repository.
DomainOwner
-
When you pass the logical ID of this resource, the function returns the 12-digit account number of the AWS account that owns the domain that contains the repository.
Name
-
When you pass the logical ID of this resource, the function returns the name of the repository.
Examples
The following examples can help you create CodeArtifact repositories using CloudFormation.
Create a domain and repository
The following example creates a CodeArtifact domain named my-domain and a CodeArtifact repository named my-repo inside it.
YAML
Resources: MyCodeArtifactDomain: Type: 'AWS::CodeArtifact::Domain' Properties: DomainName: "my-domain" MyCodeArtifactRepository: Type: 'AWS::CodeArtifact::Repository' Properties: RepositoryName: "my-repo" DomainName: !GetAtt MyCodeArtifactDomain.Name
JSON
{ "Resources": { "MyCodeArtifactDomain": { "Type": "AWS::CodeArtifact::Domain", "Properties": { "DomainName": "my-domain" } }, "MyCodeArtifactRepository": { "Type": "AWS::CodeArtifact::Repository", "Properties": { "RepositoryName": "my-repo", "DomainName": { "Fn::GetAtt": [ "MyCodeArtifactDomain", "Name" ] } } } } }
Create a repository with an upstream repository and external connection
The following example creates a CodeArtifact domain named my-domain to store repositories. It also creates two CodeArtifact repositories: my-repo and my-upstream-repo within the domain. my-repo has my-upstream-repo configured as an upstream repository, and my-upstream-repo has an external connection to the public repository, npmjs.
YAML
Resources: MyCodeArtifactDomain: Type: 'AWS::CodeArtifact::Domain' Properties: DomainName: "my-domain" MyCodeArtifactUpstreamRepository: Type: 'AWS::CodeArtifact::Repository' Properties: RepositoryName: "my-upstream-repo" DomainName: !GetAtt MyCodeArtifactDomain.Name ExternalConnections: - public:npmjs MyCodeArtifactRepository: Type: 'AWS::CodeArtifact::Repository' Properties: RepositoryName: "my-repo" DomainName: !GetAtt MyCodeArtifactDomain.Name Upstreams: - !GetAtt MyCodeArtifactUpstreamRepository.Name
JSON
{ "Resources": { "MyCodeArtifactDomain": { "Type": "AWS::CodeArtifact::Domain", "Properties": { "DomainName": "my-domain" } }, "MyCodeArtifactUpstreamRepository": { "Type": "AWS::CodeArtifact::Repository", "Properties": { "RepositoryName": "my-upstream-repo", "DomainName": { "Fn::GetAtt": [ "MyCodeArtifactDomain", "Name" ] }, "ExternalConnections": [ "public:npmjs" ] } }, "MyCodeArtifactRepository": { "Type": "AWS::CodeArtifact::Repository", "Properties": { "RepositoryName": "my-repo", "DomainName": { "Fn::GetAtt": [ "MyCodeArtifactDomain", "Name" ] }, "Upstreams": [ { "Fn::GetAtt": [ "MyCodeArtifactUpstreamRepository", "Name" ] } ] } } } }
Create a domain and repository with tags
The following example creates a CodeArtifact domain named my-domain and a CodeArtifact
repository named my-repo inside it with two tags. One tag consists of a key
named keyname1
and a value of value1
. The other
consists of a key named keyname2
and a value of value2
.
YAML
Resources: MyCodeArtifactDomain: Type: 'AWS::CodeArtifact::Domain' Properties: DomainName: "my-domain" MyCodeArtifactRepository: Type: 'AWS::CodeArtifact::Repository' Properties: RepositoryName: "my-repo" DomainName: !GetAtt MyCodeArtifactDomain.Name Tags: - Key: "keyname1" Value: "value1" - Key: "keyname2" Value: "value2"
JSON
{ "Resources": { "MyCodeArtifactDomain": { "Type": "AWS::CodeArtifact::Domain", "Properties": { "DomainName": "my-domain" } }, "MyCodeArtifactRepository": { "Type": "AWS::CodeArtifact::Repository", "Properties": { "RepositoryName": "my-repo", "DomainName": { "Fn::GetAtt": [ "MyCodeArtifactDomain", "Name" ] }, "Tags" : [ { "Key" : "keyname1", "Value" : "value1" }, { "Key" : "keyname2", "Value" : "value2" } ] } } } }