我正在尝试使用来自私有S3存储桶的一些ssh密钥在Elastic Beanstalk中配置我的EC2实例.这是我的.ebextensions/.config的片段:
files:
"/root/.ssh/id_rsa" :
mode: "000400"
ownder: root
group: root
source: https://s3-us-west-2.amazonaws.com/<bucket>/<app>_id_rsa
Run Code Online (Sandbox Code Playgroud)
不幸的是,我收到了S3的403响应.有没有办法使用安全组授予对EC2实例的访问权限?我无法单独授予每个实例访问权限,因为在缩放之前我不会知道它们的IP.是否有其他方法可以授予此Elastic Beanstalk应用程序访问权限?我无法想出一个好的S3 Bucket Policy ...
我的Node.JS项目包含对github上托管的私有NPM repos的引用.这在本地工作正常,但我很难在Elastic Beanstalk上工作.
dependencies: {
...
"express": "^4.12.4",
"jsonwebtoken": "^5.0.5",
"my-private-module": "git@github.com:<my-user>/<my-repo>.git#<my-version>",
...
}
Run Code Online (Sandbox Code Playgroud)
-
我需要的是能够在我的Elastic Beanstalk实例上为git设置一个有效的SSH配置,而不必在源代码控制中存储密钥等.
显然,EB实例没有所需的SSH密钥来访问我的私有github存储库.如果我使用username:password@github.com内联的HTTPS样式git URL ,它可以正常工作.它也可以使用github提供的oauth令牌方法(实际上是用户:pass).但我不希望任何凭据被签入源代码控制,所以我试图从github克隆到我的EB实例上通过SSH工作.
我已经尝试了一百万种方法,包括npm preinstall根据这篇博客文章的脚本,它曾经工作到npm2,其中一个更改使预安装在构建树之后运行,并且修复该问题的PR仍然未决.
我尝试过一个.ebextensions命令配置试图调用git config将insteadofgit@github.com放在一个HTTPS URL中,OAUTH令牌来自一个环境变量(由于env变量在启动时此时未设置,因此本身很棘手)循环,缺少$ HOME使git配置混乱).
我还尝试了各种不同的方法来.ebextensions在我的EB实例上设置SSH,包括来自上述博客文章评论的这个解决方案.这基本上就是我现在被困住的地方.
.ebextensions files配置,可以将我的S3存储桶中的这两个文件复制/tmp/.ssh/到其中commands .ebextensions配置,其中列出了/tmp/.ssh并显示文件是从S3成功下载的:/tmp/.ssh/config包含:
Host github.com
IdentityFile /tmp/.ssh/deploy_key
IdentitiesOnly yes
UserKnownHostsFile=/dev/null
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
/tmp/.ssh/deploy_key包含我的私钥,该私钥经过验证可在本地运行.
但是,git仍然会抛出一个错误:
npm ERR! Command failed: git clone --template=/tmp/.npm/_git-remotes/_templates --mirror ssh://git@github.com/[.....] …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个部署在Elastic Beanstalk上的node.js应用程序.它已经开始引用作为私有存储库托管在github上的私有模块.本地如果我在我的package.json的依赖部分中添加对它的引用,如下所示它可以正常工作.我可以运行nom安装,它下载模块和应用程序工作没有问题.
"ModuleName": "git+https://TOKEN:x-oauth-basic@github.com/OWNER/REPO_NAME.git"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试部署到Beanstalk时,它失败并出现以下错误:
2014-04-04 00:14:09,188 [DEBUG] (1630 MainThread) [commandWrapper.py-60] [root commandWrapper main] Command result: {'status': 'FAILURE', 'results': [{'status': 'FAILURE', 'config_sets': ['Infra-EmbeddedPreBuild', 'Hook-PreAppDeploy', 'Infra-EmbeddedPostBuild'], 'returncode': 1, 'events': [{'msg': 'Failed to run npm install. Snapshot logs for more details.', 'timestamp': 1396570449, 'severity': 'ERROR'}, {'msg': 'Failed to run npm install. npm http GET https://registry.npmjs.org/express\nnpm ERR! not found: git\nnpm ERR! \nnpm ERR! Failed using git.\nnpm ERR! This is most likely not a problem with npm itself.\nnpm ERR! Please check if you have …Run Code Online (Sandbox Code Playgroud) deployment amazon-web-services node.js amazon-elastic-beanstalk
假设我们有一个名为 的自定义 Python 包,位于shared_package私有存储库中,托管在 github 或 bitbucket 上。我们的私有存储库配置为通过 SSH 进行只读访问,如此处的 github和此处的 bitbucket所示。
我们的另一个项目(恰当地命名为 )dependent_project依赖于此shared_package,并且需要部署到 AWS Elastic Beanstalk (EB)。我们的环境使用最新的“Python on Amazon Linux 2”平台,并用作pipenv包管理器。
shared_package由于各种原因,对我们来说,直接从在线 git 存储库安装是最方便的,如此处针对 pipelinenv和此处针对 pip 的描述。我们Pipfile的dependent_project看起来像这样:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
shared_package = {git = "ssh://bitbucket.org/our_username/shared_package.git", editable = true, ref = "2021.0"}
[dev-packages]
awsebcli = "*"
[requires]
python_version = "3.8"
Run Code Online (Sandbox Code Playgroud)
这在我们的本地开发系统上运行良好,但在部署 …