3

有谁知道在 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"

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

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

4

1 回答 1

0

资源中未指定 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 的在线转换器。以这种方式开始要容易得多。

于 2016-09-01T11:50:57.920 回答