AWS*_*nar 4 amazon-web-services jenkins docker aws-ecr
我有预置的 Jenkins 服务器。我有创建 Docker 镜像的 Jenkins 文件,现在我想将该镜像推送到 AWS ECR。我是否必须创建一个特殊的 IAM 用户并提供其访问和秘密访问密钥?或者什么是最好的方法来做到这一点。
我在互联网上找到了下面
withAWS(role:'Jenkins', roleAccount:'XXXX216610',duration: 900, roleSessionName: 'jenkinssession')
sh ' eval \$(aws ecr get-login --no-include-email --region us-east-2) '
Run Code Online (Sandbox Code Playgroud)
但是由于我的 jenkins 服务器是本地部署,角色将如何工作?
您现在可以使用https://plugins.jenkins.io/amazon-ecr/中的 Jenkins \xe2\x80\x98amazon-ecr\xe2\x80\x99 插件,而不是 eval进行 ECR 部署。
\npipeline {\n environment {\n registry = \'1111111111111.dkr.ecr.eu-central-1.amazonaws.com/myRepo\'\n registryCredential = \'ID_OF_MY_AWS_JENKINS_CREDENTIAL\'\n dockerImage = \'\'\n }\n agent any\n stages {\n stage(\'Building image\') {\n steps{\n script {\n dockerImage = docker.build registry + ":$BUILD_NUMBER"\n }\n }\n }\n stage(\'Deploy image\') {\n steps{\n script{\n docker.withRegistry("https://" + registry, "ecr:eu-central-1:" + registryCredential) {\n dockerImage.push()\n }\n }\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
我是否必须创建一个特殊的 IAM 用户并提供其访问和秘密访问密钥?或者什么是最好的方法来做到这一点。
如果您在 AWS 中运行 Jenkins 并且您使用密钥和访问密钥,则您违反了最佳实践。您永远不应在 AWS VPC 内使用访问密钥和秘密密钥。这些旨在从 AWS 账户外部与 AWS 交互。
您应该创建一个具有特定角色的IAM 角色,并且该角色仅允许 Jenkins 将映像推送到 ECR。
就您当前的命令而言,eval \$(aws ecr get-login --no-include-email --region us-east-2)您将始终需要此令牌来将图像推/拉到 ECR,此令牌有一些到期时间,您应该在下面阅读有关此方法的信息。但 IAM 角色似乎没问题。
您也可以探索Amazon+ECR-plugin
关于
Amazon ECR 插件实现了一个 Docker 令牌生成器,将 Amazon 凭证转换为(主要)所有 Docker 相关插件使用的 Jenkins API。感谢这位制作人,您可以为 Jenkins 中的各种 Docker 操作选择您现有的已注册 Amazon 凭证,例如使用 CloudBees Docker 构建和发布插件:
| 归档时间: |
|
| 查看次数: |
11787 次 |
| 最近记录: |