您好我使用以下配置创建了一个codepipeline项目:
所有过程都可以正常运行,直到它尝试部署为止,由于某种原因,我在部署期间遇到以下错误:
权限不足无法使用Amazon S3访问工件 对象密钥'FailedScanSubscriber / MyAppBuild / Wmu5kFy'位于 亚马逊S3神器桶'codepipeline-us-west-2-913731893217'。该 提供的角色没有足够的权限。
在构建阶段,它甚至可以在ECS存储库中创建新的docker镜像。
我尝试了一切,改变了IAM角色和策略,添加了对S3的完全访问权限,我甚至将S3存储桶设置为公共,没有任何效果。我没有选择,如果有人可以帮助我那将是美好的,我对AWS的经验很差,所以任何帮助都表示赞赏。
答案 0 :(得分:10)
我能够找到解决方案。真正的问题是,当部署提供程序设置为Amazon ECS时,我们需要生成一个输出工件,指示任务定义的名称和图像uri,例如:
#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QTimer>
#include <QVBoxLayout>
void notify (int intTime=1000)
{
QDialog notify;
QVBoxLayout *lay = new QVBoxLayout(¬ify);
//notify.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
notify.setWindowFlag(Qt::FramelessWindowHint);
QLabel *lbl = new QLabel;
lay->addWidget(lbl);
lbl->setText("This is a test This is a test This is a test This is a test This is a test This is a test This is a test");
QApplication::processEvents();
QTimer::singleShot(intTime, ¬ify, SLOT(close()));
notify.exec();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
notify(5000);
exit(0);
// return a.exec();
}
答案 1 :(得分:2)
当AWS CodeDeploy无法从AWS CodeBuild中找到构建工件时,就会发生这种情况。如果您进入S3存储桶并检查路径,您实际上会看到工件对象不存在!
即使错误显示了权限问题。这可能是由于缺少工件对象而发生的。
解决方案::在artifacts
中正确配置buildspec.yml
部分,并配置AWS Codepipeline阶段以正确指定输入和输出工件名称。
artifacts:
files:
- '**/*'
base-directory: base_dir
name: build-artifact-name
discard-paths: no
答案 2 :(得分:0)
对我来说,问题是我的 CodeBuild 步骤使用默认的 AWS Managed S3 密钥加密工件。
我的部署步骤使用跨账户角色,因此无法检索工件。在我将 Codebuild 加密密钥更改为我的 CMK 之后,我的部署步骤就成功了。