制作 AWS CodeBuild 工件 public
Make AWS CodeBuild artifacts public
我有一个问题,每次我想使用 AWS CodeDeploy 时,我都必须转到 S3 并手动制作修订文件 public,因为 CodeBuild 创建的工件不是 public .
有没有办法让 CodeBuild 在 S3 中创建一个 public 工件?或者有没有办法使用 CodeDeploy 部署非 public 工件?
我在 post_build 阶段尝试 运行 一些 aws s3api 命令,但它们似乎失败了,退出代码为 255。
您需要更新 S3 存储桶的存储桶策略。
{
"Version": "2012-10-17",
"Id": "Policy1sdhgshjg",
"Statement": [
{
"Sid": "Stmt1asdasdadasd",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket_name/*"
}
]
}
这将使您的存储桶中的所有对象 public.
有关详细信息,您可以阅读 bucket policies 的其他示例。
注意:我假设您在存储桶中关闭了块 public 访问权限
每个代码部署应用程序将多一个部署组。可以为每个部署组分配作为服务的 IAM 角色。
对于这个服务角色,我们可以授予读取 S3 存储桶的权限,这样我们就不必在每次构建时都制作工件。
示例读取权限如下所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*"
],
"Resource": [
"arn:aws:s3:::woohoo-auto-code-deploy/prod-QC-darpan-be/BuildArtif/*",
"arn:aws:s3:::woohoo-auto-code-deploy/prod-QC-darpan-ui/BuildArtif/*"
],
"Effect": "Allow"
}
]
}
我有一个问题,每次我想使用 AWS CodeDeploy 时,我都必须转到 S3 并手动制作修订文件 public,因为 CodeBuild 创建的工件不是 public .
有没有办法让 CodeBuild 在 S3 中创建一个 public 工件?或者有没有办法使用 CodeDeploy 部署非 public 工件?
我在 post_build 阶段尝试 运行 一些 aws s3api 命令,但它们似乎失败了,退出代码为 255。
您需要更新 S3 存储桶的存储桶策略。
{
"Version": "2012-10-17",
"Id": "Policy1sdhgshjg",
"Statement": [
{
"Sid": "Stmt1asdasdadasd",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket_name/*"
}
]
}
有关详细信息,您可以阅读 bucket policies 的其他示例。
注意:我假设您在存储桶中关闭了块 public 访问权限
每个代码部署应用程序将多一个部署组。可以为每个部署组分配作为服务的 IAM 角色。
对于这个服务角色,我们可以授予读取 S3 存储桶的权限,这样我们就不必在每次构建时都制作工件。
示例读取权限如下所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject*",
"s3:GetBucket*"
],
"Resource": [
"arn:aws:s3:::woohoo-auto-code-deploy/prod-QC-darpan-be/BuildArtif/*",
"arn:aws:s3:::woohoo-auto-code-deploy/prod-QC-darpan-ui/BuildArtif/*"
],
"Effect": "Allow"
}
]
}