AWS Lambda可以读取但不能写入RDS。这是因为Lambda函数默认以只读模式执行,并且没有直接的访问RDS的权限。但是,你可以通过使用IAM角色和Lambda代理来解决这个问题。
以下是一个示例,演示如何使用Lambda代理来读取RDS并写入S3:
首先,创建一个Lambda函数,并将其与一个具有S3写入权限的IAM角色关联。确保将Lambda函数配置为使用代理集成。
import boto3
def lambda_handler(event, context):
# 从事件中获取要读取的数据
data = event['data']
# 通过RDS读取数据
rds_client = boto3.client('rds')
response = rds_client.select_query("SELECT * FROM my_table WHERE data = {}".format(data))
# 将数据写入S3
s3_client = boto3.client('s3')
s3_client.put_object(Body=response['data'], Bucket='my_bucket', Key='output.txt')
return {
'statusCode': 200,
'body': 'Data written to S3'
}
然后,创建一个API网关,并将其与Lambda函数进行集成。确保将集成配置为使用代理集成。
最后,测试API网关,传递要查询的数据。Lambda函数将从RDS读取数据,并将结果写入S3桶中。
请注意,此示例仅演示了如何在Lambda函数中使用代理集成来实现对RDS的只读访问,并将结果写入S3。实际应用中,你可能需要根据自己的需求进行适当的调整和配置。