【问题标题】:Necessary AWS S3 permissions using AWS Lambda with S3 URL使用带有 S3 URL 的 AWS Lambda 的必要 AWS S3 权限
【发布时间】:2021-06-17 17:02:32
【问题描述】:

我必须将我的 AWS Lambda 连接到 AWS S3 存储桶才能获得自定义泡菜对象。我能够在this AWS 资源之后做到这一点,而且效果很好。

但是,我需要明确地将 AWS S3 存储桶 URL 放入 AWS lambda 以便将大型 Python 包 xgboost 导入到 temp 目录中AWS Lambda 容器(如 thisthis)。我能够完成这项工作,但要做到这一点,我需要授予我的 S3 存储桶公共访问权限。

我的问题是是否可以在 AWS Lambda 中明确声明 AWS S3 URL 而无需允许公开访问 S3 存储桶?

【问题讨论】:

  • 如何将 lambda 封装到容器 New for AWS Lambda – Container Image Support 中。 here is an example
  • 您似乎成功地从 S3 获取了一个对象(pickle 对象),但没有成功获取另一个对象(xgboost 包)。您尝试获取这些对象的方式有什么不同?
  • @jarmod 不同之处在于可访问对象是pickle 文件,我使用pickle.loadboto3 加载它,它是getObject 方法。无法访问的文件实际上是我想通过显式 URL 访问的 linux xgboost .zip 库。

标签: python amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

我在使用 boto3 定义预签名 URL 时找到了答案(更多详情 here):

import boto3

s3_client = boto3.client('s3')

BUCKET = 'my-bucket'
OBJECT = 'xgboost.zip'

url = s3_client.generate_presigned_url(
    'get_object',
    Params={'Bucket': BUCKET, 'Key': OBJECT},
    ExpiresIn=300)

使用它,我可以阻止我的 S3 存储桶的所有公共访问。

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 2018-10-20
    • 2018-07-12
    • 2016-08-08
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多