无服务器框架 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的主要内容,如果未能解决你的问题,请参考以下文章