node.js - AWS Beanstalk - 在部署时,从 S3 存储桶复制带有 env 变量的文件?
问题描述
当我部署新版本时,我试图将文件从 S3 存储桶复制到 Beanstalk 上的 NodeJS 应用程序。
到目前为止我所做的:
- 创建了一个 S3 存储桶并上传了文件。
- 创建了允许 Beanstalk 实例 (aws-beanstalk-ec2-role) 读取存储桶文件的 IAM 策略。
- 设置存储桶策略以允许 aws-beanstalk-ec2-role 访问文件。
- 在 .ebextensions/app.config 的我的应用程序中创建了一个配置文件:
Resources: AWSEBAutoScalingGroup: Metadata: AWS::CloudFormation::Authentication: S3Auth: type: "s3" buckets: ["bucket-name"] roleName: aws-elasticbeanstalk-ec2-role files: "/tmp/deployment/application/file_needed.json" : mode: "000644" owner: root group: root authentication: "S3Auth" source: https://[bucket-name].s3.[region].amazonaws.com/origin_file.json
应用程序部署没有错误,但文件 file_needed.json 没有被复制?
更新:尝试不同的文件夹目标 (/tmp) 后,我发现文件已被复制。我所知道的是,Beanstalk 首先将文件提取到/tmp/deployment/application/,然后将它们移动到/var/app/current。如何将文件复制到应用程序的根目录?
解决方案
原因可能是区分大小写的问题。在 AWS::CloudFormation::Authentication 中,类型设置为“s3”而不是“S3”。
还可以尝试从存储桶 URL 中删除“区域”:
source: https://bucket-name.s3.amazonaws.com/origin_file.json
推荐阅读
- c++ - 如何获取顺序线程 ID
- python - com.univocity.parsers.common.TextParsingException:解析输入的长度(1000001)超过最大字符数
- python - Python:似乎无法解码文本文件
- javascript - 为什么 svg 图片的字体系列会发生变化?
- postgresql - Postgres Sharding:在主节点上创建分区的影响?
- elixir - Phoenix框架如何使用参数链接到控制器
- python - 无法从 Dockerfile 为烧瓶 python 应用程序构建?
- java - 在 JUnit 5 中将测试摘要打印到控制台
- parallel-processing - 如何在与 GNU-parallel 并行的循环中并行化 csh
- python - 是否有任何工具或算法可以将 3D 点云转换为 2.5D 图像?