angular - 使用 AWS S3 和 CodePipeline 自动化 Angular 7 应用程序部署
问题描述
我在 AWS S3 存储桶上托管了一个 Angular 7 应用程序作为静态网站,现在想在我的 github 存储库更新时自动部署较新版本。
我希望新版本的文件替换 s3 存储桶中以前版本的文件。这就是我要做的事情
我有一个 buildspec 文件
version: 0.2
phases:
install:
commands:
# install dependencies
- echo Installng source NPM dependencies...
- npm install npm@latest -g
- npm install -g @angular/cli
pre_build:
commands:
- echo Prebuild steps
- npm install
build:
commandS:
# build angular app
- echo Build started on `date`
- ng build
post_build:
commands:
# clear S3 bucket
- aws s3 rm s3://${S3_BUCKET} --recursive
- echo S3 bucket cleared
# copy files from dist folder into S3 bucket
- aws s3 cp dist s3://${S3_BUCKET} --recursive
- echo Build completed on `date`
当代码管道运行时,该过程在 post_build 失败,如此处的日志所示
[容器] 2019/04/11 10:33:49 运行命令 aws s3 rm s3://${S3_BUCKET} --recursive /usr/local/lib/python2.7/dist-packages/urllib3/util/ssl_。 py:354: SNIMissingWarning: 已发出 HTTPS 请求,但 TLS 的 SNI(服务器名称指示)扩展在此平台上不可用。这可能会导致服务器提供不正确的 TLS 证书,从而导致验证失败。您可以升级到更新版本的 Python 来解决这个问题。有关更多信息,请参阅https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings SNIMissingWarning 删除失败:s3://trips9ja-admin/3rdpartylicenses.txt 调用 DeleteObject 操作时发生错误(AccessDenied):访问拒绝删除失败:s3://trips9ja-admin/Trips9jaPipeline/SourceArti/FyvYEvb.zip 发生错误(AccessDenied) 调用DeleteObject 操作时:Access Denied 删除失败:s3://trips9ja-admin/assets/bus.png 调用DeleteObject 操作时发生错误(AccessDenied):Access Denied
这就是我卡住的地方。那么我做错了什么,错误是什么意思?
我有一个 S3 存储桶策略来允许像这样的代码构建访问
{
"Sid": "CodeBuildPermision",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::735681810231:role/service-role/codebuild-service-role"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucket name>"
}
解决方案
通过向 S3 存储桶策略添加另一行来解决该问题,"Resource"
该策略允许像这样访问存储桶的所有内容
"Resource": ["arn:aws:s3:::<bucket name>", "arn:aws:s3:::<bucket name>/*"]
推荐阅读
- build - 为 QEMU 构建的 TSAN,找不到 longjmp buf
- c - 如何使用scanf检查输入?
- c++ - Keys在容器中的作用是什么,究竟什么是key?
- python - 在 3d 投影中填充绘图下方的空间
- google-play - Google Play 开发者控制台中缺少广告问题
- powershell - 如何修改 Powershell 命令以更新和设置 DNS SOA 记录 TTL 和序列号?
- vega-lite - vega-lite:如何按周聚合
- java - “资源泄漏:流永远不会关闭”的背景
- django - Django 模型,多值/管理区域
- docker - 在 dockerfile 中设置 ENV 时运行 shell 命令