首页 > 解决方案 > 从 Lambda 在 Amplify 中访问 S3

问题描述

我正在使用 Amplify 构建一个应用程序,其中一个功能会生成 PDF。我想将此 PDF 保存在 S3 中,它也是通过 Amplify 创建的。从前端访问 S3 有据可查,但没有提及从 Lambda 进行访问。在该 Lambda 函数中,我可以毫无问题地访问 DynamoDB,因此配置了 aws-sdk。

我可以手动配置 IAM 角色和存储桶,但是否有使用 Amplify 的正确方法?

标签: amazon-web-servicesamazon-s3aws-lambdaaws-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 客户端并执行您想要的任务。


推荐阅读