ECRBuildAndPublish 构建操作参考
此构建操作允许您在源发生更改时自动构建和推送新映像。此操作基于指定的 Docker 文件位置构建并推送映像。此构建操作与 CodePipeline 中的 Amazon ECR 源操作不同,后者会在您的 Amazon ECR 源存储库发生更改时触发管道。有关该操作的信息,请参阅Amazon ECR 源操作参考。
这不是会触发管道的源操作。此操作会构建映像并将其推送到您的 Amazon ECR 映像存储库。
您必须事先创建 Amazon ECR 存储库并将 Dockerfile 添加到源代码存储库中,例如 GitHub,然后才能将操作添加到管道。
重要
此操作使用 CodePipeline 托管的 CodeBuild 计算在构建环境中运行命令。运行 Commands 操作将在 Amazon CodeBuild 中产生单独的费用。
注意
此操作仅适用于 V2 类型管道。
操作类型
-
类别:
Build -
拥有者:
AWS -
提供方:
ECRBuildAndPublish -
版本:
1
配置参数
- ECRRepositoryName
-
必需:是
向其中推送映像的 Amazon ECR 存储库的名称。
- DockerFilePath
-
必需:否
用于构建镜像的 Docker 文件的位置。如果该文件位置不在根级别,您可以选择提供备用 Docker 文件位置。
注意
如果未指定
DockerFilePath的值,则该值默认为源存储库根级别。 - ImageTags
-
必需:否
为映像使用的标签。您可以逗号分隔的字符串列表形式输入多个标签。
注意
如果未指定
ImageTags的值,则该值默认为latest。 - RegistryType
-
必需:否
指定存储库是公共还是私有。有效值为
private | public。注意
如果未指定
RegistryType的值,则该值默认为private。
输入构件
-
构件数:
1 -
描述:源操作生成的构件,其中包含构建映像所需的 Dockerfile。
输出构件
-
构件数:
0
输出变量
配置后,此操作会生成变量,该变量可由管道中下游操作的操作配置引用。此操作生成的变量可视为输出变量,即使操作没有命名空间也是如此。您可以使用命名空间配置操作,以使这些变量可用于下游操作的配置。
有关更多信息,请参阅 变量参考。
- ECRImageDigestId
-
映像清单的
sha256摘要。 - ECRRepositoryName
-
向其中推送映像的 Amazon ECR 存储库的名称。
服务角色权限:ECRBuildAndPublish 操作
如需 ECRBuildAndPublish 操作支持,请将以下内容添加到策略语句中:
{ "Statement": [ { "Sid": "ECRRepositoryAllResourcePolicy", "Effect": "Allow", "Action": [ "ecr:DescribeRepositories", "ecr:GetAuthorizationToken", "ecr-public:DescribeRepositories", "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload", "ecr:PutImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability" ], "Resource": "PrivateECR_Resource_ARN" }, { "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken", "ecr-public:DescribeRepositories", "ecr-public:InitiateLayerUpload", "ecr-public:UploadLayerPart", "ecr-public:CompleteLayerUpload", "ecr-public:PutImage", "ecr-public:BatchCheckLayerAvailability", "sts:GetServiceBearerToken" ], "Resource": "PublicECR_Resource_ARN" }, { "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" } ] }
此外,如果尚未添加用于 Commands 操作的以下权限,请向您的服务角色添加这些权限以查看 CloudWatch 日志。
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "resource_ARN" },
注意
在服务角色策略声明中使用基于资源的权限,将权限范围缩小到管道资源级别。
有关此操作的更多信息,请参阅ECRBuildAndPublish 构建操作参考。
操作声明
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
教程:使用 CodePipeline 构建 Docker 映像并将其推送到 Amazon ECR(V2 类型):本教程提供了示例 Dockerfile 和创建管道的说明,该管道用于在源存储库发生更改时将您的映像推送到 ECR,然后部署到 Amazon ECS。