微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 lambda 函数和 Cloudformation 访问 S3 端点

如何解决如何使用 lambda 函数和 Cloudformation 访问 S3 端点

快速概览,我正在构建一个 cloudformation 模板,其中包含:

专有网络

IGW

公共子网

私有子网

NATGateway

路由表

S3 存储桶

数据库

lambda 函数

其中一个 lambda 函数是从 API 中提取数据并将其发送到 S3 存储桶。我的问题是如何授予此 lambda 函数执行其工作的权限,而不授予它访问 IAM 中的 S3 的权限。但是,改为编写一个仅允许该 lambda 函数访问 S3 的存储桶策略?

  S3:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: "some-random-bucket"

  S3BucketPolicy:
    Type: AWS::S3::BucketPolicy
    DependsOn: S3
    Properties:
      Bucket: !Ref S3
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          Action:
            - 's3:PutObject'
          Effect: Allow
          Resource: "arn:aws:s3:::some-random-bucket/*"
          Principal: 'arn:aws:lambda:REGION:ACCOUNT-NUMBER:function:lambda_function_1'

我创建的 S3 Endpoint 如下:

  S3Endpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal: "*"
            Action: "s3:PutObject"
            Resource:
              Fn::ImportValue: !Sub S3Id
      ServiceName: !Sub 'com.amazonaws.${AWS::Region}.s3'
      VpcId: !Ref VPC

我已尝试更改 S3BucketPolicy 和 S3Endpoint 中的主体。但是,我似乎无法获得发送到 S3 的正确权限。

我也将 S3BucketPolicy 中的主体更改为“*”

这允许我的 lambda 函数写入 S3。但是,我只想限制对 lambda 函数的访问

所以 '*' 最终在这里对我不起作用。

如果我能对此有所了解,将不胜感激!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。