【问题标题】:Access S3 in Amplify from Lambda从 Lambda 在 Amplify 中访问 S3
【发布时间】:2019-05-05 08:12:33
【问题描述】:
我正在使用 Amplify 构建一个应用程序,其中一个功能会生成 PDF。我想将此 PDF 保存在 S3 中,它也是通过 Amplify 创建的。从前端访问 S3 有据可查,但没有提到从 Lambda 进行访问。在那个 Lambda 函数中,我可以毫无问题地访问 DynamoDB,因此配置了 aws-sdk。
我可以手动配置 IAM 角色和存储桶,但是否有使用 Amplify 的正确方法?
【问题讨论】:
标签:
amazon-web-services
amazon-s3
aws-lambda
aws-amplify
【解决方案1】:
如果您想在同样由 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 客户端并执行您想要的任务。