为了账号安全,请及时绑定邮箱和手机立即绑定

在 Elastic Beanstalk 部署期间从 AWS Systems Manager

在 Elastic Beanstalk 部署期间从 AWS Systems Manager

四季花海 2022-09-06 21:14:24
我有一个数据库连接字符串存储在 AWS Systems Manager Parameter Store 中,我想将其传递给 Elastic Beanstalk 实例的环境变量。我不想将其提交到源代码中,也不必依赖部署程序在部署上设置值或通过Web控制台手动执行此操作。我已经尝试过动态引用(带和不带反向刻度),它们在CloudFormation堆栈中工作,但不适用于Elastic Beanstalk配置。{{resolve:ssm:DATABASE_CONNECTION_STRING:1}}我试过使用喜欢container_commandsexport DATABASE_CONNECTION_STRING=`aws ssm get-parameter --name DATABASE_CONNECTION_STRING --region eu-west-1 --query Parameter.Value --output text但是 Elastic Beanstalk 实例没有正确的权限,我不确定如何设置它们。我尝试使用和从S3文件的内容创建文件,但收到错误。files:source:理想情况下,动态参考可以工作,例如.ebextensions/env.config =>OptionSettings:  aws:elasticbeanstalk:application:environment:    DATABASE_CONNECTION_STRING: {{resolve:ssm:ANNOTATOR_DATABASE_CONNECTION_STRING:1}}
查看完整描述

3 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我能够通过创建包含以下内容的文件来使其工作:.ebextensions/options.config

option_settings:
  aws:elasticbeanstalk:application:environment:
    ENCRYPT_CERT: '{{resolve:ssm:SOA_ENCRYPT_CERT:1}}'
    ENCRYPT_KEY: '{{resolve:ssm:SOA_ENCRYPT_KEY:1}}'


查看完整回答
反对 回复 2022-09-06
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

您需要在配置文件中使用单引号,在浏览器上可以粘贴它而不带引号。

DATABASE_CONNECTION_STRING: '{{resolve:ssm:ANNOTATOR_DATABASE_CONNECTION_STRING:1}}'

如果更新参数,请将末尾的 更改为其所在版本。因此,如果您在创建参数键后对其进行了一次更新,它将是 .12


查看完整回答
反对 回复 2022-09-06
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我使用了一个配置,将文件从S3下载到其中,然后Python应用程序使用.不理想,但它现在有效。files/tmp/app.envload_dotenv('/tmp/app.env')


这是:.ebextensions/env.config


Resources:

  AWSEBAutoScalingGroup:

    Metadata:

      AWS::CloudFormation::Authentication:

        S3Auth:

          type: "s3"

          buckets: ["S3_BUCKET_NAME"]

          roleName: 

            "Fn::GetOptionSetting": 

              Namespace: "aws:autoscaling:launchconfiguration"

              OptionName: "IamInstanceProfile"

              DefaultValue: "aws-elasticbeanstalk-ec2-role"

files:

  "/tmp/app.env":  

    mode: "444"

    owner: wsgi

    group: wsgi

    authentication: "S3Auth"

    source: https://URL_TO_S3_BUCKET/app.env

确保将 和 更改为您的设置。S3_BUCKET_NAMEURL_TO_S3_BUCKET


然后在Python中使用;


if os.path.exists('/tmp/app.env'):

    load_dotenv('/tmp/app.env')

else:

    load_dotenv('.env')


查看完整回答
反对 回复 2022-09-06
  • 3 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信