Cloud foundry Cloudfoundry VCAP_服务变量未提供给django的容器

Cloud foundry Cloudfoundry VCAP_服务变量未提供给django的容器,cloud-foundry,sap-cloud-platform,Cloud Foundry,Sap Cloud Platform,我有一个停靠的Django应用程序,我想通过cloudfoundry cli实用程序将其部署在SAP云平台上。我添加了两个用户提供的服务,它们有自己的一组凭据。例如,我添加了AWSS3作为用户提供的服务,并为其提供了凭据 现在,这些凭据可以作为环境变量使用 我有.env文件,其中定义了变量,例如AWS\u ACCESS\u KEY。通常我会将字符串值传递给变量,然后由我的应用程序使用。但是,考虑到我已经通过用户提供的服务机制对其进行了配置,并且凭据已经存在,我想知道如何访问这些凭据。在Pytho

我有一个停靠的Django应用程序,我想通过cloudfoundry cli实用程序将其部署在SAP云平台上。我添加了两个用户提供的服务,它们有自己的一组凭据。例如,我添加了AWSS3作为用户提供的服务,并为其提供了凭据

现在,这些凭据可以作为环境变量使用


我有.env文件,其中定义了变量,例如AWS\u ACCESS\u KEY。通常我会将字符串值传递给变量,然后由我的应用程序使用。但是,考虑到我已经通过用户提供的服务机制对其进行了配置,并且凭据已经存在,我想知道如何访问这些凭据。

在Python应用程序中提取服务信息有几种方法

  • 您可以使用。您只需将此库集成到应用程序的启动中即可。这通常提供了最大的灵活性,但有时很难与框架集成,这取决于框架期望如何输入配置

  • 您可以动态地从示例
    .env
    文件生成环境变量或配置文件。这可以用一个简单的方法来完成。如果将
    .profile
    脚本置于应用程序的根目录中,则该脚本将在应用程序之前执行,但在运行时容器中执行。这允许您在最后一刻调整应用程序的配置

    .profile
    脚本只是一个shell脚本,在其中,您可以使用
    jq
    sed
    等工具从
    VCAP\u服务
    环境变量提取信息,并将该信息放在其他地方(可能是其他环境变量或
    .env
    文件)

    因为您正在推送Python应用程序,
    .profile
    也可以执行Python脚本。Python构建包将运行并保证路径上有Python运行时供
    .profile
    脚本使用。因此,您可以执行类似这样的操作,以执行Python脚本

    .profile脚本

    python $HOME/.profile.py
    
    #!/usr/bin/env python3
    print("Hello from python .profile script")
    
    .profile.py脚本(由这个名字组成,你可以叫它任何名字)

    python $HOME/.profile.py
    
    #!/usr/bin/env python3
    print("Hello from python .profile script")
    
    您甚至可以在脚本中导入包含在此脚本中的
    requirements.txt
    文件中的Python库


  • 你看过吗?或者只是在应用程序中加载和解析JSON?或者您正在尝试更新
    .env
    文件中的此信息?您可以添加在应用程序启动之前运行的
    .profile
    脚本。它可以访问VCAP_服务,因此脚本可以获取绑定的服务并相应地填充
    .env
    。我正在尝试更新.env文件。.profile脚本上有文档吗?这解释得更清楚一些。通常这是一个shell脚本,因此您可以使用
    jq
    sed
    提取一些信息并将其放入
    .env
    文件中。您使用的是
    python
    ,因此它也将可用,因此从技术上讲,您也可以将其作为python脚本编写。由你决定。非常感谢丹尼尔。你帮了我大忙。我利用了cfenv图书馆丹尼尔。你真的帮了大忙。另一方面,您是否有机会将CloudFoundry用作SAP云平台的一部分?我没有。我在另一家与CloudFoundry相关产品的公司工作,所以我的重点主要放在这些产品上。但是经常会有重叠,所以我尽力帮助他们。再次感谢。