无服务器框架 1.0:将 Cloudformation 转换为适用于 AWS Firehose 的 Yaml

Posted

技术标签:

【中文标题】无服务器框架 1.0:将 Cloudformation 转换为适用于 AWS Firehose 的 Yaml【英文标题】:Serverless framework 1.0 : Converting Cloudformation to Yaml for AWS Firehose 【发布时间】:2017-01-04 19:22:45 【问题描述】:

有人知道在 Serverless v1.0 中将 cloudformation 转换为 yaml 的权威指南吗?

我可以做很多事情,但我完全不知道如何设置 Firehose 并允许 lambda 写入它。

我认为资源部分看起来像这样:

resources:
Resources:
  FirehoseBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: my-firehose-bucket
  FirehoseDeliveryStream:
    Type: AWS::KinesisFirehose::DeliveryStream
    Properties:
      DeliveryStreamName: "FirehoseDeliveryStream"
      S3DestinationConfiguration:
        BucketARN:
          Fn::Join:
          - ''
          - - 'arn:aws:s3:::'
            - Ref: FirehoseBucket
        BufferingHints:
          IntervalInSeconds: 60
          SizeInMBs: 5
        CompressionFormat: GZIP
        Prefix: $prefix
        RoleARN: "arn:aws:iam::$account-number:role/$project-$env-IamRoleLambda"

但我不知道如何将 Cloudformation 转换为 IAM 部分,如下所述:http://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html

非常感谢任何关于 CF->Yaml 转换的指针、示例或指南!

【问题讨论】:

作为短期措施,可以引用 cloudformation json 文件:resources: Resources: $ref: ./cloudformation-resources.json 此文件应包含通常位于“资源”对象下的所有资源,在单个集合中大括号。 这个答案对你有帮助吗? 【参考方案1】:

资源中未指定 Lambda 执行角色(即 Lambda 函数在执行时承担的角色)的 IAM 语句。

因此,如果您需要从 Lambda 函数内部执行某些操作的权限,您需要授予代入角色权限。

这在提供程序部分中指定。因此,在您的情况下(我只是从您的链接中复制了一些内容,您必须将其更改为您需要的内容)它将是这样的(假设 nodejs 运行时):

provider:
    name: aws
    runtime: nodejs4.3
    iamRoleStatements:
        - Effect: Allow
            Action:
                - firehose:DeleteDeliveryStream
                - firehose:PutRecord
                - firehose:PutRecordBatch
                - firehose:UpdateDestination
            Resource:
                - arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name
        - Effect: Allow
            Action:
                - logs:PutLogEvents
            Resource:
                - arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name

奖励:对于以云形成 json 格式指定的一般资源,请使用从 json 到 yaml 的在线转换器。以这种方式开始会容易得多。

【讨论】:

以上是关于无服务器框架 1.0:将 Cloudformation 转换为适用于 AWS Firehose 的 Yaml的主要内容,如果未能解决你的问题,请参考以下文章

无服务器框架将 Lambda 添加到现有 VPC 和子网

将现有 Cognito UserPool 导入到无服务器框架堆栈

如何将使用Sharp库的无服务器框架应用程序部署到AWS?

使用maven打包无框架的java项目

如何在无服务器框架中包含静态文件?

在无服务器框架中禁用 SLS_DEBUG=*