amazon-web-services - 从 Lambda 在 Amplify 中访问 S3
问题描述
我正在使用 Amplify 构建一个应用程序,其中一个功能会生成 PDF。我想将此 PDF 保存在 S3 中,它也是通过 Amplify 创建的。从前端访问 S3 有据可查,但没有提及从 Lambda 进行访问。在该 Lambda 函数中,我可以毫无问题地访问 DynamoDB,因此配置了 aws-sdk。
我可以手动配置 IAM 角色和存储桶,但是否有使用 Amplify 的正确方法?
解决方案
如果您想在同样由 amplify 创建的 lambda 函数中访问由 amplify 创建的 s3 存储桶,
您可以在 lambda 环境变量中找到您的存储桶名称。
# index.py
import os
def index():
print(os.environ)
这将打印出类似
AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
AWS_SESSION_TOKEN:"Your Token",
STORAGE_{YOUR_STORAGE_NAME_IN_AMPLIFY}_BUCKETNAME: "ACTUAL_BUCKETNAME_CREATED_BY_AMPLIFY",
LAMBDA_TASK_ROOT: "/var/task",
...
获得存储桶名称后,剩下的过程就是使用您的配置设置 boto3 客户端并执行您想要的任务。
推荐阅读
- tensorflow - tf 1.13 clip_by_global_norm 不能用于混合精度浮点数?
- python-3.x - 如何将 .py 和 .ui (pyqt5 gui) 文件转换为 .exe
- javascript - 安装节点 v13 后来自 npm 的警告消息
- swiftui - .presentation 修饰符不适用于警报?收到 VStack 没有成员“演示文稿”的错误
- jquery - 如何在元素之间淡入淡出?
- javascript - 无法在 React 中将函数导入我的组件?
- html - 由于内容安全策略,无法使用 iFrame 加载 URL
- text - 按单词(字符)计数拆分文本文件
- xml - 如何在 Xslt 中使用这一行以及如何对列表进行排序以在使用 xlst 转换为 xhtm 时获得正确通道下的信息
- javascript - 如何更改 Phaser 3 中图像的 hitbox 形状?