AWS CloudFormation
ユーザーガイド (API バージョン 2010-05-15)

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 をリポジトリ名として使用します。詳細については、Name タイプを参照してください。

注記

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

必須: いいえ

タイプ: 文字列

最小: 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

戻り値

参照番号

このリソースの論理 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

以下の資料も参照してください。