放大构建失败,"Request failed 401 Unauthorized"



我正在构建一个amplify react应用程序,并试图将其连接到我的CodeArtifact存储库中的私有npm包。

在构建文件amplify.yml中,我添加了

preBuild:
commands:
- aws codeartifact login --tool npm --repository myrepo --domain mydomain --namespace mynamespace --domain-owner myid
- yarn install

并为amplify服务角色指定了以下策略:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codeartifact:GetAuthorizationToken",
"codeartifact:GetRepositoryEndpoint",
"codeartifact:ReadFromRepository"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:GetServiceBearerToken",
"Resource": "*",
"Condition": {
"StringEquals": {
"sts:AWSServiceName": "codeartifact.amazonaws.com"
}
}
}
]
}

此设置适用于CodeBuild构建Lambda函数,但在Amplify中,我得到

Successfully configured npm to use AWS CodeArtifact repository

在login命令和

之后error An unexpected error occurred: "<some-package-url>: Request failed "401 Unauthorized"".

安装依赖项时。

我在amplify build中调试了环境,没有发现任何AWS访问密钥id或secret,但也不知道为什么。

Ok,我通过删除yarn.lock并将其添加到.gitignore来解决我的问题。

问题是,yarn在yarn.lock中缓存了解决的包地址。这个地址在我的CodeArtifact存储库中,因为我是在我的开发机器上安装依赖项时登录的。由于默认情况下yarn.lock不在.gitignore中,我只是将其推入构建中。当yarn在build中安装依赖项时,它使用缓存的地址,这些地址无法再访问。

相关内容

  • 没有找到相关文章

最新更新