【问题标题】:how to include python code as a part of cloud formation template in aws?如何在aws中将python代码作为云形成模板的一部分包含在内?
【发布时间】:2020-07-02 05:55:45
【问题描述】:

我有一些 python 代码/项目来做一些 ETL 工作,处理一些 XML/json 文档。下面的代码示例是我项目中的 connection.py 文件之一。我几乎没有其他文件可以读取和处理 XML 文档。我想将项目/代码作为 lambda 包含在云形成模板中。我该怎么做?

文件-connection.py

import json
from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth

my_eshost = 'search-sampledomain-bqfy4dd5xuljut33l6jdz7gkqi.us-east-1.es.amazonaws.com'

aws_auth = AWS4Auth( '*******','******', 'us-east-1', 'es')

es = Elasticsearch(hosts = [{'host': my_eshost, 'port': 443}],
    http_auth=aws_auth, use_ssl=True, verify_certs=True, connection_class=RequestsHttpConnection)

print(json.dumps(es.info()))

【问题讨论】:

  • 您希望在何处/如何使用此代码?它是 AWS Lambda 函数,还是通过 EC2 用户数据脚本执行?
  • @JohnRotenstein - 是的,我希望它是一个 lambda 函数。不过,我确实还有更多文件,以及我在上面发布的连接代码。

标签: python amazon-web-services amazon-cloudformation


【解决方案1】:

我认为以下内容应该会有所帮助:

除其他外,这可以使用您的本地文件,例如connection.py 用于 lambda 函数体。当您打包堆栈以上传到 CloudFormation 时,AWS CLI 会将您的文件自动上传到 S3 并将其用作函数的源:

如果您指定文件,该命令会直接将其上传到 S3 存储桶。上传工件后,该命令会返回您的模板副本,将本地工件的引用替换为命令上传工件的 S3 位置。然后,您可以使用返回的模板来创建或更新堆栈。

【讨论】:

  • 谢谢。我正在创建模板并在 aws cloudformation 中创建堆栈。这看起来像,我必须从我的本地机器上执行此操作,我是否指定了本地文件夹的路径,我的源代码所在的位置。我想知道是否可以先将压缩代码上传到 s3 存储桶,然后在模板中引用它的路径,我在 aws 控制台中编写。
  • @ozil 是的,您可以上传到 s3,并在 lambda 的 CFN 模板中为 zip 指定存储桶和密钥。
  • @ozil 没问题。很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 2021-01-14
  • 2020-08-06
  • 2019-10-20
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
相关资源
最近更新 更多