AWS::ECR::Repository - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::ECR::Repository

AWS::ECR::Repository 资源指定 Amazon Elastic Container Registry (Amazon ECR) 存储库,用户可在其中推送和拉取 Docker 映像。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南 中的 Amazon ECR 存储库

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::ECR::Repository", "Properties" : { "LifecyclePolicy" : LifecyclePolicy, "RepositoryName" : String, "RepositoryPolicyText" : Json, "Tags" : [ Tag, ... ] } }

YAML

Type: AWS::ECR::Repository Properties: LifecyclePolicy: LifecyclePolicy RepositoryName: String RepositoryPolicyText: Json Tags: - Tag

属性

LifecyclePolicy

创建或更新指定存储库的生命周期策略。有关更多信息,请参阅生命周期策略模板

必需:否

类型LifecyclePolicy

Update requires: No interruption

RepositoryName

要用于存储库的名称。可以单独指定存储库名称(例如 nginx-web-app),也可以在其前面加上命名空间来将存储库分组到类别中(例如 project-a/nginx-web-app)。如果不指定名称,则 AWS CloudFormation 会生成一个唯一的物理 ID 并将该 ID 用于存储库名称。有关更多信息,请参阅名称类型

注意

如果指定一个名称,您将无法执行需要替换该资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

必需:否

类型:字符串

最低2

最高256

模式(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*

Update requires: Replacement

RepositoryPolicyText

要应用于存储库的 JSON 存储库策略文本。有关更多信息,请参阅 Amazon Elastic Container Registry 用户指南 中的 Amazon ECR 存储库策略

必需:否

类型:Json

最低0

最高10240

Update requires: No interruption

Tags

要应用于此资源的键值对的数组。

必需:否

类型Tag 的列表

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回资源名称,例如 test-repository

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

返回指定 AWS::ECR::Repository 资源的 Amazon 资源名称 (ARN)。例如:arn:aws:ecr:eu-west-1:123456789012:repository/test-repository

示例

指定存储库

下面的示例指定一个名为 test-repository 的存储库。它的策略允许用户 BobAlice 推和拉映像。请注意,IAM 用户需要实际存在,否则堆栈的创建将失败。

JSON

"MyRepository": { "Type": "AWS::ECR::Repository", "Properties": { "RepositoryName" : "test-repository", "RepositoryPolicyText" : { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPushPull", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/Bob", "arn:aws:iam::123456789012:user/Alice" ] }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability", "ecr:PutImage", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload" ] } ] } } }

YAML

MyRepository: Type: AWS::ECR::Repository Properties: RepositoryName: "test-repository" RepositoryPolicyText: Version: "2012-10-17" Statement: - Sid: AllowPushPull Effect: Allow Principal: AWS: - "arn:aws:iam::123456789012:user/Bob" - "arn:aws:iam::123456789012:user/Alice" Action: - "ecr:GetDownloadUrlForLayer" - "ecr:BatchGetImage" - "ecr:BatchCheckLayerAvailability" - "ecr:PutImage" - "ecr:InitiateLayerUpload" - "ecr:UploadLayerPart" - "ecr:CompleteLayerUpload"

指定具有生命周期策略的存储库

以下示例创建一个具有生命周期策略的存储库。

JSON

{ "Parameters": { "lifecyclePolicyText": { "Type": "String" }, "repositoryName": { "Type": "String" }, "registryId": { "Type": "String" } }, "Resources": { "MyRepository": { "Type": "AWS::ECR::Repository", "Properties": { "LifecyclePolicy": { "LifecyclePolicyText": { "Ref": "lifecyclePolicyText" }, "RegistryId": { "Ref": "registryId" } }, "RepositoryName": { "Ref": "repositoryName" } } } }, "Outputs": { "Arn": { "Value": { "Fn::GetAtt": [ "MyRepository", "Arn" ] } } } }

YAML

Parameters: lifecyclePolicyText: Type: String repositoryName: Type: String registryId: Type: String Resources: MyRepository: Type: AWS::ECR::Repository Properties: LifecyclePolicy: LifecyclePolicyText: !Ref lifecyclePolicyText RegistryId: !Ref registryId RepositoryName: !Ref repositoryName Outputs: Arn: Value: !GetAtt MyRepository.Arn

另请参阅