我有预置的 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 服务器是本地部署,角色将如何工作?
我正在使用 Jenkins 在 AWS ECR 中推送 docker 镜像。
在推送图像时,我将标签提供为 $Build_Number.So 在 ECR 存储库中,我有带有 1、2、3、4 等标签的图像。
但是当我尝试使用 Jenkins 作业中的以下命令从 EC2 中提取图像时
docker pull 944XXX.dkr.ecr.us-east-1.amazonaws.com/repository1:latest
Run Code Online (Sandbox Code Playgroud)
我收到错误,因为没有带有最新标签的图像。
在这里我想拉取最新的图像(带有标签 4)。我不能在这里硬编码标签号,因为 docker pull 命令将自动从 Jenkins 作业运行。那么我可以通过什么方式拉取最新的图像?
在我的账户 A 中,我有 S3 存储桶,其中对象是加密的默认 AWS 托管密钥 aws/s3。
我想从帐户 B lambda 读取这些对象。但与帐户 A 中的对象一样,对象是使用 AWS 托管密钥 aws/s3 加密的,我无法在此处修改 KMS 密钥策略。
我尝试在帐户 A 中创建一个角色,该角色拥有所有 KMS 和 S3 权限,并信任帐户 B 中的角色。然后从帐户 B 我在 A 中承担此角色。但仍然得到
Access denied error in GetObject
我可以在这里做什么来从帐户 A 读取对象。请指导。
账户 A 中的角色
statement
{
Action: kms:*
Resource : "*"
Effect: allow
}
{
Action: S3:*
Resource :
arn:aws:s3:::my-s3
arn:aws:s3:::my-s3/*
Effect: allow
}
Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services amazon-iam aws-lambda amazon-kms
aws-ecr ×2
docker ×2
jenkins ×2
amazon-ec2 ×1
amazon-iam ×1
amazon-kms ×1
amazon-s3 ×1
aws-lambda ×1