我正在使用Elastic Beanstalk部署Python Flask应用程序.我有一个配置文件/.ebextensions/01.config,其中我设置了一些环境变量 - 其中一些应该是秘密的.
该文件看起来像这样:
packages:
yum:
gcc: []
git: []
postgresql93-devel: []
option_settings:
"aws:elasticbeanstalk:application:environment":
SECRET_KEY: "sensitive"
MAIL_USERNAME: "sensitive"
MAIL_PASSWORD: "sensitive"
SQLALCHEMY_DATABASE_URI: "sensitive"
"aws:elasticbeanstalk:container:python:staticfiles":
"/static/": "app/static/"
Run Code Online (Sandbox Code Playgroud)
保持某些价值观秘密的最佳做法是什么?目前该.ebextensions文件夹受源代码管理,我喜欢这个,因为它与所有人共享,但同时我不想将敏感值保留在源代码管理下.
有没有办法在部署(例如eb deploy -config ...)时通过EB CLI工具指定一些环境变量?或者AWS部署工具如何涵盖此用例?
这个问题让我疯狂.我试图从同一目录中的文件导入一个类.PyCharm给了我"未解决的参考"错误.MyClass定义于file.py.

我发现了这些问题:
我有以下项目结构:

我已将src标记为源根...
我设置了"将源根添加到PYTHONPATH":
我试过File - > Invalidate Caches/Restart ..(我甚至重新启动了计算机).
如果我尝试运行它,我在控制台中收到以下错误: ImportError: cannot import name 'MyClass'
解释器是Ubuntu x64 14.04上的Python 3.4上的virtualenv.
如果我安装并导入任何第三方软件包,它们都可以正常工作.
如果我echo $PYTHONPATH在终端尝试它什么都不返回(与...相同env | grep PYTHONPATH.当我尝试这些时,我有适当的virtualenv活动.
有线索吗?
Kubernetes版本:1.4.5
我有一个非常简单的服务type: NodePort.它只返回一些文本/info.我使用默认的GKE入口控制器(L7 Google负载均衡器)和TLS.如果我使用以下入口,一切都按预期工作:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: global-ingress
namespace: global
annotations:
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- secretName: tls-secret
backend:
serviceName: gate-front
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
curl -k https://130.211.39.140/info
POD: gate-front-1871107570-ue07p
IP: 10.0.2.26
REQ: /info
Run Code Online (Sandbox Code Playgroud)
$ kubectl describe ing
Name: global-ingress
Namespace: global
Address: 130.211.39.140
Default backend: gate-front:80 (10.0.2.25:8080,10.0.2.26:8080)
TLS:
tls-secret terminates
Rules:
Host Path Backends
---- ---- --------
* * gate-front:80 (10.0.2.25:8080,10.0.2.26:8080)
Annotations:
backends: {"k8s-be-31966--f3f0bf21d171a625":"HEALTHY"}
https-forwarding-rule: k8s-fws-global-global-ingress--f3f0bf21d171a625
https-target-proxy: k8s-tps-global-global-ingress--f3f0bf21d171a625
url-map: k8s-um-global-global-ingress--f3f0bf21d171a625
Run Code Online (Sandbox Code Playgroud)
但是,如果我引入规则并省略默认后端,则所有请求都会返回default …
我在DockerHub上有一个私有存储库,我试图用ECS部署它.我总是得到以下错误:
Unable to decode provided docker credentials module="ecs credentials" type="dockercfg"
Run Code Online (Sandbox Code Playgroud)
或者如果我尝试使用类型的docker:
Unable to decode provided docker credentials module="ecs credentials" type="docker"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了ECS开发者论坛上提到的所有可能性.
我试过了:
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"auth":"<token>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/":{"username":"<username>","password":"<password>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)
而且(因为https://godoc.org/github.com/aws/amazon-ecs-agent/agent/engine/dockerauth上的文档):
ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA='{"https://index.docker.io/v1/<username>":{"username":"<username>","password":"<password>","email":"<email>"}}'
Run Code Online (Sandbox Code Playgroud)
我也试过没有围绕JSON的''和'""相同的效果.我总是得到同样的错误.
我应该添加我从S3容器获取ecs.config工作正常.我还手动重新输入文件,以防下载文件时出现一些可疑的格式(虽然我不知道这是怎么回事,因为S3文件是一个字节流).
如果我通过SSH连接到实例并执行以下操作:
docker login --username=<username> --password=<password> --email=<email>
Run Code Online (Sandbox Code Playgroud)
然后我可以成功地拉动图像: docker pull A/B:latest
但是,即使我登录后(因此docker生成〜/ .docker/config.json文件),我仍然从ECS得到相同的错误.
我应该提到改变ecs.config文件的所有操作都按如下方式完成:
sudo stop ecs sudo start ecs 重复...
它变得非常令人沮丧.自从编写文档以来,它应该如何工作或者它有何变化?
任何帮助,将不胜感激.
编辑
我还尝试在/etc/ecs/ecs.config.json中的JSON配置文件中设置docker auth:
{
"EngineAuthType": "docker",
"EngineAuthData": {
"https://index.docker.io/v1/": {
"username": "<me>",
"password": "<password>",
"email": "<email>"
}
}
}
Run Code Online (Sandbox Code Playgroud)
此处描述了JSON配置: …
amazon-web-services amazon-ecs docker dockerhub docker-registry
是否可以定义functools.lru_cache一个项目被驱逐时的回调?在回调中还应该存在缓存的值。
如果没有,也许有人知道一个支持驱逐和回调的轻量级类似字典的缓存?
我有一个 docker 映像,当我运行它时,我需要将主机 IP 地址作为环境变量传递。所以我需要这样的东西:
docker run --rm -it -e HOST_IP=<?????> -p 8000:8000 image
Run Code Online (Sandbox Code Playgroud)
我在 OS X 上使用 Docker。基本上这个镜像正在运行一个我想要连接到本地 PostgreSQL 服务器的服务。该服务从环境变量中读取服务器主机 IP。
如何获取宿主机的IP供docker使用?
如果我使用本地计算机地址 192.168.99.1 (来自ifconfig),psycopg2 会抱怨:
psycopg2.OperationalError: FATAL: no pg_hba.conf entry for host "192.168.99.100", user "postgres", database "database", SSL off
Run Code Online (Sandbox Code Playgroud)
错误中提到的地址192.168.99.100是我的docker-machine的IP。
我怎样才能获得正确的IP?
我已经使用保存地址的记录设置了Amazon CloudSearch域。我想在地址字段上进行模糊文本搜索。
说我有一条记录,其地址如下:
1600 Amphitheatre Parkway, Mountain View, CA 94043.
Run Code Online (Sandbox Code Playgroud)
如果我搜索,'Amphitheatre Parkway, Muntain View'~5没有结果。我基本上删除了“山”中的“ o”,但找不到任何结果。
如果我搜索Muntain~5它,它将找到它,但是如果我搜索Miunntain~5它,则找不到任何东西。
我应该补充一点,我创建了一个自由文本分析计划,没有词干,停用词或同义词。这就是用于类型的地址字段的内容text。
我应该如何设置CloudSearch以便进行此类查询?
docker ×2
python ×2
amazon-ecs ×1
boot2docker ×1
dockerhub ×1
functools ×1
kubernetes ×1
macos ×1
postgresql ×1
pycharm ×1
python-3.x ×1