Amazon web services VPC中的Lambda无法访问DigitalOcean S3资源

Amazon web services VPC中的Lambda无法访问DigitalOcean S3资源,amazon-web-services,aws-lambda,amazon-vpc,digital-ocean-spaces,Amazon Web Services,Aws Lambda,Amazon Vpc,Digital Ocean Spaces,我有一个部署在默认VPC中的Lambda,VPC有一个S3服务的开放端点,Lambda有一个IAM角色,可以广泛地打开所有S3操作 iamRoleStatements: - Effect: "Allow" Action: - "rds:*" - "ec2:CreateNetworkInterface" Resource: "*" - Effect: Allow

我有一个部署在默认VPC中的Lambda,VPC有一个S3服务的开放端点,Lambda有一个IAM角色,可以广泛地打开所有S3操作

iamRoleStatements:
  - Effect: "Allow"
    Action:
      - "rds:*"
      - "ec2:CreateNetworkInterface"
    Resource: "*"
  - Effect: Allow
    Action:
      - s3:*
    Resource: "*"
我通过以下方式访问NodeJS中的S3 SDK:

const {
  DIGITAL_OCEAN_SPACES_ENDPOINT,
  DIGITAL_OCEAN_SPACES_ACCESS,
  DIGITAL_OCEAN_SPACES_REGION,
  DIGITAL_OCEAN_SPACES_SECRET,
  DIGITAL_OCEAN_SPACES_BUCKET_NAME,
} = process.env;

const spacesEndpoint = new Endpoint(DIGITAL_OCEAN_SPACES_ENDPOINT);
const S3Client = new S3({
  accessKeyId: DIGITAL_OCEAN_SPACES_ACCESS,
  endpoint: spacesEndpoint,
  region: DIGITAL_OCEAN_SPACES_REGION,
  secretAccessKey: DIGITAL_OCEAN_SPACES_SECRET,
});

Lambda超时-它无法连接到DigitalOcean S3存储桶。我还需要添加什么才能访问?

VPC中的Lambda功能既没有internet访问,也没有公共IP。发件人:

将函数连接到公共子网不会为其提供internet访问或公共IP地址

要纠正此问题,您应该将您的函数“放置”在一个专用子网中(非公共子网),并与正确配置的路由表一起使用以提供访问


由于您已将默认VPC用于所有公用子网,因此需要创建一个新的专用子网,因为使用公用子网将不起作用。然后您需要正确设置NAT网关/设备。或者,不要将您的功能放在专有网络中。

您将AWS Lambda功能与专有网络相关联有什么特殊原因吗?