【问题标题】:Create VPC endpoint for S3 bucket lambda access using AWS CDK使用 AWS CDK 为 S3 存储桶 lambda 访问创建 VPC 终端节点
【发布时间】:2022-08-05 04:46:58
【问题描述】:

我正在使用 Python 风格的 AWS CDK 构建一个系统。

我有一个带有 EFS 的 lambda 函数。要使用EFS,我需要将 lambda 函数放入 VPC。问题是,我还希望这个 lambda 函数从特定的 S3 存储桶(在同一区域)中检索文件。我在进行检索时遇到超时错误,经过一些研究,我似乎需要NAT Gateway(太贵)或 VPC 端点来允许访问。

如何在 CDK 中构建 VPC endpoint 以允许我的 lambda 函数与我的 S3 存储桶通信?

    标签: amazon-web-services amazon-s3 aws-cdk


    【解决方案1】:

    编辑:@gshpychka 下面的评论是正确的 - 只有 vpc 定义中的 gateway_endpoint 是必需的。

    这是我在遵循this guide. 中的想法后提出的似乎可行的方法

    您需要同时创建S3 access pointVPC Endpoint

    您在创建 VPC 时创建 VPC Endpoint。这允许从 VPC 访问 S3 存储桶。您可以稍后添加策略来限制此访问。

    self.vpc = ec2.Vpc(
        scope=self,
        id="VPC",
        vpc_name="my_VPC",
        gateway_endpoints={
            "s3": ec2.GatewayVpcEndpointOptions(
                service=ec2.GatewayVpcEndpointAwsService.S3
            )
        },
        nat_gateways=0,
    )
    

    您稍后会在创建 S3 存储桶后创建一个 S3 access point。这允许访问存储桶。

    self.bucket_access = s3.CfnAccessPoint(
        scope=self,
        id="s3_access",
        bucket=self.my_bucket.bucket_name,
        name="bucket-access-point",
        vpc_configuration=s3.CfnAccessPoint.VpcConfigurationProperty(
            vpc_id=self.vpc.vpc_id
        ),
    )
    

    【讨论】:

    • 你真的不需要接入点,一个网关就足够了。
    【解决方案2】:
    export class YourStack extends cdk.Stack {
      constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
    
        const vpc = ec2.Vpc.fromLookup(this, 'vpc', { isDefault: true });
    
        const s3BucketAcessPoint = vpc.addGatewayEndpoint('s3Endpoint', {
          service: ec2.GatewayVpcEndpointAwsService.S3,
        });
    
        s3BucketAcessPoint.addToPolicy(
          new iam.PolicyStatement({
            principals: [new iam.AnyPrincipal()],
            actions: ['s3:*'],
            resources: ['*'],
          }),
        );
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 2019-05-01
      • 2021-02-22
      • 1970-01-01
      • 2018-02-07
      • 2021-07-22
      • 2020-07-16
      • 2020-06-05
      • 1970-01-01
      相关资源
      最近更新 更多