首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在无服务器框架中创建一个对Lambda函数可用的RDS实例

在无服务器框架中创建一个对Lambda函数可用的RDS实例
EN

Stack Overflow用户
提问于 2021-11-08 05:11:08
回答 1查看 558关注 0票数 1

我有一个通过Serverless Framework部署的AWS应用程序。它需要一个数据库,我在serverless.yaml. needs的CloudFormation部分中包含了这个数据库。

由于对VPC、子网和安全组的了解最少,我的目标是:

  1. 使用MySQL的serverless deploy创建/更新一个RDS实例。
  2. Lambda应用程序中的函数应该能够访问数据库。
  3. 数据库应该可以通过密码公开访问,这样我就可以从我的计算机上连接MySQL工具,比如Sequel。

到目前为止我尝试过的:

我已经尝试了下面的无服务器配置。它创建了数据库,但没有实现#2和#3。

我还尝试将provider.vpc.securityGroupIdsprovider.vpc.subnetIds在serverless.yaml中设置为RDS实例使用的相同类型,但没有效果。

serverless.yaml

(有关条文)

代码语言:javascript
复制
service: myapp

provider:
    name: aws
    runtime: provided.al2
    lambdaHashingVersion: 20201221

functions:
    console:
        handler: bin/console
        timeout: 120 # in seconds
        layers:
            - ${bref:layer.php-80} # PHP
            - ${bref:layer.console} # The "console" layer

resources:
    Resources:
        # RDS instance
        ProductDatabase:
            Type: AWS::RDS::DBInstance
            Properties:
                AllocatedStorage: 5
                DBInstanceClass: db.t3.micro
                DBName: myapp
                Engine: mysql
                EngineVersion: 8.0.25
                MasterUsername: myappuser
                MasterUserPassword: redacted
                PubliclyAccessible: true
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 01:35:04

有一篇很好的文章这里解释了您需要的步骤。

为了让Lambda能够访问AWS资源,它需要在同一个VPC中,并且它的执行角色需要通过IAM角色/组拥有适当的权限。

您还希望避免向世界开放您的RDS,因此您应该在VPC中创建所有这些。您可以将lambda函数附加到VPC,然后只允许通过安全组访问RDS到VPC子网。

这将使您获得所需的步骤1和步骤2。

在同一个安全组中,您可以允许访问计算机的外部IP地址以获得步骤3。您可以通过CLI配置此地址,因此如果没有静态IP,则只需添加一秒钟即可。下面是PowerShell示例:

代码语言:javascript
复制
Grant-EC2SecurityGroupIngress -GroupId "sg-xxxxxxxxxx" -IpPermission @(123.123.123.123/32)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69878886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档