在将Kinesis流指定为AWS中的主体时应使用什么主体?具体来说,我想在CloudFormation中编写AWS::Lambda::Permission
资源:lambda将由Kinesis流触发。从the docs
这些都不适合我工作:
kinesis.amazonaws.com
kinesisstream.amazonaws.com
kinesisstreams.amazonaws.com
kinesis-stream.amazonaws.com
我还没有找到任何文件,可以将服务映射到主体。我发现this page,它表示Kinesis Analytics的主体是kinesisanalytics.amazonaws.com
。
我看了AWS service namespaces page,但是它没有有关委托人的任何信息。如上所述,流的命名空间似乎只是kinesis
,但对我来说不起作用。
正确的是kinesisanalytics.amazonaws.com
但是让我假设一旦有新记录放入运动学中,您就想触发lambda,那么您所需要的就是:
使用以下假定角色策略创建IAM角色:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow"
}
]
}
创建IAM角色策略“以附加到在步骤1中创建的角色”:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:{aws_region}:{account_id}:*:*",
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": [
"kinesis:GetRecords",
"kinesis:GetShardIterator",
"kinesis:DescribeStream",
"kinesis:ListStreams"
],
"Resource": "arn:aws:kinesis:{aws_region}:{account_id}:stream/{kinesis_stream_name}"
}]
}
将IAM角色从步骤1附加到lambda函数
具有以下属性的lambda事件源映射“添加触发器”:
batch_size = 100起始位置=“最新”启用=真